vim使用命令总结

vim在linux中是必须使用的一个的神器,编辑文件的利器,掌握一些vim指令还是挺有必要的,vim的使用教程在网上一搜就一大把,但那都是别人写的,即使把它们下载下来放进电脑里还是会记不住,所以自己实践过一遍指令再作出一个属于自己的笔记才会更加深刻。我目前记录的就只有这些指令,后期继续更新……

定位到故障行:15行

vim test.py +15

打开文件直接定位到最底端:

vim test.py +

文件顶部:gg
文件末尾:G
移动到15行: 15gg、15G (:15 回车 也可以快速到达15行)

向上翻页

ctrl b (back)

向下翻页

ctrl f (forword)

移动到当前屏幕的顶部:H ( head)
移动到当前屏幕的中间:M (middle)
移动到当前屏幕的底部:L (low)

段首:{
段尾:}

行首:shift+6 ^
行尾:shift+4 $

括号匹配: %

标记

m+(a~z) 例如ma
回到标记
‘a

可视模式:v
可视行模式:V
可视块模式:ctrl v

删除全部内容

gg 文件顶部
V 可视行模式
G 文件末尾
d 删除

撤销

u

ctrl + r 恢复撤销

删除命令

dw 从光标位置删除到单词末尾
d0 从光标位置删除到一行的起始位置
d} 从光标位置删除到段落结尾
ndd 从光标位置向下连续删除n行
d代码行G 从光标所在行删除到指定代码行之间的所有代码
d’a 从光标所在行删除到标记a之间的所有代码

复制、粘帖

y 复制
yy 复制行 Y也是复制行
nyy 复制n行
p 粘帖 ( 小p是在行后粘帖,大P是在行前粘帖)
10p 粘帖10次

替换

r 从光标当前开始替换
R 替换模式

缩进

向右增加缩进>>
<< 向左减少缩进
. 重复上次命令

查找

/str
n 向下查找
N 向上查找

*向下查找

#向上查找

取消查找高亮

命令模式下,输入:nohlsearch 也可以:set nohlsearch; 当然,可以简写,noh或者set noh。

全局替换

:%s///g
:%s/hello/world/g 将全部的hello替换成world
可视区域替换
:s///g
确认替换
:%s///gc

利用可视块注释多行代码

ctrl v 进入可视块模式
j 向下选择要注释的行
I 输入大写I进入编辑模式,不能使用小写i

输入#号

esc 退出可视块模式

vim删除空行和注释

来源: http://jpuyy.com/2015/06/vim-delete-lines-using-regexp.html

删除空行

:g/^$/d

删除空行以及只有空格的行

:g/^\s*$/d

删除以 # 开头或 空格# 或 tab#开头的行

:g/^\s*#/d

对于 php.ini 配置文件,注释为 ; 开头

:g/^\s*;/d

使用正则表达式删除行

如果当前行包含 bbs ,则删除当前行

:/bbs/d

删除从第二行到包含 bbs 的区间行

:2,/bbs/d

删除从包含 bbs 的行到最后一行区间的行

:/bbs/,$d

删除所有包含 bbs 的行

:g/bbs/d

删除匹配 bbs 且前面只有一个字符的行

:g/.bbs/d

删除匹配 bbs 且以它开头的行

:g/^bbs/d

删除匹配 bbs 且以它结尾的行

:g/bbs$/d

.ini 的注释是以 ; 开始的,如果注释不在行开头,那么删除 ; 及以后的字符

:%s/;.+//g

删除 # 之后所有字符

%s/#.*//g

vim设置编码格式

先利用vim打开指定文件

:set ff 查看当前文本的模式类型,一般为dos,unix
:set ff=dos 设置为dos模式, 也可以用 sed -i ‘s/$/\r/‘
:set ff=unix 设置为unix模式,也可以用一下方式转换为unix模式:sed -i ‘s/.$//g’
:set fileencoding查看现在文本的编码
:set fenc=编码 转换当前文本的编码为指定的编码
:set enc=编码 以指定的编码显示文本,但不保存到文件中。

vim配置优化

sudo vim /etc/vimrc

set autoread
filetype plugin on
filetype on
set clipboard+=unnamed
set nobackup
set noswapfile
set syntax=on
set autoindent
set cindent
set tabstop=4
set softtabstop=4
set shiftwidth=4
set smarttab
set number
set ignorecase
set hlsearch
set incsearch
set selection=exclusive
set selectmode=mouse,key
set mouse=a

:inoremap ( ()i
:inoremap ) =ClosePair(‘)’)
:inoremap { {}O
:inoremap } =ClosePair(‘}’)
:inoremap “ “”i
:inoremap ‘ ‘’i

vim设置鼠标复制粘贴

启动鼠标定位功能:
set mouse=a

启用鼠标复制粘贴功能:
vim打开一个文件后,如需要复制文本,则在末行模式下输入
:set mouse-=a
即可使用鼠标右键复制粘贴功能