第四章 个人优化vim第一步 :快捷键修改

ubuntu默认的vim确实不好用,但它最强大的地方在于可修改的配置文件,以及专门为vim所开发的vimscript脚本语言。

后者暂时不用学习,先来研究一下配置文件。

vimrc 是控制 vim 行为的配置文件,位于 ~/.vimrc,不论 vim 窗口外观、显示字体,还是操作方式、快捷键、插件属性均可通过编辑该配置文件将 vim 调教成最适合你的编辑器。



                                   第一步     快捷键修改


把vim自带的快捷键,修改成自己喜欢的按键,就像在玩游戏时做的那样,以提升效率。
想要修改快捷键,必须了解vim的键映射map,它有五种前缀,对应着vim中的五种模式:

nore前缀: 非递归

n前缀:    在普通模式下生效

v前缀:    在可视模式下生效

i前缀:     在插入模式下生效

c前缀:    在EX命令模式下生效

通过不同的前缀,就能明确告诉vim,我们自定义的快捷键在哪种模式下生效。


除此之外,还要配合键表:


<k0>-<k9>       小键盘数字0到9


<S-x>                大写S配合x,意味着shift+x组合键


<C-x>               大写C配合x,意味着ctrl+x组合键


<A-x>               大写A配合x,意味着alt+x组合键


<ESC>               ESC键


<BS>                backspace退格键


<CR>                ENTER回车键


<Space>           空格键


<Shift>             shift键

<Ctrl>               ctrl键

<Alt>                alt键

<F1>-<F12>    F1到F12功能键


尽管能映射的键表非常丰富,但因为某些历史原因,ALT几乎无法映射。


同时CTRL键被linux系统频繁使用,F1到F12功能键某些也被vim占用。


比如F1是帮助,这些都不适合用来映射,以免造成快捷键冲突。


~/.vimrc配置文件属于文本文件,我们用vim打开,把以下的修改写入vimrc,完成后千万不要忘记保存退出。



1.  光标移动映射  


 无数的初学者都被vim反人类的h,j,k,l光标移动折磨,所以个人把它修改成更符合习惯的j,k,l,i

 

i本身属于插入模式开关,映射后被占用了,以后只能使用a来切换插入模式。

             

"映射上下左右的光标移动
nnoremap  i   k
nnoremap  k  j
nnoremap  j   h

 使用前缀n,表明在普通模式下生效, "写法功能和//一样,是注释。

 使用前缀nore,表明不递归,否则按下i就等于按下k,就等于按下j,最后结果乱套。


vim自带的行光标移动也不方便,移动到行首^,需要按shift+6,移动到行尾$,需要按shift+4。


个人也把它们进行映射:


"行光标移动
nmap lh   ^
nmap le   $
连续按下lh就表明移动到行首,lh可以理解成line_head,le理解成line_end。


具体用什么样的快捷键映射不重要,重要的是能不能方便自己使用与记忆。



2.   功能键映射


vim的映射不仅能提供单个按键,也能提供一系列按键操作映射,类似于宏操作。


这时候可能许多初学者跟我一样,迫切的想把保存文件功能,映射成Windows下的ctrl+s:

imap <C+s> <ESC>:w<CR>a 

用imap表明插入模式下有效  , 后面的<ESC>:w <CR>a 作为整体看待。

事实上这样映射后,按ctrl+s会发现vim“定住”了,按什么键屏幕上都没反映,最后只能强行关闭。

为什么呢?这是因为ctrl+x的组合键,不少被linux系统占用了,ctrl+s是暂停功能。

而操作系统的优先级更高,当我们按下ctrl+s的时候,它会首先执行操作系统的功能。要退出ctrl+s暂停状态,按下ctrl+q恢复。

所以前面说,尽管键表映射非常丰富,但实际上并非不受限制的随意映射。

我们改换下思路,可以这样做:

"文件保存与退出
nmap fw     :w<CR>
nmap fq     :q<CR>
nmap fwq    :wq<CR>
在普通模式,快速按下fw,就相当于输入了:w<CR>,fw可以理解成file_write。

可惜alt键无法映射,否则使用alt+w,alt+q也是很不错的选择。

我们可能需要频繁变更 .vimrc,要让变更内容生效,一般的做法是先保存 .vimrc 再重启 vim,太繁琐了。

增加如下设置,可以实现在保存 .vimrc 时自动重启加载它。

" 让配置变更立即生效

autocmd BufWritePost $MYVIMRC source $MYVIMRC


3. <leader>前缀键

  vim自带的快捷键很多,再加上各类插件提供的快捷键,我们自己定义的快捷键,这些混合在一起,非常容易引起按键的冲突,为了环境该问题,vim引入了<leader>前缀键。

前缀键的意思就是,在各种快捷键的最前面加上<leader>,避免了二义性。

比如我们定义<leader>是#号:

let mapleader="#"
配合键盘映射:

nmap <leader>w    :w<CR>
在普通模式按下#w时,就完成了文件的保存工作。

选用的<leader>应该容易输入,不会和现有快捷键符号发生冲突,造成二义性。

发挥想象,实现简单的模版:

let mapleader="\"
imap <leader>if   if () <CR>{};
imap <leader>main  int main()<CR>{<CR> return 0;<CR>}
选用c语言中较少使用到的键【\】作为leader,配合映射的宏操作能力,适当位置加上<CR>回车,实现插入模式中的简单模版。

当然,最好还是把所有映射都设定为普通模式下有效,尽管在完成结果上没有什么区别,但违背了vim设定几种模式的本意,插入模式仅用来输入字符,功能都放进普通模式或者EX命令模式。

  • 17
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值