读书人

每日一Vim(12)ab与地图命令

发布时间: 2013-03-28 10:20:24 作者: rapoo

每日一Vim(12)ab与map命令

上图是执行:map命令显示的内容,我们暂且先不对图做说明,稍后再分析,map的功能比ab更强大,它不仅可以在insert 模式下定义宏(快捷键)而且可以normal,visual等模式下定义。其语法举例说明:(目标:在normal下用lv选中光标所在行)

:map lv 0v$ 

解析:0代表光标移至行首,v就是visual模式(该模式下可以通过hjkl来选中文本),$代表行尾,这样一来,在normal模式输入lv就能选中光标所在行了。

:map 列出所有已定义的映射命令:unmap lv 取消lv映射的命令:mapclear  清空所有映射

需要注意的是:

  1. 默认情况下,map命令是作用在normal模式下的
  2. 如果是想在virsual模式下新建某个命令的宏,可以使用:vmap,举例::vmap d <esc>dd就可以在virsual模式下把光标所在行删除。<esc>是纯粹的5个原始字符,意思是回到normal模式。
  3. 默认情况下,map是采用递归映射的,比如a映射成b,:map a b,然后c 又映射成了a,:map c a?,那么最终c也会自动映射成b,等同于:map c b,您现在可以试一试a,b,c的效果都是光标向前移动一个单词的长度。如果要不想使用递归,那么就要用:noremap
  4. 现在你应该能看明白上图的内容了吧,第一列就是宏会在哪中模式下生效,第二列代表快捷键了,第三列就是真正的命令序列集合了。您可以注意一下最后一个命令:(Shift+Insert)就是前些天分享过的,代表在normal模式下粘贴系统剪切板中的内容。

实用例子:
:map <C-a> <Esc>ggVG   实现类似于Widnows下的Ctrl+a全选 :inoremap ( ()<esc>i   插入模式下输入'('后自动补全')',同理还可以实现'[','{'

更多的例子就要靠您的创造力和想象力的,如果您能把基本的命令学好了,这些命令组合在一起使用的话,威力无比。
ps:"+y可以把光标所在行或选选中的字符copy到系统剪切板中。

转载请注明出处,谢谢合作。作者---zhijun

1 楼 shidan66 2013-03-22 不错~不过syso快捷键貌似不是main方法吧,呵呵 2 楼 isensen 2013-03-22 恩今天 讲的这个实用.就像把宏保存起来一样. 3 楼 isensen 2013-03-22 忘 了问一个问题, :mapclear 是清除所有吗? 这样的话.VIM预置的也会清除掉吗?还是说只清除用户自定义的.VIM 程序本身有区别用户自定义吗?感觉好像没有..没敢试 4 楼 lantian_123 2013-03-22 shidan66 写道不错~不过syso快捷键貌似不是main方法吧,呵呵
sorry ,写错了,eclipse中对应预设的快捷键应该是“main”。呵呵 5 楼 lantian_123 2013-03-22 isensen 写道忘 了问一个问题, :mapclear 是清除所有吗? 这样的话.VIM预置的也会清除掉吗?还是说只清除用户自定义的.VIM 程序本身有区别用户自定义吗?感觉好像没有..没敢试
嗯,是清除所有的,不过不要紧,清除只对当前的session有效,不影响其他的,另打开一个vim预设的还是存在的。

读书人网 >编程

热点推荐