Android中vim编辑器进阶的使用介绍
1. 移动指令
(1). h j k l, 方向键,记忆技巧:左右方向的是最左边和最右边的,j向下打了个勾,所以是向下键,剩下的k就是向上的键了。
(2). b, before,上一个单词(词首)
w, word,下一个单词(词首)
e, end,下一个单词(词尾)
注意这些小写的命令由字母,点,数字,下划线划分,还有这三个对应的大写字母的命令,B,W,E,类似的意思,但是是以空格区分移动的。总而言之,大写的移动范围要大。
(3). gg 首行
G 尾行,这两个命令用的较多
(4). n% 跳到n%的那行
(5). ^/0 到行首,我有时特别喜欢0,非常清晰简明的命令
$ 到行尾
(6). - 非空白行首向上移动
+ 非空白行首向下移动
(7). 行移动
代码如下:
nj //向下移动n行
nk //向上移动n行
nh //向左移动n列
nl //向有移动n列
n_ //向下移动n-1行,并光标移动到非空白行首
n- //向上移动n行,并光标移动到非空白行首
(8).通过查找字符移动
代码如下:
fx/Fx //向后/前查找字符x,行内跳转很有用
tx/Tx //向后/前查找字符x
//fx/Fx和tx/Tx的区别是用f光标停留在x上,用t光标停留在x的前面一个上
; //执行上次的fFtT
, //反方向执行fFtT,这两个有意思
2. 插入,替换,删除
(1). 学会a和i混用,不要只会用i进入插入模式,有时a进入插入模式后更方便,比如插入键盘右边的字母符号,用a的话,左右手配合起来效率更高。
(2). 学会I和A,快速进入行首和行尾插入模式,特定时刻用起来超爽!
这个很好理解,小写的i是光标前,大小的I是整行前面,o/O类似,画面很清晰。
(3). 学会o和O混用,不要只会用o进入下行编辑:
(3.1). 进入上行编辑,大写的O更快,而不是ko,双手比单手要快!
(3.2). 第一行前面想插入一行时,O比其他任何操作更直接和快速(不要先回到开头<+插入模式>+回车)
(4). r 快速替换字符,最大的好处�
��不许要切换模式,节省了大量时间,非常有用!(R,这个命令我用的少,有的时候用的特别混乱,就不说了)
s 删除光标后一个字符并进入插入模式。该命令提供了r命令+进入插入模式的快速实现方法。
(5). c 这个命令很强大,归类说明一下
代码如下:
cm //m指的是前面的移动命令,类似的有dm,ym,g?m,gum,gUm
//改变内容(m定义了改变范围)并进入插入模式,这里说的改变就是删除,举例说明:
cw //删除光标后一个单词并进入插入模式
cl //删除光标后一个字母并进入插入模式
(6). cc和S 修改当前行,意思是删除该行所有字符内容,但保留行首空格
D和C 删除该行光标后所有内容,无论字符还是空格,这个命令我用的很多:代码审核格式化代码时,删除空行的空格和行尾空格。
(7). 学会结合t这个命令
代码如下:
t //till的意思,这是我最喜欢的命令之一
dt" //行内删除直到","不删除
ct) //行内改变直到),)不删除
... ...
(8). 学会x和X混用,分别是向前删除和向后删除字符
(9). :rd 删除第r行
3.查找
代码如下:
# //向下一个查找结果
* //向下一个查找结果
//在#
:[range]s/{pattern}/{string}/[flag] [count]
(1). 全部替换
参数g实现全部替换,否则只替换一个
(1). 全部替换
参数g实现全部替换,否则只替换一个
:%s/{old-pattern}/new-text/g
(2). 行内替换
%代表所有行,去掉%表示当前行,只替换当前行
:s/{old-pattern}/new-text/g
(3). 指定行范围替换
对1到10行的结果替换
:1,10s/{old-pattern}/new-text/g
(4). 可视模式替换
如果你觉得数行数比较麻烦,可以使用可视模式,首先进入可视模式,然后选择行
列,最后输入:自动进入:'<,'>
后面加上s/{old-pattern}/new-text/g,则只替换选择区域的结果
:'<,'>s/{old-pattern}/new-text/g
(5). 整词替换,而不是部分匹配的单词
对单词匹配模式外包一个<和>
:s/\<blog\>/weibo/g //替换blog,但是cnblog,blogs则不会替换
(6). 多项替换
同时对多个匹配都替换成某一字符串
:%s/\(good\|nice\)/awesome/g //good和nice都将被替换成awesome
(7). 确认式替换
参数c让替换进行交互请求,需要你选择y,n,a,l,q
代码如下:
:s/{old-pattern}/new-text/gc
(8). 行首插入行号
把行首^替换成行号,可自定义具体形式
:%s/^/\=line(".")/g
10. 专题三:大小写转换
讲这个,主要是觉得这个问题挺有意思的。
代码如下:
~ //改变当前字符并自动切换到下一个字符,大写变小写,小写变大写,可以一直按
gum //转化为小写,m指移动命令,如:
//guw 光标后的一个单词小写化
//guG 光标所在行到最后行全部小写化
//gut= 光标后直到=之间的字符小写化
//罗嗦一句,gu还可以与可视模式结合,小写化所选区域
gUm //转化为大写,用法同上
11. 专题四:录制
这个其实很简单,但也是很强大的功能,单独柃出来说一下。
代码如下:
//为操作定义宏或者取别名
//这个命令的强大之处在于使重复复杂指令的简单化了
q //按下q开始录制
x //x是这个录制的寄存器,x可以是其它字符
dd //删除当前行,这个操作可以自定义其他复杂的操作
q //录制结束,现在dd这个操作被定义到了@x这个命令里了
12. 专题五:数字增减
这个小技巧还挺有用的,比如说定义了一系列static final变量,而且时不时要中间插入一些新的变量,这些值一般都是递增的,这时候这个技巧绝对比数字替换要方便。
代码如下:
//Normal模式下执行
Ctrl + a //自增1
Ctrl + x //自减1
13. 小结
工善其事,先利其器。
先想到这些,必然有很多遗漏,后面想到了什么,我会随时添加更新进来。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341