我在CentOS系统下是直接敲vi的,如果敲vim会提示:
-bash: vim: command not found
所以,一直我都以为我用的是vi,是不同于vim的。今天突然发现这个系统里的vi就是vim。因为如果我直接敲vi,会得到下面这样的结果:
~ VIM - Vi IMproved ~ ~ version 7.4.160 ~ by Bram Moolenaar et al. ~ Modified by <bugzilla@redhat.com> ~ Vim is open source and freely distributable ~ ~ Help poor children in Uganda! ~ type :help iccf<Enter> for information ~ ~ type :q<Enter> to exit ~ type :help<Enter> or <F1> for on-line help ~ type :help version7<Enter> for version info
所以,这个操作系统里vi应该是做成vim的软连接了。
vim有两种模式,插入模式(insert mode)和命令模式(command mode)。按i键进入插入模式,按ESC键进入命令模式。
命令模式下有以下比较常用的操作:
j:光标下移一行;
k:光标上移一行;
h:光标左移一行;
l:光标右移一行;
x:删除不想要的字符(删除光标所在处的字符);
u:撤销上一操作(undo the last operation);
U:删除整行?;
Ctrl+r:恢复最近撤销的操作;
i:在光标前插入字符;
I:在行首插入;
A:将光标置于行末,并进入插入模式,可以直接开始输入文本了(换句话说就是在行末插入字符);
a:将光标置于当前位置的后面一个位置,并进入插入模式(换句话说就是在当前光标所在位置的后面插入字符);
O:在当前行的上面另起一行,并进入插入模式;
o:在当前行的下面另起一行,并进入插入模式;
:q!:退出编辑器,不保留任何修改;
:e!:放弃更改,然后相当于重新打开;
:wq:保存修改并退出编辑器;
0(数字0):移动到一行的开头;
^:移动到行首(跟数字0效果一样);
$:移动到行末;
3$:移动到3行后的行末;
-:移动到上一行的行首;
dd:删除当前行;
D:删除从当前光标所在位置(包括当前光标所在位置)到行末的所有内容;
p:将上一次删除的文本置于当前光标所在处的后面;
r:替换当前字符(比如re,会将光标所在处的字符替换为字母e);
ce:删除当前光标所在单词的位置开始(包含光标所在处的字符)到单词的末尾(包括单词末尾的字符)间的所有字符(比如,如果你将光标置于“this is a very good day”中的单词very中的字母e上,然后敲ce,会删掉ery,句子会变成“this is a v good day”),然后会自动进入插入模式;
G:将光标移动到文件末尾;
数字+G:将光标移动到指定行第一个非空(空格、tab锁进等)字符上;
gg:将光标移动到文件开头;
参考:
- https://coderwall.com/p/adv71w/basic-vim-commands-for-getting-started