文章目录
1. 替换括号(),引号"",方括号[],大括号{}里面的内容
光标移动到括号内部分,然后直接
ci(
括号里面的内容就会删除,并且进入插入模式,键入你想替换的内容
2. hjkl光标对应的方向
h,l分别位于最左以及最右,所以分别代表光标左移以及光标右移
j类似于一个向下的箭头,因此可以记忆为向下移动;剩下的k是光标向上移动
3. 如何禁用掉光标键,强制使用hjkl
"光标映射关闭
noremap <Up> <Nop>
noremap <Down> <Nop>
noremap <Left> <Nop>
noremap <Right> <Nop>
4. 实际行与屏幕行移动
因为窗口大小的原因,当文本行较长时,超过窗口长度的文本行会被回绕显示,形成屏幕行。
j, k, 0, ^, $ 都是对实际行进行操作,分别表示
j 向下移动一个实际行
k 向上移动一个实际行
0 移动到实际行行首
^ 移动到实际行第一个非空白字符
$ 移动到实际行行尾
当在操作符前面加入g前缀的话,可以转变为对屏幕行进行移动
5. 基于单词的移动
w 正向移动到下一个单词的开头 (foward)
b 反向移动到当前单词/上一个单词的开头 (backward)
e 正向移动到当前单词/下一个单词的结尾
ge 反向移动到上一个单词的结尾
6. 单词与字串的区别
单词由字母、数字下划线或其他非空字符序列组成,以空白字符分隔
字串由非空空白序列组成,字串之间以空白字符分隔
e.g. we’re going too slow
该文本行,包含10个单词(句号以及分号也算一个单词),5个字串
基于单词的移动w,b,e,ge,分别变为大写形式W,B,E,gE就变为了基于字串的移动。
7. 查找字符
f{char} 正向移动到下一个{char}的所在之处
F{char} 反向移动到上一个{char}的所在之处
t{char} 正向移动到下一个{char}所在之处的前一个字符上
T{char} 反向移动到上一个{char}所在之处的后一个字符上
; 重复上次字符查找命令
, 反转方向查找上次的字符查找命令
注意使用字符查找命令的时候,尽量选择出现频率比较低的字母作为目标字符。
8. 查找单词
/单词
可以结合可视模式以及d{motion}操作符,来进行选定区域的删除。
9. 用精确的文本对象选择选区
文本对象允许我们操作括号,被引用的文本,XML标签以及其他文本中的常见结构
进入可视模式,只用光标位于选区就行
Vim的文本对象由两个字符组成,第一字符永远是i或者a,以i开头往往会选择分隔符内部的文本,而以a开头往往选择包含分隔符在内的整个文本,可以理解为inside和around
a) 一对圆括号
i) 圆括号内部
同理对于] } > " '也是一样的
10. 用文本对象执行操作
上面可视模式下,可以选择文本对象区域,如果结合进motion操作,则可以使之更加强大
常见的包括 d{motion}, c{motion}, y{motion}
即motion操作结合上面的文本选区定位,可以对括号,引号等内容进行删除,修改以及复制
比如 ci" 可以解读为修改引号内部的内容
yi) 可以解读为复制括号内不的内容
da) 可以解读为删除包括括号在内的内容
11. 删除周边,修改内部
Vim的文本对象分为两类,一种是操作分隔符的文本对象,如i), i", i>等
另一类用于操作文本块,如单词,句子以及段落
iw 当前单词
aw 当前单词及一个空格
iW 当前子串
aW 当前字串及一个空格
is 当前句子
as 当前句子及一个空格
ip 当前段落
ap 当前段落及一个空行
记住i表示inside而a表示around就行
在与motion指令结合的过程中,往往d{motion}与aw,as,ap相结合
而c{motion}往往与iw,is,ip相结合,效果更好。(因为删除,往往会把空格一并删掉,否则会有两个连在一起的空格,而修改,往往想要保留原来的空格)
12. 其他删除命令
x 删除当前光标下的字符
dw 删除光标之后的单词剩余部分
d$ 删除光标之后的该行剩余部分
dd 删除当前行
c与d类似,区别在于完成删除操作后进入INSERT MODE,cc表示删除该行并进入插入模式
控制多行整体左移或者右移
:set shiftwidth=4 设置移动的步长,以空格为单位
使用:m,n<或:m,n> 左移或者右移,m是起始行,n是结束行 (:set number)可以显示行号
翻页
ctrl f forward翻整页
ctrl b backward翻整页
常用快捷键
o 新建一行并且插入
VIM多行注释与取消注释
https://blog.csdn.net/step_ma/article/details/76474864
参考:《Vim使用技巧》 Drew Neil著
.命令重复上次修改(注意是修改而不是操作)
a在当前光标后面添加字符
A在当前行的结尾添加内容,等同于$a
s把两个操作合并为一个
cw命令删除从光标开始到单词结尾间的字符,并进入插入模式
用一键移动,另一键执行 —“.范式"
daw命令 delete a word
dap命令 delete a paragraph
使用vim打造自己的python编辑器
https://www.cnblogs.com/linxiyue/p/7834817.html
vim设置tab为4个空格
https://blog.csdn.net/jiang1013nan/article/details/6298727
解决vim粘贴时格式混乱的问题
https://www.cnblogs.com/softwaretesting/archive/2011/09/20/2182177.html