Vim 是一款功能强大的文本编辑器,深受开发者和系统管理员的喜爱。它具有高效、灵活的特点,能够帮助用户快速完成各种文本编辑任务。本文将对 Vim 的常用指令进行详细汇总,并说明每个命令的作用及用法。
一、基本操作命令
1. :w
作用:保存当前文件。
示例:
:w
说明:将当前编辑的文件保存到磁盘。
2. :wq
或 :x
作用:保存并退出 Vim。
示例:
:wq
说明:保存当前文件并退出 Vim。
3. :q
作用:退出 Vim。
示例:
:q
说明:退出 Vim,如果文件有未保存的修改,会提示确认。
4. :q!
作用:强制退出 Vim,不保存修改。
示例:
:q!
说明:强制退出 Vim,不保存当前文件的修改。
二、光标移动命令
1. h
作用:光标向左移动一个字符。
示例:
h
说明:将光标向左移动一个字符。
2. j
作用:光标向下移动一行。
示例:
j
说明:将光标向下移动一行。
3. k
作用:光标向上移动一行。
示例:
k
说明:将光标向上移动一行。
4. l
作用:光标向右移动一个字符。
示例:
l
说明:将光标向右移动一个字符。
5. gg
作用:跳转到文件的第一行。
示例:
gg
说明:将光标跳转到文件的第一行。
6. G
作用:跳转到文件的最后一行。
示例:
G
说明:将光标跳转到文件的最后一行。
7. 数字 + G
作用:跳转到指定行号的行。
示例:
10G
说明:将光标跳转到第 10 行。
三、编辑命令
1. i
作用:进入插入模式,在当前光标位置插入文本。
示例:
i
说明:进入插入模式,开始在当前光标位置插入文本。
2. a
作用:进入插入模式,在当前光标后插入文本。
示例:
a
说明:进入插入模式,开始在当前光标后插入文本。
3. o
作用:进入插入模式,在光标所在行的下一行插入文本。
示例:
o
说明:进入插入模式,开始在光标所在行的下一行插入文本。
4. O
作用:进入插入模式,在光标所在行的上一行插入文本。
示例:
O
说明:进入插入模式,开始在光标所在行的上一行插入文本。
5. x
作用:删除光标所在位置的字符。
示例:
x
说明:删除光标所在位置的字符。
6. dd
作用:删除光标所在的一整行。
示例:
dd
说明:删除光标所在的一整行。
7. D
作用:删除从光标位置到行尾的文本。
示例:
D
说明:删除从光标位置到行尾的文本。
8. yy
作用:复制光标所在的一行文本。
示例:
yy
说明:复制光标所在的一行文本。
9. p
作用:粘贴复制的文本到光标所在位置的下一行。
示例:
p
说明:粘贴复制的文本到光标所在位置的下一行。
10. u
作用:撤销上一次的编辑操作。
示例:
u
说明:撤销上一次的编辑操作。
11. Ctrl + r
作用:重做上一次撤销的编辑操作。
示例:
Ctrl + r
说明:重做上一次撤销的编辑操作。
四、查找和替换命令
1. /查找文本
作用:查找文件中的文本内容。
示例:
/search_string
说明:查找文件中的 search_string
,按回车键后光标会移动到找到的第一个匹配位置。
2. n
作用:查找下一个匹配项。
示例:
n
说明:查找下一个匹配项。
3. N
作用:查找上一个匹配项。
示例:
N
说明:查找上一个匹配项。
4. :s/旧文本/新文本/
作用:替换当前行中第一个匹配的旧文本为新文本。
示例:
:s/old/new/
说明:将当前行中第一个匹配的 old
替换为 new
。
5. :%s/旧文本/新文本/g
作用:替换整个文件中所有匹配的旧文本为新文本。
示例:
:%s/old/new/g
说明:将整个文件中所有匹配的 old
替换为 new
。
五、可视模式命令
1. v
作用:进入普通可视模式,可以选择任意文本。
示例:
v
说明:进入普通可视模式,开始选择文本。
2. V
作用:进入行可视模式,可以选择整行。
示例:
V
说明:进入行可视模式,开始选择整行文本。
3. Ctrl + v
作用:进入块可视模式,可以选择列块。
示例:
Ctrl + v
说明:进入块可视模式,开始选择列块文本。
4. y
作用:复制选中的文本。
示例:
y
说明:复制选中的文本。
5. d
作用:删除选中的文本。
示例:
d
说明:删除选中的文本。
6. c
作用:修改选中的文本,进入插入模式。
示例:
c
说明:修改选中的文本,进入插入模式。
六、其他常用命令
1. :help
作用:打开 Vim 的帮助文档。
示例:
:help
说明:打开 Vim 的帮助文档,查看详细的命令和用法。
2. :version
作用:查看 Vim 的版本信息。
示例:
:version
说明:查看 Vim 的版本信息。
3. :set nu
作用:显示行号。
示例:
:set nu
说明:在编辑器中显示行号。
4. :set nonu
作用:隐藏行号。
示例:
:set nonu
说明:在编辑器中隐藏行号。
5. :w !
作用:强制保存文件。
示例:
:w !
说明:强制保存文件,即使文件是只读的。
6. :r file
作用:读取文件内容并插入到当前文件中。
示例:
:r file.txt
说明:读取 file.txt
的内容并插入到当前文件中。
7. :sp file
作用:在当前窗口中打开文件。
示例:
:sp file.txt
说明:在当前窗口中打开 file.txt
。
8. :vsp file
作用:在垂直分割的窗口中打开文件。
示例:
:vsp file.txt
说明:在垂直分割的窗口中打开 file.txt
。
9. :tabnew file
作用:在新标签页中打开文件。
示例:
:tabnew file.txt
说明:在新标签页中打开 file.txt
。
10. :tabclose
作用:关闭当前标签页。
示例:
:tabclose
说明:关闭当前标签页。
11. :tabnext
作用:切换到下一个标签页。
示例:
:tabnext
说明:切换到下一个标签页。
12. :tabprevious
作用:切换到上一个标签页。
示例:
:tabprevious
说明:切换到上一个标签页。
13. :tabmove +n
作用:将当前标签页移动到第 n 个位置。
示例:
:tabmove +1
说明:将当前标签页移动到第 1 个位置。
14. :tabmove -n
作用:将当前标签页移动到倒数第 n 个位置。
示例:
:tabmove -1
说明:将当前标签页移动到倒数第 1 个位置。
15. :tabonly
作用:关闭除当前标签页外的所有标签页。
示例:
:tabonly
说明:关闭除当前标签页外的所有标签页。
16. :tabfirst
作用:切换到第一个标签页。
示例:
:tabfirst
说明:切换到第一个标签页。
17. :tablast
作用:切换到最后一个标签页。
示例:
:tablast
说明:切换到最后一个标签页。
18. :tabnext n
作用:切换到第 n 个标签页。
示例:
:tabnext 2
说明:切换到第 2 个标签页。
19. :tabprevious n
作用:切换到倒数第 n 个标签页。
示例:
:tabprevious 2
说明:切换到倒数第 2 个标签页。
20. :tabmove +n
作用:将当前标签页移动到第 n 个位置。
示例:
:tabmove +2
说明:将当前标签页移动到第 2 个位置。
21. :tabmove -n
作用:将当前标签页移动到倒数第 n 个位置。
示例:
:tabmove -2
说明:将当前标签页移动到倒数第 2 个位置。
22. :tabonly
作用:关闭除当前标签页外的所有标签页。
示例:
:tabonly
说明:关闭除当前标签页外的所有标签页。
23. :tabfirst
作用:切换到第一个标签页。
示例:
:tabfirst
说明:切换到第一个标签页。
24. :tablast
作用:切换到最后一个标签页。
示例:
:tablast
说明:切换到最后一个标签页。
25. :tabnext n
作用:切换到第 n 个标签页。
示例:
:tabnext 2
说明:切换到第 2 个标签页。
26. :tabprevious n
作用:切换到倒数第 n 个标签页。
示例:
:tabprevious 2
说明:切换到倒数第 2 个标签页。
27. :tabmove +n
作用:将当前标签页移动到第 n 个位置。
示例:
:tabmove +2
说明:将当前标签页移动到第 2 个位置。
28. :tabmove -n
作用:将当前标签页移动到倒数第 n 个位置。
示例:
:tabmove -2
说明:将当前标签页移动到倒数第 2 个位置。
29. :tabonly
作用:关闭除当前标签页外的所有标签页。
示例:
:tabonly
说明:关闭除当前标签页外的所有标签页。
30. :tabfirst
作用:切换到第一个标签页。
示例:
:tabfirst
说明:切换到第一个标签页。
31. :tablast
作用:切换到最后一个标签页。
示例:
:tablast
说明:切换到最后一个标签页。
32. :tabnext n
作用:切换到第 n 个标签页。
示例:
:tabnext 2
说明:切换到第 2 个标签页。
33. :tabprevious n
作用:切换到倒数第 n 个标签页。
示例:
:tabprevious 2
说明:切换到倒数第 2 个标签页。
34. :tabmove +n
作用:将当前标签页移动到第 n 个位置。
示例:
:tabmove +2
说明:将当前标签页移动到第 2 个位置。
35. :tabmove -n
作用:将当前标签页移动到倒数第 n 个位置。
示例:
:tabmove -2
说明:将当前标签页移动到倒数第 2 个位置。
36. :tabonly
作用:关闭除当前标签页外的所有标签页。
示例:
:tabonly
说明:关闭除当前标签页外的所有标签页。
37. :tabfirst
作用:切换到第一个标签页。
示例:
:tabfirst
说明:切换到第一个标签页。
38. :tablast
作用:切换到最后一个标签页。
示例:
:tablast
说明:切换到最后一个标签页。
39. :tabnext n
作用:切换到第 n 个标签页。
示例:
:tabnext 2
说明:切换到第 2 个标签页。
40. :tabprevious n
作用:切换到倒数第 n 个标签页。
示例:
:tabprevious 2
说明:切换到倒数第 2 个标签页。
41. :tabmove +n
作用:将当前标签页移动到第 n 个位置。
示例:
:tabmove +2
说明:将当前标签页移动到第 2 个位置。
42. :tabmove -n
作用:将当前标签页移动到倒数第 n 个位置。
示例:
:tabmove -2
说明:将当前标签页移动到倒数第 2 个位置。
43. :tabonly
作用:关闭除当前标签页外的所有标签页。
示例:
:tabonly
说明:关闭除当前标签页外的所有标签页。
44. :tabfirst
作用:切换到第一个标签页。
示例:
:tabfirst
说明:切换到第一个标签页。
45. :tablast
作用:切换到最后一个标签页。
示例:
:tablast
说明:切换到最后一个标签页。
46. :tabnext n
作用:切换到第 n 个标签页。
示例:
:tabnext 2
说明:切换到第 2 个标签页。
47. :tabprevious n
作用:切换到倒数第 n 个标签页。
示例:
:tabprevious 2
说明:切换到倒数第 2 个标签页。
48. :tabmove +n
作用:将当前标签页移动到第 n 个位置。
示例:
:tabmove +2
说明:将当前标签页移动到第 2 个位置。
49. :tabmove -n
作用:将当前标签页移动到倒数第 n 个位置。
示例:
:tabmove -2
说明:将当前标签页移动到倒数第 2 个位置。
50. :tabonly
作用:关闭除当前标签页外的所有标签页。
示例:
:tabonly
说明:关闭除当前标签页外的所有标签页。
51. :tabfirst
作用:切换到第一个标签页。
示例:
:tabfirst
说明:切换到第一个标签页。
52. :tablast
作用:切换到最后一个标签页。
示例:
:tablast
说明:切换到最后一个标签页。
53. :tabnext n
作用:切换到第 n 个标签页。
示例:
:tabnext 2
说明:切换到第 2 个标签页。
54. :tabprevious n
作用:切换到倒数第 n 个标签页。
示例:
:tabprevious 2
说明:切换到倒数第 2 个标签页。
55. :tabmove +n
作用:将当前标签页移动到第 n 个位置。
示例:
:tabmove +2
说明:将当前标签页移动到第 2 个位置。
56. :tabmove -n
作用:将当前标签页移动到倒数第 n 个位置。
示例:
:tabmove -2
说明:将当前标签页移动到倒数第 2 个位置。
57. :tabonly
作用:关闭除当前标签页外的所有标签页。
示例:
:tabonly
说明:关闭除当前标签页外的所有标签页。
通过以上命令,我们可以高效地完成各种文本编辑任务,提高工作效率。希望这些命令对你有所帮助,欢迎大家在评论区互相交流!