vim常见使用命令总结完整分享(一)

vim是linux下命令行一款经典编辑器,操作简单、功能强大,这是很多unix上元老级程序员的挚爱。这是我总结整理的vim最常用的命令集合,没事常阅读,最重要的是有问题了,尝试用这些东西去解决问题,不一定是高效快捷的,但起码是有效的。

打开vim的方式

vim filename                       #打开文件filename,并将光标置于第一行首
vim +n filename                    #打开文件filename,并将光标置于第 n 行首
vim + filename                     #打开文件filename,并将光标置于最后一行
vim + /pattern file                #打开文件file,并将光标置于其中第一个于pattern 匹配的字符串处
vim –r filename                    #在上次正用vi编辑filefame发生系统崩溃后,恢复filename
vim file1 … filen                  #打开多个文件,依次对之进行编辑
vim -o file1 … filen               #用水平分隔的方式打开多个文件然后进行编辑
vimdiff filename1 filename2        #用垂直分割的方式打开两个文件filename1,filename2并显示不同比较 
插入数据操作
行操作:
I                 #在光标所在行首插入文本
A                 #在光标所在行尾添加文本
o(open)           #在光标所在行下面添加一行
O                 #在光标所在行上面添加一行
nS                #从当前行开始,删除向下 n 行并进入编辑模式,若无 n 删除当前所在行,并进入编辑模式
:r filename       #在编辑数据中读入一个文件内容数据,并把这些数据添加到光标所在行后面

字符操作:
i(insert)         #在光标前插入文本
a(append)         #在光标后插入文本
r(Replace)        #替换光标所在处字符,结束替换
R                 #替换多个字符,以按下 [Esc] 键标志替换结束
ns                #从当前光标位置处开始,删除 n 个字符并进入编辑模式,若无 n 删除一个字符,并进入编辑模式

改变某区域:
可以重复的:
[c]+[num]+[ h / j / k / l / w / b / e / ( / ) / { / } / $ / G / /word / ?word / tc / Tc / fc / Fc / `c ]
c:                    #表示改变操作
重复操作次数:           #num 表示操作重复次数
操作区域选择:
    h              #改变光标前一个字符
    l              #改变光标所在处的字符
    j              #改变本行与下一行
    k              #改变本行与上一行
    w              #改变光标开始到下一个单词词首处
    b              #改变光标开始到上一个单词词首处
    e              #改变光标开始到这个单词的结尾处
    (              #改变光标开始到句子结束处
    )              #改变光标开始到句子开始处
    {              #改变光标开始到段落开始处
    }              #改变光标开始到段落结束处
    $              #改变从光标开始处到行尾处
    G              #改变从光标所在行到行尾处
    /word          #改变从光标开始处到下个word字符串,不含word ( word 指代任意字符串,正则表达式 )
    ?word          #改变从光标开始处到上个word 字符串,不含word ( word 指代任意字符串,正则表达式 )
    tc             #改变从光标开始处到下个 c 字符处,不含 c ( c  指代任意字符 )
    Tc             #改变从光标开始处到上个 c 字符处,不含 c ( c  指代任意字符 )
    fc             #改变从光标开始处到下个 c 字符处,含 c ( c  指代任意字符 )
    Fc             #改变从光标开始处到上个 c 字符处,含 c ( c  指代任意字符 )
    `c             #改变从光标开始到标记 c 这个位置
不可重复的:
[c]+[ 0 / ^ / H / L]
c:                    #表示改变操作
操作区域选择:
    0             #改变从光标所在处到某一行的开始位置
    ^             #改变到某一行的第一个字符位置(不包括空格或TAB字符)
    L             #改变直到屏幕上最后一行的内容
    H             #改变直到屏幕上第一行的内容
[c]+[i]+[ { / } / ( / ) / " / ' ]
c:                     #表示改变操作
i:                     #表示 in 即在里面的意思
操作区域选择:
    {             #改变在 {} 中内容( 要求光标在 {} 内 )
    }             #改变在 {} 中内容( 要求光标在 {} 内 )
    [             #改变在 [] 中内容( 要求光标在 [] 内 )
    ]             #改变在 [] 中内容( 要求光标在 [] 内 )
    (             #改变在 () 中内容( 要求光标在 {} 内 )
    )             #改变在 () 中内容( 要求光标在 () 内 )
    "             #改变在 "" 中内容( 要求光标在 "" 内 )
    '             #改变在 '' 中内容( 要求光标在 '' 内 ) 
保存/退出
:q                     #退出vim 返回到shell,若有修改未被保存,vi 在末行给出提示信息并不退出vim到 shell
:q!                    #退出 vim 返回到 shell,放弃未保存的修改
:wq                    #保存后退出,无论文件是否有修改,都更新文件的修改时间
:x                     #保存后退出,若文件没有修改的话,不更新文件的修改时间
:w                     #将编辑的数据写入硬盘中
:w!                    #若文件属性为"只读"时,强制写入该文件
:w filename            #写入当前文件到 filename 文件
ZZ                     #若文件没有更动,则不保存离开,若文件被更动过,则保存后离开
:n1,n2 w filename      #将 n1 到 n2 的内容保存到 filename 这个文件中 
移动光标
位移
字符操作:
nh / n←               #向左移动 n 字符,无 n 移动一字符
nl / n→               #向右移动 n 字符,无 n 移动一字符
n                       #n 表示“数字”,光标会向右移动这一行 n 个字符.
0                      #这是数字 “0”:移动到这一行的最前面字符处
^                     #移动到这一行的最开始字符处行操作:
nj / n↓               #向下移动 n 行,无 n 移动一行
nk / n↑               #向上移动 n 行,无 n 移动一行
[Ctrl+p]              #光标上移一行
[Ctrl+n]              #光标下移一行
n+                    #光标下移到 n 行头,若没有 n 光标移到下行行头
n-                    #光标上移到 n 行头,若没有 n 光标移到上行行头
n$                    #光标下移到 n 行尾,若没有 n 则移动到本行行尾
n_                    #向下移动 n-1 行,并光标移动到非空白行首
H                     #光标移动到这个屏幕的最上方哪一行
M                     #光标移动到这个屏幕的中央哪一行
L                     #光标移动到这个屏幕的最下方哪一行
nG                    #n 为数字.移动到这个文件的第 n 行.若没有 n 则移动到最后一行
gg                    #移动到这个文件的第一行,相当于 1G
n                     #向下移动 n 行,无 n 移动一行 
跳转
W / w         #光标右移一个字至字首.
B / b         #光标左移一个字至字首.
E / e         #光标右移一个字至字尾.
(             #光标移到上个句子句首.
)             #光标移到下个句子句首.
{             #光标移到上个段落句首.
}             #光标移到下个段落句首.
fc            #光标跳转到本行下一个字符 c 处( c 指代任意字符 )
Fc            #光标跳转到本行上一个字符 c 处( c 指代任意字符 )
tc            #光标跳转到本行下一个字符 c 的前一个字符处( c 指代任意字符 )
Tc            #光标跳转到本行上一个字符 c 的后一个字符处( c 指代任意字符 )
/word         #光标跳转到下一个字符串word 处,并把所有word 单词高亮显示( word 指代任意字符串,正则表达式 )
?word         #光标跳转到上一个字符串word 处,并把所有word 单词高亮显示( word 指代任意字符串,正则表达式 )
#             #光标跳转到下个与光标所在处单词相同的单词,并把所有与光标所在处的相同的单词高亮显示
*             #光标跳转到上个与光标所在处单词相同的单词,并把所有与光标所在处的相同的单词高亮显示
gd            #将与光标所在处的单词相同的单词全部高亮显示,并跳转到上一个高亮显示的单词
gD            #将与光标所在处的单词相同的单词全部高亮显示,并跳转到最前面一个高亮显示的单词
`.            #跳转至上次编辑位置
`c            #将光标转移到书签 c 处( c 为任意字符 )

下面两个与 / 与 ? 组合着用:
n             #下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个,但其实它只会在高亮字符中切换)
N             #上一个匹配(同上)
与 f/F 配合使用的命令:
;             #重复上一个f命令 

还原与重做
.             #重复前一个操作
u             #还原前一个操作
[Ctrl]+r      #重做上一个操作 
滚动屏幕
[Ctrl+f]       #屏幕“向下”移动一页,相当于[Page Down]按键
[Ctrl+b]       #屏幕“向上”移动一页,相当于[Page Up]按键
[Ctrl+d]       #屏幕“向下”移动半页
[Ctrl+u]       #屏幕“向上”移动半页
[Ctrl+e]       #屏幕向下滚一行
[Ctrl+y]       #屏幕项上滚一行
nz             #将第 n 行滚至屏幕顶部。不指定 n 时将当前行滚至屏幕顶
:$             #屏幕滚到文章最后一行
:0             #屏幕滚到文章最开始一行 

你可能感兴趣的:(命令,vim)