终于下定决心学vi命令
啦??
几点说明与建议:
- 学习 vim 并且其会成为你最后一个使用的文本编辑器。没有比这个更好的文本编辑器了,非常难学,但是却不可思议地好用。
- 我猜你的学习步骤是这样的:1.先存活;2.感觉良好;3.觉得更好,更强,更快;4.具备使用VIM的超能力。
- vim的学习曲线相当陡峭,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。So,先看看我这个简短的版本。
- vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim)。vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率。vi是“visual interface”的缩写,vim是vi IMproved(增强版的vi)。
Let’s go!
进入命令行模式
命令 | 作用 | |
---|
[Esc] | 退出编辑模式(editing mode)此处将键盘键解释执行为一条命令 | |
移动光标(命令行模式下)
命令 | 作用 | 你要的英语 |
---|
h | 左移光标 | move the cursor left |
l | 右移光标 | move the cursor right |
j | 下移光标 | move the cursor down |
k | 上移光标 | move the cursor up |
[Ctrl] f | 将光标向前移动一页 | move the cursor one page forward |
[Ctrl] b | 将光标向后移动一页 | move the cursor one page backward |
^ | 在当前行将光标移动到第一个非空字符处 | move cursor to the first non-white character in the current line |
$ | 将光标移动到当前行的结尾处 | move the cursor to the end of the current line |
G | 到文件的最后一行 | go to the last line in the file |
nG | 到文件的第n行 | go to line number n |
[Ctrl] G | 显示当前文件的名字和光标的位置 | display the name of the current file and the cursor position in it |
进入编辑模式(editing mode)
命令 | 作用 | 你要的英语 |
---|
i | 在光标前插入文本(并进入编辑模式) | insert new text before the cursor |
a | 在光标后添加文本(并进入编辑模式) | append new text after the cursor |
o (小写o) | 在当前行之后开启一个新行(并进入编辑模式) | start to edit a new line after the current one |
O (大写O) | 在当前行之前开启一个新行(并进入编辑模式) | start to edit a new line before the current one |
替换字符、某一行或单词
命令 | 作用 | 你要的英语 |
---|
r | 替换当前字符(不会进入编辑模式) | replace the current character (does not enter edit mode). |
s | 进入编辑模式用几个其他字符代替当前字符 | enter edit mode and substitute the current character by several ones |
cw | 进入编辑模式改变单词在光标之后的部分 | enter edit mode and change the word after the cursor |
C(大写) | 进入编辑模式改变当前行在光标之后的部分 | enter edit mode and Change the rest of the line after the cursor |
复制和粘贴
命令 | 作用 | 你要的英语 |
---|
yy | 复制当前行到 复制/粘贴缓存中 | copy (yank) the current line to the copy/paste buffer |
p(小写p) | 在当前行之后粘贴 复制/粘贴缓存中的内容 | paste the copy/paste buffer after the current line |
P(大写P) | 在当前行之前粘贴 复制/粘贴缓存中的内容 | Paste the copy/paste buffer before the current line |
删除字符、单词或某一行
注: 所有被删除的字符,单词或者某一行全都被复制到 复制/粘贴缓存中
命令 | 作用 | 你要的英语 |
---|
x | 删除在光标位置的字符 | |
dw | 删除当前单词光标之后的部分 | |
D | 删除当前行光标之后剩余的部分 | |
dd | 删除当前行 | |
重复上一个操作
命令 | 作用 | 你要的英语 |
---|
. | 重复上一个插入、替换或删除指令 | |
查找字符串
命令 | 作用 | 你要的英语 |
---|
/string | 找到光标之后第一次出现的字符串 | |
?string | 找到光标之前第一次出现的字符串 | |
n | 找到上次搜索中的下一个匹配项 | |
替换字符串
当然也可以手动完成,搜索和替换一次,然后使用n(下次出现)和 . (重复上次操作)
命令 | 作用 | 你要的英语 |
---|
n,ps/str1/str2/g | 在行号n和p之间,用str2替换str1 | |
1,$s/str1/str2/g | 在整个文件($:last line)中,用str2替换所有出现的str1 | |
多次应用命令 - 举例
命令 | 作用 | 你要的英语 |
---|
5j | 光标向下移动5行 | |
30dd | 删除30行 | |
4cw | 从光标位置修改4个单词 | |
1G | 光标到文件的第一行 | |
杂项
命令 | 作用 | 你要的英语 |
---|
[Ctrl] l | 重新绘制屏幕 | |
J | 将下一行添加到本行 | |
u | 取消上一次操作 | |
退出并保存
命令 | 作用 | 你要的英语 |
---|
ZZ | 保存当前文件并退出vi | |
:w | 写入(保存)到当前的文件中 | |
:w file | 写入(保存)到名为file的文件中 | |
:q! | 退出vi不保存任何修改 | |