不辜负每一天

Vim操作命令

2018.12.15

前言

简单记录一些在使用vim过程中会用到的操作

模式

vim有三个模式,分别是:

  • 命令模式
  • 编辑模式
    • 进入:[i, I, o, O, a, A, r, R]
    • 退出:Esc键
  • 命令行模式
    • 进入:[:, /, ?]
    • 退出:Esc键
    • 作用:查找数据,读取、保存、批量替换字符、退出、显示行号等操作

基本操作

退出&保存

command 效果
:q 退出
:q! 强制退出,不保存修改
:w 保存修改
:wq 保存并退出
ZZ 保存并退出

移动光标

command 效果
n<space> 向右移动n个字符
n<Enter> 向下移动n行
+ 移动到非空格符的下一行
- 移动到非空格符的上一行
[ctrl]+f 向下移动一页
[ctrl]+b 向上移动一页
[ctrl]+d 向下移动半页
[ctrl]+u 向上移动半页
0 移动到最前面的字符处
$ 移动到最后的字符
H 移动到此屏幕最上方一行的第一个字符
M 到屏幕中间一行的第一个字符
L 到屏幕最后一行的第一个字符
G 移动到此文件的最后一行
nG 移动到第n行
gg 移动到此文件的第一行

查找和替换

command 效果
/word 向光标之下查找一个字符串
?word 向光标之上查找一个字符串
n 重复前一个查找操作
N 反向进行前一个查找操作
:n1,n2s/word1/word2/g 在第n1和n2行之间寻找word1字符串,并将其替换为word2
:1,$s/word1/word2/g 从第一行到最后一行寻找word1字符串,并将其替换为word2
:1,$s/word1/word2/gc 从第一行到最后一行寻找word1字符串,并将其替换为word2,且在替换前显示提示字符给用户确认是否替换
:nohl 取消反白

删除、复制和粘贴

删除

command 效果
nx 连续向后删除n个字符
ndd 剪切(删除)光标所在的向下n行
dd 剪切该行
d1G 剪切光标所在到第一行的所有数据
d$ 剪切光标所在到最后一行的所有数据
d0 剪切光标所在处,到该行的最前面的一个字符
[n]c[k] 重复删除多个数据,k为方向按键,如5cj为向下删除5,5cl为向右删除5个字符

复制与粘贴

command 效果
yy 复制所在一行
nyy 复制n行
yn 复制n+1行
y1G 复制所在行到第一行的数据
yG 复制所在行到最后一行的数据
y0 复制所在的字符到该行行首的数据
y$ 复制所在的字符到该行行尾的数据
p 在下一行粘贴
P 在上一行粘贴

其他

command 效果
u 恢复前一个操作,撤销
ctrl+r 重做上一个操作,对撤销操作而言的撤销
» 该行向右缩进
« 该行向左缩进
>[n] n行向右缩进
<[n] n行向左缩进
. 重复上一次的操作

命令模式切换到编辑模式

command 效果
i与I i 为从目标光标所在处插入,I 为在目前所在行的第一个非空格符处开始插入
a与A a 为从所在的下一个字符处开始插入,A 为从所在行的最后一个字符处开始插入
o与O o 为在所在的下一行处插入新的一行,O 为在目前所在处的上一行插入新的一行
r与R r 只会替换光标所在的那个字符一次;R 会一直替换光标所在的文字,直到按下Esc为止

命令行模式的其它操作

command 效果
:! [command] 暂时退出vi到shell执行command的显示结果,如:! ls ~
:w [file] 将编辑的数据保存成另一个文件
:f [file] 在编辑的数据中,读入另一个文件的数据,即将此文件内容添加到光标所在行之后
:n1,n2 w [file] 将n1到n2的内容保存到file文件

可视区块

command 效果
v 字符选择,会将光标经过的地方反白选择
V 行选择, 会将光标经过的行反白选择
[ctrl]+v 可视区块,可以用矩形的方式选择数据
y 复制反白的地方
d 删除
p 将复制的区块,在光标所在处粘贴
[Esc] 退出

多文件编辑

:r filename     # 在光标处读取写入某个文件的全部内容

多文件编辑

$ vi file1 file2    # 同时打开两个文件
command 作用
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出目前这个vim开启的所有文件

多窗口功能

多窗口同步显示:修改同步,光标移动不同步

command 作用
:sp [filename] 打开一个新窗口, 若有加filename,则表示在新窗口创建一个新文件,否则表示两个窗口为一个文件内容(同步显示)
[ctrl]+ w + j 光标移动到下方的窗口
[ctrl]+ w + k 光标移动到上方的窗口
[ctrl]+ w + q 退出,也可用:q:close

关键字补全

组合键,要在编辑模式下使用

command 作用
ctrl+x -> ctrl+n 通过目前正在编辑的这个【文件的内容文字】作为关键字,予以补全
ctrl+x -> ctrl+f 以当前目录内的【文件名】作为关键词,予以补全
ctrl+x -> ctrl+o 以扩展名作为语法补充,以vim内置的关键词,予以补全