熟悉几个命令,脱离鼠标依赖,VIM技能升级
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了熟悉几个命令,脱离鼠标依赖,VIM技能升级相关的知识,希望对你有一定的参考价值。
如果你刚开始使用VIM,运行过vimtutor几次,是否会觉得好VIM实在太太太笨拙,简直不能理解为何它还有那么多簇拥,甚至visual studio还提供vim的插件。那其实是因为你还没有摆脱鼠标的依赖,对vim强大的命令而言,你所掌握的还是仅仅是最皮毛的而已。
如果你是初学者,可以先阅读 VIM 初学与进阶的操练及个人体验
如下介绍的几个命令(命令组合)将囊括90%的工作需求,你会发现,脱离了鼠标,其实也不是那么笨拙的一件事,而你的操作,似乎更快了有没有?
第一步:牢记光标移动命令。
1.1 假设光标当前位置在i(nt)。如何使得光标移动到|所指示的位置?
| | | || | | |
//int length = strlen(other.m_data);
1.2 光标达到行末。如何使得光标反向移动到|所指示的位置?
//int length = strlen(other.m_data);
| |
命令提示:
0 ^ 2w et= f. g_ $
| | | || | | |
//int length = strlen(other.m_data);
| |
T= F.
0 : 到行头
^ : 到行头第一个非blank字符
$ : 到行尾
g_ : 到行尾最后一个非blank字符
w : 按单词移动,到下一个单词开头 (提示: N<command> 重复命令N次)
e : 按单词移动,到下一个单词结尾
f<char>: 到下一个<char>字符处
t<char>: 到下一个<char>字符前一个字符处
F/T 与f/t相同,只是反向操作。
1.3 假设光标在TODO注释行,怎样到第一行?最后一行?第N行?
你在其他位置,怎样快速跳到TODO处, 下一个TODO,上一个TODO?
String & String::operate =(const String &other) {
//check if it is self-assignment
if(this == &other)
return *this;
//TODO: other things for copy
//TODO: next
}
命令提示:
gg : 到第一行
G :到最后一行
NG :到第N行 (提示: :set nu 显示行号 :set nu! 不显示行号)
/pattern: 搜索pattern的字符串 (如果有多个匹配 n 到下一个 N 到上一个)
重要提示:
很多命令可以和光标移动连用,实现对一块区域的一起操作。
<start_position><command><end_position>
例如,
0y$: 到行头,开始拷贝到本行最后一个字符。
ye: 从当前位置拷贝到本单词最后一个字符。
dt): 从当前位置删除所有内容直到遇到)。
第二步:熟悉区域选择。
2.1 <action>a<object> 和 <action>i<object> 区域操作
action 可以是任何命令,例如d(删除),y(拷贝),v(以可视模式选择)
object 可以是w(单词),s(句子),p(段落),或者特别字符如:),}等。
Lesson 2.1 Operation on block
* <operation>a<word> <operation>i<word> : operation on a block, a word/sentence/paragraph/ or anything between ",‘,),},]
1. Move the cursor to below line inside helloworld.
2. Try the commands one by one and see what‘s the highlighted text.
vaw viw (w stands for word)
vas vis (sentence)
vap vip (paragraph)
va" vi" ("")
va] vi] ([])
3. Move the cursor back into helloword, using d(elete) and y(ank) replace v in <operation> and see what happens.
---> function( map["helloworld"] ){
---> //this is a comment
---> }
2.2 假设你有如下function,你打算全部注释掉,怎样操作?
你打算全部加上一个缩进,怎样操作?
function( map["helloworld"] ){
var a = 10;
//this is a comment
return;
}
命令提示:
^ <Ctrl-v> <Ctrl-d> I// [ESC] [ESC]
1. Move your curser to the beginning of the function. ^
2. Ctrl+v : start block selection.
3. Ctrl+d : move your cursor to select the whole function.
4. I// [ESC] : Insert ‘//‘, enter ESC to make it affects to each line
^ <Ctrl-v> <Ctrl-d>
第三步:自动提示 Ctrl +p 或者 Ctrl + n
第四步:分屏 :split 和 :vsplit
Lesson 4 Split the window
1. :split or :vsplit : split the window ^
2. Ctrl+w <dir> : dir is direction, can be hjkl or <- | | ->
v
to select working window
3. Ctrl+w q : quit the split mode
4. Ctrl+w_ or Ctrl+w| : maximize the window
5. Ctrl+w+ or Ctrl+w- : increase or decrease the size of the window
怎么样,以上命令都熟悉了后,是不是GUI编辑器里你所常用的90%的操作都可轻松在vim里面轻易实现?
(以上可以看作advancedvim的解释,advancedvim是一份模仿vimtutor所创建的进阶练习教程,可以在这里下载)
本文出自 “宠辱不惊 闲庭信步” 博客,请务必保留此出处http://xiaoqingandtech.blog.51cto.com/11792937/1795717
以上是关于熟悉几个命令,脱离鼠标依赖,VIM技能升级的主要内容,如果未能解决你的问题,请参考以下文章