引入
只要涉及Linux环境下的编程就离不开vim这个文本编辑工具,现在就将一些常用的vim操作和命令汇总一下
vim的工作模式
要想输入vim命令首先就要知道当前的文本编辑模式是啥,vim一般有6种工作模式:
- 普通模式:使用vim打开文件的默认模式(也叫命令模式,允许用户通过各种命令浏览代码、滚屏等操作,毕竟使用vim是可以不考虑鼠标的)
- 插入模式(编辑模式):在普通模式下按
i
、a
、o
就进入到了编辑状态了 - 命令行模式:在普通模式下输入冒号
:
,就进入到了命令行模式,一般如:q 不保存退出
、:wq 保存退出
就用的很多了 - 可视化模式:在普通模式下敲击前盘上的 v 键,就进入可视化模式,然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作。
- 替换模式:如果我们想修改某个字符,不需要先进入插入模式,删除,然后再输入新的字符,直接在普通模式下,敲击R键就可以直接替换。
- EX模式:类似于命令行模式,可以一次运行多个命令
vim的各种工作模式可以通过不同的键进行切换,用户统一使用ESC键返回到普通模式。
常用的命令
普通模式
命令 | 说明 |
---|---|
单个字符移动: | 我发现用鼠标和上下左右键也可以,更加符合我们的习惯 |
h | 向左移动 |
l | 向右移动 |
j | 向下移动 |
k | 向上移动 |
xh | 向左移动x个字符距离 |
单词移动: | |
w | 将光标移动到下一个单词的开头 |
b | 将光标移动到前一个单词的开头 |
e | 将光标移动到下一个单词的词末 |
E | 移动到单词的结尾(忽略标点符号) |
ge | 将光标移动到上一个单词的词末 |
2w | 指定移动的次数 |
行移动: | |
$ | 将光标移动到当前行的行尾 |
0 | 将光标移动到当前行的行首 |
^ | 将光标移动到当前行的第一个非空字符(行首和当前行非空字符不是一个位置) |
fx | 将光标移动到当前行的第一个字符x上 |
3fx | 将光标移动到航前行的第3个字符x上 |
tx | 将光标移动到目标字符x的前一个字符上a |
% | 用于符号间的移动,它会在一对()、[]、{}之间跳跃 |
文本块移动: | |
( | 移到当前句子的开头 |
) | 移到下一个句子的开头 |
{ | 移到当前一段的开头 |
} | 移到下一段的开头 |
[[ | 移到当前这一节的开头 |
]] | 移到下一节的开头 |
在屏幕中移动 | |
xG | 跳转到指定的第x行,G移动到文件按末尾,``(2次单引号)返回到跳转前的位置 |
gg | 移动到文件开头 |
x% | 移动到文件中间,就使用50% |
H | 移动到home |
M | 移动到屏幕中间 |
L | 移动到一屏末尾 |
ctrl+G | 查看当前的位置状态 |
插入模式
命令 | 说明 |
---|---|
文本插入操作 | |
i | 在当前光标的前面插入字符 |
a | 在当前光标的后面追加字符 |
o | 在当前光标的下一行行首插入字符 |
I | 在一行的开头添加文本 |
A | 在一行的结尾处添加文本 |
O | 在光标当前行的上一行插入文本 |
s | 删除当前光标处的字符并进入到插入模式 |
S | 删除光标所在处的行,并进入到插入模式 |
u | 撤销修改 |
字符删除 | |
x | 删除当前光标所在处的字符 |
X | 删除当前光标左边的字符 |
单词删除 | |
dw | 删除一个单词(从光标处到空格) |
daw | 无论光标在什么位置,删除光标所在的整个单词(包括空白字符) |
diw: | 删除整个单词文本,但是保留空格字符不删除 |
d2w | 删除从当前光标开始处的2个单词 |
d$ | 删除从光标到一行末尾的整个文本 |
d0 | 删除从光标到一行开头的所有单词 |
dl | 删除当前光标处的字符=x |
dh | 删除当前光标左边的字符=X |
行删除 | |
dd | 删除当前光标处的一整行=D |
命令模式
命令 | 说明 |
---|---|
:U | 恢复一整行原来的面貌(文件打开时的文本状态) |
:q | 若文件没有修改,直接退出 |
:q! | 文件已经被修改,放弃修改退出 |
:wq | 文件已经被修改,保存修改并退出 |
:e! | 放弃修改,重新回到文件打开时的状态 |
总结
vim命令有很多不需要背它,只要这个命令够你能正常编写文件就可以了~~