个性化vim之映射(map,vmap)

map是一个映射命令,将常用的很长的命令映射到一个新的功能键上。


map的格式:
map <要映射键> <被映射的按键序列>,比如 map T :q!后,则在命令模式下按T并按回车,就会退出vim

vmap 和map类似,二者的区别在于前者用于所谓的Visual模式,后者用于通常的命令模式。


映射
:map <F2> ggvG
解除映射
:unmap <F2>
清除所有映射
:mapclear
在光标后面插入当前日期和时间
:map <F2> a<C-R>=strftime("%c")<CR><Esc>


在命令模式下,可以像下面这样使用map。
:map <要映射的键> <被映射的键>


更常用的方法是将映射写入~/.vimrc文件,这样一次映射,永久使用。

vim ~/.vimrc


在文件中加入如下映射:

//设置文件头,其中<Enter> = <CR>
map <F12> ggO/*<CR>*Copyright(c) 2005-2007 Shanghai LUCENT Telecommunication Corp.<CR>*<CR>*Authored by LUCENT ZJUJOE on:<Esc>:read !date <CR>kJ$a<CR>*<CR>* @desc:<CR>*<CR>* @history<CR>*/


//设置函数头
map <F<F9>> O/*<CR>*Copyright(c) 2005-2007 Shanghai LUCENT Telecommunication Corp.<CR>*<CR>*Authored by LUCENT ZJUJOE on:<Esc>:read !date <CR>kJ$a<CR>*<CR>*Funcion goal:<CR>*<CR>*Author:<CR>*<CR>*Input arguments:<CR>*<CR>*OutPut arguments:<CR>*/


让我们测试一下上面的映射, 新建一个cpp文件,输入如下代码:
#include <iostream> using namespace std; int max( int a, int b) { return a > b ? a : b; } int main(int argc, char* argv[]) { return 0; }

按下F12源文件的顶部就会出现相应的声明了,在将光标移到 int max( int a, int b)这一行,按下F9,效果如下所示:
/* *Copyright(c) 2005-2007 Shanghai LUCENT Telecommunication Corp. * *Authored by LUCENT ZJUJOE on: 2012年 02月 25日 星期六 21:34:50 CST * * @desc: * * @history */ #include <iostream> using namespace std; /* *Copyright(c) 2005-2007 Shanghai LUCENT Telecommunication Corp. * *Authored by LUCENT ZJUJOE on: 2012年 02月 25日 星期六 21:34:54 CST * *Funcion goal: * *Author: * *Input arguments: * *OutPut arguments: */ int max( int a, int b) { return a > b ? a : b; } int main(int argc, char* argv[]) { return 0; }
注意事项:<>是一种特殊的用法(参考资料:http://vimcdoc.sourceforge.net/doc/intro.html#%3C%3E)

例子中经常使用 <> 记法。有时这只是用来说明你需要输入什么,但经常它需要照本义键
入,例如在 ":map" 命令里。规则是:
1. 任何可显示的字符都可以直接键入,反斜杠和 '<' 除外。
2. 反斜杠用两个反斜杠表示 "\\",或者用 "<Bslash>"。
3. 真正的 '<' 用 "\<" 或 "<lt>" 表示。只有在没有歧义的时候才可以直接用 '<'
表示。
4. "<key>" 的意思是特殊键。其含义上面的表格都有介绍,下面是一些例子:
<Esc> Escape 键
<C-G> CTRL-G
<Up> 光标上移键
<C-LeftMouse> Control+鼠标左键点击
<S-F11> Shift+功能键 11
<Space> 插入空格
<Tab> 插入Tab

<CR> 等于<Enter>


参考资料:http://blog.youkuaiyun.com/zjujoe/article/details/2642461

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值