接触了vim有一段时间了,但一直都是简单的用vim编写一些程序,和写一些文本。而且只是简单的了解一下操作,没有深入的学习。先总结一下基础的操作。
vim被称为神一样的编辑器,而emacs被称为神用的编辑器。
我的理解是当你用vim得心应手时,vim就会在你手里变成一个神器。而emacs是你要先称为神,然后才能得心应手,毕竟是用emacs要学点lisp,而lisp却不是那么好学的。
但其本质不过都是一个文本编辑器而已,所以看自己喜好了。只要自己用的舒服,做事高效就行。
学习vim可查看《vim教程》,输入vimtutor,则可查看教程,此文件是副本所以不用担心在此文件中操作会损坏。可用Ctrl+g查看文件的完全名称,所在行数,总行数,当前阅读的百分比,所在行数的列数。
知识一:模式介绍
vim有三个模式:编辑模式、一般模式、命令模式
当我们用vim打开一个文件时,进入的是一般模式,即阅读的模式。
当我们按下特定的字母时会进入编辑模式和命令模式。
进入编辑模式的按键有:I/i、A/a、S/s、O/o、C/cc、cE/ce。暂时先了解一下就行,下面会详细介绍这些键的不同。
从编辑模式退到一般模式的方法:ESC键、Ctrl+[
命令模式是输入:后接一些命令
命令模式和编辑模式之间不能转换,只能借助一般模式转换。
知识二:光标移动
在一般模式下可进行光标的移动,用方向键可移动,也可用特定的字母进行移动,这也是vim的特色之一。
有人会问这是什么特色?简直就是给自己找麻烦。其实不然,开始可能别扭,但时间久了,才会发现其强大的高效性。
k:向上移动
j:向下移动
h:向左移动
l:向右移动
以上字母均为小写。
简单的记忆:左右好记,左在左,右在右。上下的记忆可以按它们的临近关系,我们常说”上左下右“,而在此处你可记"上靠右下靠左",与我们的地图常识相反。若这样觉得记忆不好的话就死记吧,最主要的还是要多练。
w:光标每次移动一个单词,且位于单词首部。前面可加数字,即一次移动多个单词。
e:光标每次移动一个单词,且位于单词尾部。前面加数字,可一次移动多个。
0:移至行首
$:移至行尾
+:向下移动,且位于行首,若行不为空,则位于第一个字符处。
-:向上移动。
这两个相当于J、K。当唯一的区别,是当行不为空,则移动到第一个字符处。
其方向可记为:+是行数加,越加越大,可用:set nu查看行号。-则相反。
H:移至屏幕上方
M:移至屏幕中央
L:移至屏幕下方
以上字母均为大写。
gg:移至文件首行。
G:前面不加数字,则移至到文件尾行。加数字则移至数字指定的行
数字+回车键:向下一次移动数字指定的行数。
然后补充一下:
Ctrl+f:向下翻一页
Ctrl+b:向上翻一页
Ctrl+d:向下翻半页
Ctrl+u:向上翻半页
知识三:vim的退出和文本的存储
q:退出vim
!:强制
w:保存
x:保存并退出
ZZ(大写):若文件改动了,则保存退出,若未改动,则不保存退出。
这些命令可结合:
wq:保存退出,相当于x
q!:不保存退出
其顺序不能改变,即一定是wq而不是qw。
知识四:文本操作的命令
1.删除命令
x:删除光标所在的字符
X:删除光标前的字符。
数字+x:从光标开始向后删除数字指定个数的字符。
数字+X:从光标开始向前删除数字指定个数的字符。
dd:删除光标所在行
数字+dd:从光标所在行开始,向下删除数字指定的多少行
D:删除光标所在行的所在位置之后的所有字符。
数字+D:从光标所在位置开始,删除算上光标所在行的数字指定的多少行。
d+数字+G:删除指定行
dgg:删除光标所在行至文件首行的所有行
dG:删除光标所在行及其以后的所有行。
d0(零):删除光标所在位置至行首。
d$:删除光标所在位置至行尾。
y+数字+G:复制指定数字的行数至光标所在位置的所有行,不论光标是否在前在后。
yG:复制光标所在行至文件尾行。
2.复制命令
yy:复制光标所在行
数字+yy:复制光标所在行及其向下数字指定的多少行
dgg:复制光标所在行至文件首行的所有行
dG:复制光标所在行及其以后的所有行。
d0(零):复制光标所在位置至行首。
d$:复制光标所在位置至行尾。
3.粘贴
p:在光标所在行的下方粘贴
P:在光标所在行的上方粘贴
4.剪切
剪切就是删除和粘贴的结合,删除的内容会放在缓冲区中,在你未再次向缓冲区放东西(删除或复制)或未退出文件的编辑前,缓冲区的内容都不会改变。
那么剪切就是删除,粘贴。
5.替换命令
r+字符:光标所在位置的字符被替换成指定的字符。
R:在光标位置开始替换,直到键入ESC或Ctrl+[为止,替换结束。
r是单字符替换,R是多字符替换
在命令模式下的替换命令:
:s/旧字符/新字符:在光标所在行查找并替换第一个匹配到旧字符的字符,将其替换成新字符。在后面/g表示全部替换,此处全部指的是此行的全部,而不是文件的全部。
:%s/旧字符/新字符:表示替换文件的每一行第一个匹配到的字符,加后面/g表示文件中的全部都替换
6.其他的一些操作命令
J(大写):将光标所在行和其下行合并成一行
U(大写):撤销光标所在行的上一个操作
u(小写):撤销文件最近的操作,一直可撤销到刚打开文件的样子。
Ctrl+r:撤销”撤销命令“的操作,即复原操作
.(点):重复前一个操作。撤销和复原不算,即若删除操作后,执行撤销,则键入.(点)执行删除的操作,而非撤销,复原同理。还有一点要注意,若前一操作为添加,则执行.(点)则会添加之前添加的数据,而非操作。
知识五:进入插入模式命令之间的区别
进入编辑模式的按键有:I/i、A/a、S/s、O/o、C/cc、cE/ce。暂时先了解一下就行,下面会详细介绍这些键的不同。
i:在光标前开始插入
I(大写i):移至光标所在行的行首并开始插入。
A:将光标移至行尾并开始插入
a:将光标向后移动一位,并在前面插入。即在光标所在位置后插入。
S:删除光所在行,并在此行开始插入。
s:删除光标所在位置的字符并插入。
O:在光标所在行的上方插入
o:在光标所在行的下方插入
C/cc:与S相同,删除光所在行,并在此行开始插入。
cE/ce:删除光标所在位置至单词尾部,并插入。
c+数字+j/k:删除光标所在行再加上数字指定的行数,并插入。j表示向下,k表示向上。
c+数字+h/l(小写L):删除光标所在位置及其指定的字符并插入。h表示向左,l表示向右。
知识六:查找
在一般模式下,键入”/“则可进行查找。
/字符:表示光标处向下查找,第一个匹配”指定字符“的字符。
?字符:光标处向上查找,第一个匹配”指定字符“的字符。
若想继续查找下一个则按n。若想反方向查找则按N。
知识七:括号匹配
%:将光标放在任意一个括号处,键入%则会自动跳转到匹配的括号处,再次按%则又会回来。括号有[]、{}、()。
此命令用于调试程序时,十分有效。
知识八:跨文件读取和保存以及执行shell命令
要想在vim中执行shell命令,则键入“:!命令”即可
:r 文件名:将指定文件的内容读取到光标所在行的下一行。
:w 文件名:将编写的文件另存为一个文件中。
若指定文件存在,需要在w后加!表示强制,且会覆盖原文件内容.
行号,行号w 文件名:将制定行号间的数据另存为到指定文件中