Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在开发运维中被广泛使用。
vim 的使用
基本上 vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)。
命令模式
用户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。
以下是普通模式常用的几个命令:
- i:切换到输入模式,在光标当前位置开始输入文本。
- x : 删除当前光标所在处的字符。
- : :切换到底线命令模式,以在最底一行输入命令。
- a : 进入插入模式,在光标下一个位置开始输入文本。
- o:在当前行的下方插入一个新行,并进入插入模式。
- O : 在当前行的上方插入一个新行,并进入插入模式。
- dd : 剪切当前行。
- yy : 复制当前行。
- p(小写):粘贴剪贴板内容到光标下方。
- P(大写):粘贴剪贴板内容到光标上方。
- u :撤销上一次操作。
- Ctrl + r :重做上一次撤销的操作。
- :w :保存文件。
- :q :退出 Vim 编辑器。
- :q! :强制退出Vim 编辑器,不保存修改。
若想要编辑文本,只需要启动 Vim,进入了命令模式,按下 i 切换到输入模式即可。命令模式只有一些最基本的命令,因此仍要依靠底线命令行模式输入更多命令。
光标移动
- Ctrl + f:屏幕向下移动一页,相当于Page Down按键
- Ctrl + b:屏幕向上移动一页,相当于Page Up按键
- 0或功能键Home:这是数字0 :移动到这一行的最前面字符处
- $或功能键End:移动到这一行的最后面字符处
- G:移动到这个档案的最后一行
- gg:移动到这个档案的第一行,相当于1G
- n Enter:n 为数字。光标向下移动n行
- n G:n 为数字。移动到这个档案的第n行。例如 20G 则会移动到第20行(可配合 :set nu),也可输入20,然后
shift+g。
复制粘贴
x, X:在一行字当中,x 为向后删除一个字符, X为向前删除一个字符
nx:n 为数字,连续向后删除 n 个字符。举例来说,连续删除10个字符,10x
dd:剪切游标所在的那一整行,用 p/P 可以粘贴。
ndd:n 为数字。剪切光标所在的向下 n 行,例如 20dd 则是剪切20行,用p/P可以粘贴。
dG:删除光标所在到最后一行的所有数据
yy:复制游标所在的那一行
nyy:n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行
u:撤销,复原前一个动作
[Ctrl]+r:重做上一个动作
.:点,重复前一个动作的意思。p, P:p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行。举例来说,目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行
其他:
1 | d1G 删除光标所在到第一行的所有数据 |
搜索替换
/word:查找单词word,命令模式下/单词,回车,n查找下一个,N上一个:n1,n2s/word1/word2/g:n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2:1,$s/word1/word2/g或:%s/word1/word2/g:从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2:1,$s/word1/word2/gc或:%s/word1/word2/gc:从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2,且在取代前显示提示字符给用户确认 (confirm) 是否需要取代。
输入模式
在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。
- i,**I **进入输入模式(Insert mode):
i为从目前光标所在处输入,I为在目前所在行的第一个非空格符处开始输入 - a, **A **进入输入模式(Insert mode):
a为从目前光标所在的下一个字符处开始输入,A为从光标所在行的最后一个字符处开始输入。 - o, **O **进入输入模式(Insert mode): 这是英文字母
o的大小写。o为在目前光标所在的下一行处输入新的一行,O为在目前光标所在的上一行处输入新的一行! - r, R 进入替换模式(Replace mode):
r只会替换光标所在的那一个字符一次,R会一直替换光标所在的文字,直到按下 ESC 为止
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下 :(英文冒号)就进入了底线命令模式。底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。在底线命令模式中,基本的命令有:
:w:保存文件。:q:退出 Vim 编辑器。:wq:保存文件并退出 Vim 编辑器。:q!:强制退出Vim编辑器,不保存修改。:set nu:显示行号,设定之后,会在每一行的前缀显示该行的行号。:set nonu:取消行号。
按 ESC 键可随时退出底线命令模式。