转载自https://developer.aliyun.com/article/1154538
一、vim三大模式的关系以及如何配置vim为默认编辑器
1. 三种模式的切换
vim编辑器有三个模式:命令模式(command mode)、插入模式(Insert mode)也叫做编辑模式、末行模式(last line mode)也叫底行模式。我们在shell下输入命令vi或者vim加要编辑的文件名就可以进入vi或vim编辑器(我们一般使用vim,因为vim是vi的加强版,功能更为强大)。
我们在shell下初次进入vim是进入到vim的命令模式,在命令模式下按a/i/o/s等插入键进入插入模式,插入模式下按ESC回到命令模式。在命令模式下按 : 进入末行模式,末行模式下按两次ESC回到命令模式。末行模式和插入模式之间不能直接切换。
2. 配置vim为默认编辑器
我们在shell下敲击命令vim就可以进入vim编辑器,敲击vi默认是进入vi编辑器。我们也可以通过过配置,当输入vi的时候也进入vim编辑器,有两种方法。
① 通过别名设置
alias vi="vim"
非常简单,通过别名实现,一句话搞定。
② 执行下列指令
1. sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim 1
2. sudo update-alternatives --set editor /usr/bin/vim
3. sudo update-alternatives --install /usr/bin/vi vi /usr/bin/vim 1
4. sudo update-alternatives --set vi /usr/bin/vim
二、vim三种模式下的命令介绍
学习vim可以使用官方的教程,在shell下输入命令就能查看vim教程
vimtutor
通过上下键就可以翻页学习。
1. vim的命令模式(command mode)
在shell下通过vim进入vim编辑器后就是命令模式,在命令模式下按下的键都会当作命令去执行,命令模式界面如下,最低下一行会显示文件名和当前光标所在行号。
(1)移动光标
最基本的上下左右移动,可以在教程中看到,四个方向键和k/h/j/l四个字母键。
光标移动相关的命令如下表所示:
命令 | 作用 |
h/左键 | 光标左移一个字符 |
j/下键 | 光标下移一个字符 |
k/上键 | 光标上移一行 |
l(小写L)/右键 | 光标下移一行 |
0 (数字0) | 移动到光标所在行行首 |
$ (shit + 4) | 移动到光标所在行行尾 |
gg | 移动到整个文件的首部(文件的第一个字符处) |
shift+g (G) |
移动到整个文件的尾部 (G可以是shift+g,也可以是CapsLk开启大写键后直接按G键) |
n shift+g (nG) |
移动到第n行 (先按数字键指定n,然后按住shift键不放,同时按g键) |
(2)复制、粘贴、删除、剪切
① 删除与剪切
之所以把删除和剪切放在一起,是因为删除的内容会放在剪切板上,可以通过粘帖把剪切板(刚删除)的内容粘帖回来,这样删除就起到了和剪切一样的效果。其实,删除就是剪切,剪切就是删除,如果删除后不粘帖那就是删除,如果删除后进行粘贴操作,那就是剪切。
命令 | 作用 |
x (小写x) |
删除光标后面的字符 |
d+l(小写L)/右键 | |
shift+x (大写X) |
删除光标前面的字符 (X可以是shift+x,也可以是CapsLk开启大写键后直接按X键) |
d+h/左键 | |
d+方向键(箭头或hjkl) | 删除相应方向的字符或行(不建议用) |
dw | 删除光标所在位置到光标所在单词的尾部 |
d shift+4 (d+$) |
删除光标所在位置一直到行尾 (D可以是shift+d,也可以是CapsLk开启大写键后直接按D键) |
shift+d (D) | |
dd | 删除一整行 |
ndd | 删除光标所在行开始的n行 |
操作演示:
dw删除指令演示
ndd命令演示,先按数字键,然后快速按两次d键
② 复制与粘贴
粘贴操作既可以在复制后进行,也可以在删除(剪切)后进行
命令 | 作用 |
yy | 复制光标所在行到剪切板 |
p (小写p) | 将剪切板内容粘贴到光标所在位置的下一行 |
P (大写P) | 将剪切板内容粘贴到光标所在位置的上一行 |
通过粘贴前后对比可以看到,粘贴会新开辟一行然后把剪切板内容复制到新开辟的这一行,而不会把原来的上一行或下一行覆盖掉,原来的下一行变为粘贴行的下一行。
(4)查找命令
比如要查找文件内所有的string
命令 | 用法及解释 |
/ | 命令模式下,直接输入 /string ,回车,从文件顶部开始查找文件内所有string并高亮显示 |
? (shift+/) | 命令模式下,直接输入?string,回车,从文件底部开始查找文件内所有string并高亮显示 |
# | 把光标移动到要查找的字符串string上,按#便可以查找所有string并高亮显示 |
n | 向下遍历查找到的字符串(依次选中下一个高亮显示的string) |
N (shift+n) | 向上遍历查找到的字符串(依次选中上一个高亮显示的string) |
① / 与 n 用法演示(?与N同理)
当我们按下 / 后,在最下面会变成这样
然后在 / 后面输入需要查找的字符串
按回车键可以看到,所有的printf都已经高亮显示了
按一下n可以发现,光标移动到下一个高亮显示的printf处了
② #用法演示
把光标停在要查找的字符串处,按#即可高亮选出所有,通过n和shift+n可以在被选出的字符串之间遍历。
(5)替换命令与替换模式
命令 | 作用 |
r | 在输入一个字符c,就可以将光标后面的一个字符替换为c |
shift+r (R) | 进入替换模式 |
Esc | 退出替换模式 |
① 替换单个字符
找到要替换的字符,把光标停在字符前面,按r,在输入需要替换成的目标字符就可以替换成功。
② 进入替换模式
按 shift+r 也就是R就可以进入替换模式,这时会在最下面显示替换二字
现在就可以通过上下左右键来移动光标,并输入字符替换光标后面的字符,直到按Esc键退出替换模式。
(6)可视化模式
命令模式下按v就可以进入可视模式,我们在前面讲的复制粘贴删除等等操作只能是按行、按单词或者按字母操作,在可视模式下,我们可以通过选中来操作自己需要的任意个字符。可视模式的作用相当于Windows下,你按住鼠标左键并拖动,这样一个选中功能,然后在对选中的内容进行操作。
命令 | 作用 |
v | 命令模式下按v进入可视模式,通过移动光标来选中内容 |
y | 复制 |
d | 删除(剪切) |
p | 在光标位置后面粘贴 |
P (shift+p) | 在光标位置前面粘贴 |
操作演示:
按下v的时候就相当于按下了鼠标的左键,通过方向键移动光标就相当于移动鼠标来选中内容,然后对选中的内容操作。
首先在命令模式下按一下v(按完就松开,不用像鼠标一样一直按着),然后按左键和下键选中几行内容
等需要的内容全部被选中后,按y进行复制,然后移动光标到需要粘贴的位置,按p
复制完成,如果需要再次操作,在按一下v,然后进行上面的操作。