vi/vim 常用基本命令:

  • 文本的输入:

a\A 光标后\当前行最后面插入
i\I 光标前\当前行最前面插入
o\O 在当前行的 下一行\上一行插入新的空白行

  • 文本的删除:

x\X 删除光标处、光标前的字符
dd 删除当前行
J 删除当前行的换行符,使当前行与下一行合并为一行

1
2
3
4
5
6
7
8
d+定位符
d0\d^ 删除光标左边的文本。0或^代表行首
d$ 删除光标右边的文本。$代表行尾
dG 删除光标所在行之后的所有行。G代表最后一行
db 删除光标处前的字符直到词首。b代表词尾
de 删除光标处的字符直到词尾。e代表词尾
dw 删除光标处的字符直到下一个词的词首。w代表下一词词首。
注:以上命令前带数字n时表示删除范围扩大n倍。
  • 文本的修改:

cc 修改光标所在的行
C 修改光标处到行尾的文本

1
2
3
4
5
6
7
8
9
c+定位符
c0\c^ 修改光标左边的文本。0或^代表行首
c$ 修改光标右边的文本。$代表行尾
cG 修改光标所在行之后的所有行。G代表最后一行
cb 修改光标处前的字符直到词首。b代表词尾
ce 修改光标处的字符直到词尾。e代表词尾
cw 修改光标处的字符直到下一个词的词首。w代表下一词词首。
cl 修改光标处的字符
注:以上命令前带数字n时表示删除范围扩大n倍。
  • 文本的替换与替代:

r 替换一个字符,直到按下ESC结束
R 逐渐代替光标处的各个字符,直到按下ESC结束
s 删除光标处的字符并进入插入模式,等同于cl,直到按下ESC结束
S 删除光标行的字符并进入插入模式,等同于cc,直到按下ESC结束

  • 文本的拷贝、粘贴与选择:

yy 拷贝光标所在的行

1
2
3
4
5
6
7
8
9
10
11
12
13
y+定位符
y0\c^ 拷贝光标左边的文本。0或^代表行首
y$ 拷贝光标右边的文本。$代表行尾
yG 拷贝光标所在行之后的所有行。G代表最后一行
yb 拷贝光标处前的字符直到词首。b代表词尾
ye 拷贝光标处的字符直到词尾。e代表词尾
yw 拷贝光标处的字符直到下一个词的词首。w代表下一词词首。
yl 拷贝光标处的字符
p\P: 若剪贴板中的内容是完整的行,则将这些行插入到光标所在行之后、之前;若剪贴板中的内容不是完整的行,则将这些行插入到光标处之后、之前
注:以上命令前带数字n时表示删除范围扩大n倍。
v 以字符为单位选择连续的文本串
V 以行为单位选择连续的文本行
Ctrl+v 按字符位置选择文本块

vi/vim 末行模式常用基本命令:

  • 字符串替换

:[n1,n2]s/p1/p2/[g][c]

注:实际使用时不需要加[],n1、n2是行号范围,可用%代表所有行,未指定范围时,目标行就是光标所在的当前行,g代表替换目标行中所有匹配的字符串,选项c代表替换前要求用户确认

  • 全局命令

:g/pl 搜索所有包含pl字符串模式的行。
:g!/pl 搜索所有不包含pl字符串模式的行。
:g/pl/command 对所有包含pl字符串模式的行执行command命令。
:g!/pl/command 对所有不包含pl字符串模式的行执行command命令。
command 一般有p:显示行;d:删除行

  • 其他命令

:n 跳至第n行
:n1,n2con3 将第n1至n2行之间的内容拷贝到第n3行下
:n1,n2mn3 将第n1至n2行之间的内容移动到第n3行下
:n1,n2d 将第n1至n2行之间的内容删除
:p 显示当前行的内容
:nohl 将选择的内容取消高亮

一些自己可能用但常忘记的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
:w !sudo tee % >/dev/dull  ==> 保存没有编辑权限的文件
<space> cs v模式选中后注释
<space> cn v模式选中后解注释
<space> rn 改名
<space> y 查看yank历史
v模式下tbr == :'<,'>Tabularize /=<CR>
记录宏:norm模式下按q加一个字母开始记录操作,按q结束记录,@加上前面使用的字母使用宏
批量更改"/'/)等符号 ==> v模式选中后输入 :'<,'>norm cs 你要更改的符号<space>你想要的符号
norm模式下输入q:显示历史命令
norm模式下输入q/显示历史搜索
marks 查看mark记录
delmark 加 标签名 删除标签
m加上小写字母可以当前文件内跳转,加大写字母可以在多个文件内跳转
页签:打开:tabe 文件路径与文件名 新建:tabe split/new 使用gt 切换页签
[n]| 光标移动到第n列,未指定n时移到首列
[n]G 光标移动到第n行,未指定n时移到末行
(、)、{、} 光标移到句首、句尾、段首、段位

Vim 官方手册每讲小结

第一讲小结

1
2
3
4
5
6
7
8
1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。
h (左移) j (下行) k (上行) l (右移)
2. 欲进入 Vim 编辑器(从命令行提示符),请输入:vim 文件名 <回车>
3. 欲退出 Vim 编辑器,请输入 <ESC> :q! <回车> 放弃所有改动。或者输入 <ESC> :wq或x <回车> 保存改动。
4. 在正常模式下删除光标所在位置的字符,请按: x
5. 欲插入或添加文本,请输入:
i 输入欲插入文本 <ESC> 在光标前插入文本
A 输入欲添加文本 <ESC> 在一行后添加文本

第二讲小结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1. 欲从当前光标删除至下一个单词,请输入:dw
2. 欲从当前光标删除至当前行末尾,请输入:d$
3. 欲删除整行,请输入:dd
4. 欲重复一个动作,请在它前面加上一个数字:2w
5. 在正常模式下修改命令的格式是:
operator [number] motion
其中:
operator - 操作符,代表要做的事情,比如 d 代表删除
[number] - 可以附加的数字,代表动作重复的次数
motion - 动作,代表在所操作的文本上的移动,例如 w 代表单词(word),$ 代表行末等等。
6. 欲移动光标到行首,请按数字0键:0
7. 欲撤消以前的操作,请输入:u (小写的u)
欲撤消在一行中所做的改动,请输入:U (大写的U)
欲撤消以前的撤消命令,恢复以前的操作结果,请输入:CTRL-R

第三讲小结

1
2
3
4
5
6
7
8
1. 要重新置入已经删除的文本内容,请按小写字母 p 键。该操作可以将已删除
的文本内容置于光标之后。如果最后一次删除的是一个整行,那么该行将置
于当前光标所在行的下一行。
2. 要替换光标所在位置的字符,请输入小写的 r 和要替换掉原位置字符的新字
符即可。
3. 更改类命令允许您改变从当前光标所在位置直到动作指示的位置中间的文本。比如输入 ce 可以替换当前光标到单词的末尾的内容;输入 c$ 可以替换当前光标到行末的内容。
4. 更改类命令的格式是:
c [number] motion

第四讲小结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1. CTRL-G 用于显示当前光标所在位置和文件状态信息。
G 用于将光标跳转至文件最后一行。
先敲入一个行号然后输入大写 G 则是将光标移动至该行号代表的行。
gg 用于将光标跳转至文件第一行。
2. 输入 / 然后紧随一个字符串是在当前所编辑的文档中正向查找该字符串。
输入 ? 然后紧随一个字符串则是在当前所编辑的文档中反向查找该字符串。
完成一次查找之后按 n 键是重复上一次的命令,可在同一方向上查
找下一个匹配字符串所在;或者按大写 N 向相反方向查找下一匹配字符串所在。
CTRL-O 带您跳转回较旧的位置,CTRL-I 则带您到较新的位置。
3. 如果光标当前位置是括号(、)、[、]、{、},按 % 会将光标移动到配对的括号上。
4. 在一行内替换头一个字符串 old 为新的字符串 new,请输入 :s/old/new
在一行内替换所有的字符串 old 为新的字符串 new,请输入 :s/old/new/g
在两行内替换所有的字符串 old 为新的字符串 new,请输入 :,s/old/new/g
在文件内替换所有的字符串 old 为新的字符串 new,请输入 :%s/old/new/g
进行全文替换时询问用户确认每个替换需添加 c 标志 :%s/old/new/gc

第五讲小结

1
2
3
4
5
6
7
8
9
1. :!command 用于执行一个外部命令 command。
请看一些实际例子:
(MS-DOS) (Unix)
:!dir :!ls - 用于显示当前目录的内容。
:!del FILENAME :!rm FILENAME - 用于删除名为 FILENAME 的文件。
2. :w FILENAME 可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的件中。
3. v motion :w FILENAME 可将当前编辑文件中可视模式下选中的内容保存到文件FILENAME 中。
4. :r FILENAME 可提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置后面。
5. :r !dir 可以读取 dir 命令的输出并将其放置到当前文件的光标位置后面。

第六讲小结

1
2
3
4
5
6
7
8
9
10
11
12
13
 1. 输入小写的 o 可以在光标下方打开新的一行并进入插入模式。
输入大写的 O 可以在光标上方打开新的一行。
2. 输入小写的 a 可以在光标所在位置之后插入文本。
输入大写的 A 可以在光标所在行的行末之后插入文本。
3. e 命令可以使光标移动到单词末尾。
4. 操作符 y 复制文本,p 粘贴先前复制的文本。
5. 输入大写的 R 将进入替换模式,直至按 <ESC> 键回到正常模式。
6. 输入 :set xxx 可以设置 xxx 选项。一些有用的选项如下:
'ic' 'ignorecase' 查找时忽略字母大小写
'is' 'incsearch' 查找短语时显示部分匹配
'hls' 'hlsearch' 高亮显示所有的匹配短语
选项名可以用完整版本,也可以用缩略版本。
7. 在选项前加上 no 可以关闭选项: :set noic

第七讲小结

1
2
3
4
5
6
1. 输入 :help 或者按 <F1> 键或 <Help> 键可以打开帮助窗口。
2. 输入 :help cmd 可以找到关于 cmd 命令的帮助。
3. 输入 CTRL-W CTRL-W 可以使您在窗口之间跳转。
4. 输入 :q 以关闭帮助窗口
5. 您可以创建一个 vimrc 启动脚本文件用来保存您偏好的设置。
6. 当输入 : 命令时,按 CTRL-D 可以查看可能的补全结果。按 <TAB> 可以使用一个补全。