1.使用空格键做为Leader(热键) Leader是个非常有创意的设计,通过不同按键的顺序操作可以执行各种命令,而不需要通过组合键的方式,自从使用Leader之后我就很少使用ctrl-xxx的这种组合键。 长久以来我都是使用,做为Leader,直到我意识到我可以使用键盘上更加好用的捷按键:空格键(Space)。 Shell 1 letmapleader=\Space 这个完全颠覆了我的Vim操作效率,我现在可以使用双手任何一个大拇指进行操作,同时其它手指可以保持在键盘的主键区。因为Leader相当容易使用,所以我就将各种常用的操作进行了Leader映射。 2.将最常用的操作映射到Leader操作我首先识别出最经常使用的操作,并将它们映射到Leader操作,我经常是这么使用的: 使用Spaceo创建一个新文件: Shell 1 nnoremapLeadero:CtrlPCR 使用Spacew保存文件(比:wEnter明显快得多): Shell 1 nnoremapLeaderw:wCR 使用Spacep与Spacey进行剪切板拷贝、粘贴: Shell 1 2 6 vmapLeadery+y vmapLeaderd+d nmapLeaderp+p nmapLeaderP+P vmapLeaderp+p vmapLeaderP+P 使用SpaceSpace进入Vim编辑模式: Shell 1 nmapLeaderLeaderV 我强烈建议你找到最常用的操作并将其映射到Leader。 .使用区域扩展功能为插件terryma/vim-expand-region做按键映射: Shell 1 2 vmapvPlug(expand_region_expand) vmapC-vPlug(expand_region_shrink) 这样我就可以: 按一次v选择一个字符。 再按一次v自动扩展选择一个单词。 再按一次v自动扩展选择一段代码。 … 以此类推… 按C-v回退上一次的选择操作。 虽然vvv貌似比vp的操作更慢,但使用这种方式时,我压根就不需要考虑当前要选择哪些以及应该使用哪个组合键进行操作。 这么一来v把诸如viw,vaw,vi,va,vi(,va(,vi[,va[,vi{,va{,vip,vap,vit,vat,…这些操作都给替代了,这下你懂了吧。 .找到文本查找操作工具我一直都不喜欢Vim中的查找和替换操作,直到我在Vimwiki找到了以下的配置: Shell 1 2 vnoremapsilents//eC-r=selection==exclusive?+1:CRCR :C-ucallhistdel(search,-1)Barlet /=histget(search,-1)CRgvomaps:normalvsCR 这个直接替代了我常用的操作序列: 使用/something查找 使用cs替换第一个,然后按Esc键 使用n.n.n.n.n.查找以及替换余下匹配项。 PS:也可以考虑使用Vim7.提供的cgn命令。 .尝试更多更棒的键盘映射我每天都在使用这几个快捷操作键,估计这已经帮我省出了几个月时间。 自动跳转到粘贴文本的最后使用ppppp进行多行多次粘贴操作 Shell 1 2 vnoremapsilentyy`] vnoremapsilentpp`] nnoremapsilentpp`] 避免缓冲区的内容在粘贴后被覆盖通过以下的配置可以避免缓冲区的内容被删除的文本内容所覆盖(放到~/.vimrc文件的最后) Shell 1 2 6 7 8 9 10 vpdoesntreplacepastebuffer function!RestoreRegister() let =s:restore_regreturn endfunction function!s:Repl() lets:restore_reg= returnp =RestoreRegister()crendfunction vmapsilentexprpsidRepl() 译注:这里没有Title,估计是作者漏了,加了个。在文件中快速跳转通过12Enter跳转到第12行(12G我觉得不称手) 按Enter跳到行文件末尾。 按Backspace回到文件开始。 Shell 1 2 nnoremapCRG nnoremapBSgg 快速选择粘贴的文本Shell 1 noremapgV`[v`] 关闭无聊的窗口提示Shell 1 mapq::q 6.提高单元测试执行效率我用vim-vroom插件以及相应的tmux配置来进行我的测试。 vim-room缺省使用Leaderr执行测试,由于我已将Leader映射为Space,因此我通过Spacer来运行测试工具。 由于测试在tmux的单独窗口运行,因此我可以边看测试进展共修订我的代码。 7.使用Ctrl-Z返回Vim我经常要在shell下执行一些命令,我通过Ctrl-Z挂起Vim,在完成shell命令执行之后,通过Enter重新回到Vim。 使用fg退回Vim让我觉得难受,我只想通过Ctrl-Z在Vim与Shell之间切换,不过我没有找到解决方法,因此我写了个在ZSH下完美运行的脚本: Shell 1 2 6 7 8 9 10 11 fancy-ctrl-z(){ if[[$#BUFFER-eq0]];then BUFFER=fg zleaccept-line else zlepush-input zleclear-screen fi } zle-Nfancy-ctrl-z bindkey^Zfancy-ctrl-z 如果你将上述代码放到~/.zshrc文件中,你就可以在shell与Vim之间快速切换,你真值得去试试看。 8.正确地配置Tmux在OSX下使用Tmux和Vim工具非常不方便,因为: 系统的剪切板处理功能很弱 Vim与Tmux的窗口切换操作不同 Tmux下执行命令的热键不同(使用C-b) 在Tmux中拷贝模式超难用 我花了非常多的时间去修正上述配置,具体可以见以下: 配置使用C-Space作为tmux的热键有些人习惯使用C-a作为热键,不过我是用这个热键回到行首,所以我这里就不细说了。使用C-Space的方式会更好用,原因我一会再说: Shell 1 2 unbindC-b set-gprefixC-Space bindSpacesend-prefix 使用Space进入拷贝模式设想一下,使用C-SpaceSpace就可以直接进入Tmux的拷贝模式有多方便。 Shell 1 2 bindSpacecopy-mode bindC-Spacecopy-mode 使用y和reattach-to-user-namespace(基于OSX)在使用系统的剪切板之前,你需要先执行brewinstallreattach-to-user-namespace Shell 1 2 bind-key-tvi-copyy copy-pipereattach-to-user-namespacepbcopy 使用vim-tmux-navigator你要使用C-h,C-j,C-k,C-l这几个快捷键在vim和tmux的各种窗口内快速切换。 同时我建议使用C-Spacel和C-Spacej的映射配置来进行Tmux窗口分割操作,这个绝对比用C-Space%和C-Space 来得快: Shell 1 2 bindjsplit-window-v bindC-jsplit-window-v bindlsplit-window-h bindC-lsplit-window-h 参看我的tmux.conf文件,这里有更多的干货。 9.提高Git工程中Ctrl-P的执行效率将下面的内容添加到你的.vimrc文件中(配置使用Ctrl-P来使用git或silver查找工具来自动补全): Shell 1 2 6 7 8 9 10 11 letg:ctrlp_use_caching=0 ifexecutable(ag) setgrepprg=ag--nogroup--nocolor letg:ctrlp_user_北京哪里医院治疗白癜风比较好北京什么医院治疗白癜风最好
|