1。使用空格键作为Leader(热键)Leader是一个很有创意的设计。你可以通过不同的键的顺序操作来执行各种命令,而不需要使用组合键的方式,因为我用过Leader,所以很少使用ctrl-xxx这种组合键。作为Leader,我已经使用它很长时间了,直到我意识到我可以使用键盘上更有用的快捷键:空格键()。letmapleader="\"这完全颠覆了我的Vim运行效率。现在我可以用双手的任意拇指进行操作,而其他手指可以留在键盘的主键区。因为Leader相当好用,所以我把各种常用的操作映射到Leader上。2.将最常用的操作映射到Leader操作我首先确定最常用的操作并将它们映射到Leader操作,我经常使用:Createanewfilewitho:nnoremapo:CtrlPa使用w保存文件(明显比:w快):nnoremapw:w使用p和y剪切板复制和粘贴:vmapy"+yvmapd"+dnmapp"+pnmapP"+Pvmapp"+pvmapP"+P使用进入Vim编辑方式:nmapV强烈建议大家找最常用的操作映射到Leader上。3、使用插件terryma/vim-expand-region的区域扩展功能做按键映射:vmapv(expand_region_expand)vmap(expand_region_shrink)这样我就可以:按一次v来选择一个字符。再次按v可自动展开所选单词。再次按v可自动展开所选代码。...等等...按回滚上次选择操作。虽然vvv看起来比vp慢,但是在使用这种方法的时候,我不需要考虑当前选中的是哪个,应该用哪个组合键来操作。这样v就代替了viw,vaw,vi",va",vi(,va(,vi[,va[,vi{,va{,vip,vap,vit,vat,...这些操作,现在你明白了。4.查找文本搜索工具我一直不喜欢Vim中的搜索和替换操作,直到我在Vimwiki中发现了如下配置:vnoremaps//e=&selection=='独占'?'+1':'':callhistdel('search',-1)let@/=histget('search',-1)gvomaps:normalvs这个直接替换了我平时的操作顺序:使用/something查找并使用cs替换第一个,然后按使用n.n.n.n.n.查找并替换剩下的匹配。PS:你也可以考虑使用Vim7.4提供的cgn命令5.尝试更多更好的键盘映射我每天都使用这些快捷键,我想这已经节省了我几个月的时间。自动跳转到粘贴文本末尾使用ppppp进行多行多次粘贴操作vnoremapyy`]vnoremappp`]nnoremappp`]避免粘贴后缓冲区内容被覆盖通过以下配置可以防止缓冲区的内容被删除的文本内容覆盖(放在~/.vimrc文件末尾)"vpdoesn'treplacepastebufferfunction!RestoreRegister()let@"=s:restore_regreturn''endfunctionfunction!s:Repl()lets:restore_reg=@"return"p@=RestoreRegister()"endfunctionvmappRepl()译注:这里没有Title,就是估计是作者记错了,加了一个在文件中通过12快速跳转到第12行(我觉得12G不合适)按可以跳到该行文件的末尾按返回文件开头nnoremapGnnoremapgg快速选择粘贴的文本noremapgV`[v`]关闭无聊的窗口并提示mapq::q6。提高单元测试执行效率我使用vim-vroom插件和相应的tmux配置来进行我的测试。Vim-room默认使用r执行测试,因为我已经将Leader映射到,所以我通过r运行测试工具。由于测试在tmux的单独窗口中运行,因此我可以查看测试进度并修改我的代码。#p#7。使用Ctrl-Z返回Vim我经常想在shell下执行一些命令,我??通过Ctrl-Z暂停Vim,完成shell命令执行后通过返回Vim。使用fg回到Vim让我感觉很糟糕,我只想通过Ctrl-Z在Vim和Shell之间切换,但我没有找到解决办法,所以我写了一个在ZSH下完美运行的脚本:fancy-ctrl-z(){if[[$#BUFFER-eq0]];thenBUFFER="fg"zleaccept-lineelsezlepush-inputzleclear-screenfi}zle-Nfancy-ctrl-zbindkey'^Z'fancy-ctrl-z如果把上面的代码放到~/.zshrc文件,可以在shell和Vim之间快速切换,值得一试。8、正确配置Tmux在OSX下使用Tmux和Vim工具非常不方便,因为:系统的剪贴板处理功能较弱Vim和Tmux的窗口切换操作不同Tmux下执行命令的热键不同(使用C-b)Tmux中的复制模式非常难用。我花了很多时间来修复上面的配置。具体可以看如下:配置使用作为tmux的热键有些人习惯用作为热键,而我是用这个热键返回行首,所以我不会在这里详细介绍。的使用方式会比较好用,原因后面会讲到:unbindC-bset-gprefixC-SpacebindSpacesend-prefixuse进入复制模式想象一下,使用可以直接进入Tmux的copy模式,多方便啊。bindSpacecopy-modebindC-Spacecopy-modeusesyandreattach-to-user-namespace(basedonOSX)在使用系统剪贴板之前,需要执行brewinstallreattach-to-user-namespacebind-key-tvi-copyycopy-pipe"reattach-to-user-namespacepbcopy"使用vim-tmux-navigator,需要使用,,,这几个快捷键来快速切换vim和tmux的各个窗口。同时我推荐使用l和j的映射配置来进行Tmux窗口分割操作,肯定比使用%和快|:bindjsplit-window-vbindC-jsplit-window-vbindlsplit-window-hbindC-lsplit-window-h在这里查看我的tmux.conf文件以获得更多干货。9、提高Git项目中Ctrl-P的执行效率在你的.vimrc文件中添加如下内容(配置使用使用git或silver搜索工具自动补全):letg:ctrlp_use_caching=0ifexecutable('ag')setgrepprg=ag--nogroup--nocolorletg:ctrlp_user_command='ag%s-l--nocolor-g""'elseletg:ctrlp_user_command=['.git','cd%s&&gitls-files.-co--排除-standard','find%s-typef']letg:ctrlp_prompt_mappings={'AcceptSelection("e")':['','','<2-LeftMouse>'],}endif我推荐使用vim-scripts/gitignore插件。10.使用包管理器neobundle.vim是管理Vim插件的强大工具:你不需要手动管理git子库(子模块)你可以并行安装和更新插件它支持YouCompleteMe和其他需要的插件构建NeoBundle'Valloric/YouCompleteMe',{'build':{'mac':'./install.sh',},}生成同样支持pry的插件:NeoBundle'rking/pry-de',{'rtp':'vim/'}11.充分利用Vim的插件YouCompleteMeack.vim(ag.vim也不错)的优点tpope/vim-commentarytpope/vim-rsitpope/vim-endwisetpope/vim-fugitive主要使用:gblametpope/vim-repeattpope/vim-sleuthmmozuras/vim-github-commentvim-airline并添加如下配置:NeoBundle'bling/vim-airline'letg:airline_theme='powerlineish'letg:airline_left_sep=''letg:airline_right_sep=''letg:airline_section_z=''我是Ruby程序员,所以我也使用了一些Ruby插件:tpope/vim-railsvim-textobj-rubyblock(使用var,vir查找ruby代码块)ruby_pryAndrewRadev/splitjoin.vim配置如下映射nmapsj:SplitjoinSplitnmapsk:SplitjoinJoin12。在服务器上快速配置Vim我经常需要在服务器上使用Vim来配置,不幸的是Vim的默认配置相当不合理。一种解决方案是使用vim-sensible插件生成压缩包,但这对我来说还不够好。我写了一个vimrc插件来正确初始化Vim(特别是对于Ruby开发人员)。该插件将Vim配置为仅使用~/.vimrc作为配置文件,它还包括优化的配色、包管理工具和开发语言的各种语法着色。这意味着我不需要在服务器上手动配置~/.vim目录,而是可以通过执行以下操作轻松地在服务器上配置Vim环境:gitclone--recursivehttps://github.com/sheerun/vimrc.git~/.vim我还写了一个dotfiles来快速配置我的开发环境。要想用好Vim,关键在于你要不断发现自己在软件开发过程中遇到的Vim问题,并积极应对。解决方法可以是在.vimrc中添加keymap,或者去google上找解决方法,或者在IRC上提问,或者其他方法。你用过哪些方法来提高使用Vim的效率?