本人在之前的文章收看世界杯并快记常用Vim命令里已经介绍了一些基本的Vim命令。本篇将采用问答的方式对其中部分命令进行进阶学习,内容主要参考自《Vim实用技巧》。
问与答
.
命令会重复上一次修改,那么修改指的是什么?
.
命令用科克来代表,圆圆的眼睛也像极了点号的形状。
注:图片来自网络
这里的修改指的是:<切入Insert模式的按键操作>
+ <Insert模式内的修改操作>
+ <esc>
。
也就是说,.
是Normal模式下的命令。
s
命令和x
命令的区别是什么?
按照世界杯的表现来说,很像克洛泽和戈麦斯的关系,克洛泽除了戈麦斯的弄能,还拥有切入Insert模式的能力,也就是s = x + <切入Insert模式的操作>。
f
的重复操作是什么?
下一个威廉是;
,上一个威廉是,
。需要注意的是,这两个命令都是行内有效。
cw
和dw
的区别是什么?
类似s
命令和x
命令的区别,cw
比dw
多一个切入Insert模式的操作,除此之外,dw
会删除单个字词后面的空格。阿尔巴防守尚可,进攻时切入对方禁区能力亦佳。
这里如果w
换成e
,两者删除的效果相同,前者仍然会进入Insert模式,后者停留在Normal模式。单词的反向删除是将w
换成b
,此时删除的部分将不包含光标所在的位置。
cw
和dw
如果要删除完整的单词该怎么做?
在这两个命令中间添加a
,两者都会删除单词后面的空格。和上一条不一样的是,这里w
不能换成e
。如果要删除整个段落,可以将w
换成p
。
如何简单的给数字进行加操作或者减操作?
<数字><C-a>
用来进行加操作,<数字><C-x>
用来进行减操作,光标并非一定要在数字上,当光标不在数字上,它会正向对最近的一个数字进行操作。
盛世美颜谨慎出场?
《Vim实用技巧》提到:能用重复就别用次数。
d3w和3dw效果一样(这里的次数3用来泛指),迭戈科斯塔只在必须时使用。
如何一次将某单词全部字母大写或者小写?
操作符g
和动作命令
组合可以形成一个操作,这里g~aw
可以在大小写转换中切换,gUaw
用来将单词转换成大写,guaw
将单词转换成小写。它们都是一个操作,可以用.
来进行重复操作。
金咕咕(gugU)用来切换大小写。
如何将对单词的操作用于行?
操作符通常连续调用两次会把对单词的操作作用于行,但是这里gUgU
可以简化为gUU
。
除了<esc>
,还有什么方式可以将Insert模式切换回Normal模式?
可以使用Vim默认提供的<C-[>
,也可以在.vimrc中进行修改。
Insert-Normal模式是什么鬼?
在该模式下,用户可以执行一次Normal模式的命令,然后界面又切换回Insert模式。例如在该模式下,键下u
不会是在文本中输入u
字符。进入该模式的方法是:在Insert模式下按<C-o>
。
如何在Insert模式进行单词自动补全?
在该模式下键入<C-p>
即可。
Insert模式如何粘贴寄存器文本?
首先是复制一块内容,采用y
+ t
+ “截止位置(不包含该位置)”,例如有一行文字:“Cgrw, hello!”,光标停留在“C”位,如果要复制Cgrw
,可以采用yt,
的组合。
然后进入Insert模式,按下<C-r>0
,此时文字粘贴到了期望处,这里0
是寄存器名字。
Insert模式如何简单的进行算数?
可以借助=
寄存器来实现,进入Insert模式按下<C-r>=
,然后回车。
如何在Insert模式输入特殊符号?
首先查询符号的字符编码,如果是三位以内,例如A
是065,那么直接输入<C-v>065
;如果字符编码超过三位,例如倒立的?
,则输入<C-v>u00bf
。
Replace模式是什么模式?
通过在Normal模式键入R
切换到Replace模式。Replace模式相比Insert模式可以直接在文本上替换,而非插入新的内容,除此之外和Insert模式基本相同,比如在该模式下,前述的Insert模式粘贴寄存器文本、进行算数以及输入特殊符号等方法都适用该模式。
如何通过Visual模式将某个单词修改成另一个单词?
这里提供两种方法:
- 首先将光标停留在待修改的单词上,键入
viw
(vaw
会选中单词正方向后的空格),然后键入c
,之前的字符就全部删除,于是可以输入新的字符; - 同样先键入
viw
,然后再键入<C-g>
,将Visual模式切换成Select模式,接下来无需键入c
,直接输入新的字符进行替换;
gv
和o
的作用是什么?
gv
用来重选上次Visual模式选定的文本范围,o
用来切换活动端,比如跳跃光标从最右跳到最左。
Visual模式下,怎么画一行分割线?
可以采用以下策略:
- 复制一行内容(什么内容都可以),通常为要画的分割线的上一行,采用的命令是
yyp
; - 键入大写
V
表示欲对行操作,然后键入r
表示替换,最后接上要替换的内容,整个命令为:Vr-
(-
为要替换的内容);
如何在长短不一的高亮块后添加文本?
相比收看世界杯并快记常用Vim命令一文中内马尔的操作,这里只需注意在进入Visual模式后,还需先添加一个$
,它可以到达每行文本的末尾。
小结
本文主要用于熟悉一些Vim常用的操作。