常用vim指令


Vim是从 vi 发展出来的一个文本编辑器, 是一个程序开发工具,据说大佬们开发都只用vim,膜拜大佬🤓

vim其实可以按照你的思维,刚开始入门要记挺多键位的,感觉蛮难的,但用久了其实还是蛮舒服,譬如:d2w,就是delate 2 words等等。

你甚至可以使用vim扩展来完成星球大战、警察抓小偷等游戏。

1. 键位图

vi-vim-cheat-sheet-sch

vim分为三种主要模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)

2. 命令模式

用户刚刚启动 vi/vim,便进入了命令模式。

2.1. 光标移动

按键 动作
h 或 向左箭头键(←) 光标向 左 移动一个字符
j 或 向下箭头键(↓) 或<Enter> 光标向 下 移动一个字符
k 或 向上箭头键(↑) 光标向 上 移动一个字符
l 或 向右箭头键(→) 或 <space> 光标向 右 移动一个字符
w/W 移动到下一个单词,大写把标点符号当做单词的一部分
e/E 移动到词尾,大写把标点符号当做单词的一部分
b/B 移动到上一个单词,大写把标点符号当做单词的一部分
+ 光标移动到非空格符的下一行
- 光标移动到非空格符的上一行
G 移动到这个档案的最后一行
gg 移动到这个档案的第一行,相当于 1G
[Ctrl] + f 或 [Page Down] 屏幕『向下』移动一页
[Ctrl] + b 或 [Page Up] 屏幕『向上』移动一页
[Ctrl] + d 屏幕『向下』移动半页
[Ctrl] + u 屏幕『向上』移动半页
0 或功能键[Home] 数字『 0 』,移动到这一行的最前面字符处
$ 或功能键[End] 移动到这一行的最后面字符处
H 光标移动到这个屏幕的最上方那一行的第一个字符
M 光标移动到这个屏幕的中央那一行的第一个字符
L 光标移动到这个屏幕的最下方那一行的第一个字符

2.2. 复制、粘贴

按键 动作
y + 光标移动符 复制光标所在到移动范围的内容,例如:
yj:复制游标所在的那一整行
yG:复制光标所在到最后一行的内容
yw:复制光标所在到下一个单词的内容
yy 复制游标所在的那一行
p 在光标后粘贴,如果是单词级的粘贴,就会在光标后一位粘贴,如果是行级的粘贴,就会在光标下一行粘贴,下面的 P 粘贴时同理。
P 在光标前粘贴

2.3. 文本修改

按键 动作
x 向 后 删除一个字符 ,相当于[del]
X 向 前 删除一个字符,相当于 [backspace]
d + 光标移动符 删除光标所在到移动范围的内容,例如:
dj:删除游标所在的那一整行
dG:删除光标所在到最后一行的内容
dw:删除光标所在到下一个单词的内容
dd 删除游标所在的那一整行
J 将光标所在行与下一行的数据结合成同一行
r + 「字符」 替换光标处的单词为该字符
R 进入replace mode,直到接收到[Esc]按键信号退出该模式

2.4. 重复动作

按键 动作
u Undo,复原前一个动作。
[Ctrl] + r 重做上一个动作。
. 重复前一个动作。
n 向下重复前一个搜寻的动作。
N 向上重复前一个搜寻的动作。
「n」+ 命令符 「n」是数字,一般可以理解为重复n次该动作,例如:
10j 表示向下移动10行

2.5. 可视模式(vim only)

命令模式下按ctrl + v进入可视模式,这是一个比较特别地模式。

这个模式可以移动光标,选择一大片区域,然后可以对这片区域进行操作。

3. 输入模式

在命令模式下按下i就进入了输入模式。

在输入模式中,除了ESC键退出输入模式,其他按键和平常编辑模式是一样的。

3.1. 进入输入模式

按键 动作
i Insert,从当前光标前开始输入
I Insert,在目前所在行的第一个非空格符处开始输入
a Append,从当前光标后开始输入
A Append,从光标所在行的最后一个字符处开始输入
o 在当前光标所在的下一行处输入新的一行
O 在当前光标所在处的上一行输入新的一行
c + 光标移动符 可以理解先按d + 光标移动符,然后再按a
C 可以理解先按dd,然后再按a

4. 底线命令模式

在命令模式下按下:/?键位就进入了底线命令模式。

按ESC键退出底线命令模式。

4.1. 查找替换

语句 动作
/word 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word 向上搜索word字符串
:n1,n2 s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间将 word1 替换为 word2 。特别地,最后一行为$
:n1,n2 s#word1#word2#g 效果同上,这个主要用于替换/符号,例如每一行行首添加//,可以这样操作:
:1,$ s#^#//#g

4.2. 文件操作

按键 动作
:w [filename] 将编辑的数据写入到filename文件中,如果不加参数,默认是当前文件
:w! 若文件属性为『只读』时,强制写入该档案,前提是得有文件的写权限。
:q 或 ZQ 退出vim,如果未保存的内容,该指令执行失败
:q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
:wq 或 ZZ 储存后离开
:wq! 强制储存后离开
:r [filename] 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案。
:! command 不退出vim执行command指令,多用于调试脚本。

4.3. 其他功能

按键 动作
:set nu 显示行号
:set nonu 取消行号
:sv 当前界面打开文件,并呈纵向分布
:vs 当前界面打开文件,并呈横向分布
:set fileformat=unix 由Windows上传到linux的脚本文件,直接执行会报错,需要将其由dos文件格式改unix格式

5. 扩展的vim功能

当然,如果仅仅只有原生态的功能还不能让vim成为一个好用的ide,扩展功能才是vim的灵魂所在。

6. reference

菜鸟驿站的vim教程


评论
  目录