{"id":31,"date":"2015-05-19T15:59:55","date_gmt":"2015-05-19T07:59:55","guid":{"rendered":"http:\/\/zsaber.com\/blog\/?p=31"},"modified":"2020-05-28T09:45:58","modified_gmt":"2020-05-28T01:45:58","slug":"%e4%b8%aa%e4%ba%ba%e7%9a%84%e4%b8%80%e4%ba%9b-vim-%e6%8f%92%e4%bb%b6%e5%92%8c%e9%85%8d%e7%bd%ae%e6%8e%a8%e8%8d%90","status":"publish","type":"post","link":"http:\/\/zsaber.com\/blog\/p\/31","title":{"rendered":"\u4e2a\u4eba\u7684\u4e00\u4e9b vim \u63d2\u4ef6\u548c\u914d\u7f6e\u63a8\u8350"},"content":{"rendered":"<p>\u7528 vim \u4e5f\u6709\u4e00\u6bb5\u65f6\u95f4\u4e86, \u771f\u5fc3\u662f\u8d8a\u7528\u8d8a\u597d\u7528, \u73b0\u5df2\u4f5c\u4e3a\u6572\u4ee3\u7801\u4e3b\u529b\u4ee5\u53ca\u9ed8\u8ba4\u6587\u672c\u7f16\u8f91\u5668<\/p>\n<p>\u4e8e\u662f\u6765\u5171\u4eab\u4e0b\u81ea\u5df1\u7684 vim \u914d\u7f6e, \u6587\u7ae0\u5e95\u90e8\u514d\u8d39\u8d60\u9001\u4e2a\u4eba\u5728\u7528\u7684 gVim \u7eff\u8272\u7248\u4ee5\u53ca\u914d\u7f6e,<br \/>\n\u4e5f\u53ef\u4ee5\u5230 <a href=\"https:\/\/github.com\/ZSaberLv0\/zf_vimrc.vim\">github<\/a> \u67e5\u770b<\/p>\n<p>\u6b64\u5916, \u53ef\u4ee5\u53c2\u89c1 <a href=\"http:\/\/zsaber.com\/blog\/p\/94\">\u8fd9\u7bc7\u6587\u7ae0<\/a> \u6765\u4e00\u952e\u8fdb\u884c\u914d\u7f6e<\/p>\n<p>\u4ee5\u4e0b\u914d\u7f6e\u5728 Windows gVim, Ubuntu vim, Mac vim, Mac MacVim, Android VimTouch \u6d4b\u8bd5\u8fc7 <code>:)<\/code><\/p>\n<h1>\u63d2\u4ef6<\/h1>\n<p>\u5e9f\u8bdd\u4e0d\u591a\u8bf4, \u5148\u63a8\u8350\u4e0b\u4e2a\u4eba\u5728\u7528\u7684\u63d2\u4ef6: (\u6392\u540d\u6309\u7167\u5b57\u6bcd\u987a\u5e8f)<\/p>\n<p>\u4e2a\u4eba\u81ea\u5df1\u5199\u7684\u4e00\u4e9b\u63d2\u4ef6\u5728\u6b64: <a href=\"http:\/\/zsaber.com\/blog\/p\/70\">http:\/\/zsaber.com\/blog\/p\/70<\/a>,<br \/>\n\u5f88\u591a\u90fd\u662f\u73b0\u6709\u63d2\u4ef6\u7684\u5f3a\u5316\u66ff\u4ee3, \u672c\u6587\u5c31\u4e0d\u5217\u4e86<\/p>\n<h2>\u901a\u7528<\/h2>\n<ul>\n<li>\n<p>junegunn\/vim-plug<\/p>\n<p>\u7ba1\u7406\u63d2\u4ef6\u7684\u63d2\u4ef6, \u4e0b\u6587\u6240\u6709\u63d2\u4ef6\u90fd\u53ef\u4ee5\u7528 <code>Plug &#039;\u63d2\u4ef6\u540d\u5b57&#039;<\/code> \u8fdb\u884c\u5b89\u88c5<\/p>\n<p>\u4e4b\u524d\u4e00\u76f4\u7528 Vundle, \u540e\u6765\u6362\u8fd9\u8d27, \u56e0\u4e3a\u8db3\u591f\u7b80\u5355, \u800c\u4e14\u88c5\u63d2\u4ef6\u7684\u901f\u5ea6\u5feb<\/p>\n<\/li>\n<li>\n<p>vim-scripts\/xterm16.vim<\/p>\n<p>\u4e2a\u4eba\u552f\u4e00\u5728\u7528\u7684 vim \u4e3b\u9898, \u53ef\u4ee5\u5728\u5404\u79cd\u7ec8\u7aef\u4e0b\u7684\u663e\u793a\u90fd\u6bd4\u8f83\u6b63\u5e38 (\u56e0\u4e3a\u4e00\u4e9b\u7279\u6b8a\u539f\u56e0, \u672c\u4eba\u5076\u5c14\u4f1a\u5728 8 \u4f4d\u8272\u7ec8\u7aef\u4e0b\u8dd1 vim)<\/p>\n<p>\u4e0d\u60f3\u7ea0\u7ed3\u5404\u79cd\u5947\u602a\u7684\u663e\u793a\u95ee\u9898\u7684\u8bdd, \u5f3a\u529b\u63a8\u8350\u8fd9\u4e2a\u4e3b\u9898\u4f5c\u4e3a\u5907\u7528<\/p>\n<p>\u76f8\u5bf9\u7684, 256 \u8272\u4e3b\u9898\u4e2a\u4eba\u63a8\u8350\u4f7f\u7528 <code>tomasr\/molokai<\/code> \u6216 <code>morhetz\/gruvbox<\/code>, \u7f8e\u89c2, \u770b\u7740\u4e5f\u4e0d\u7d2f<\/p>\n<\/li>\n<li>\n<p>cohama\/agit.vim<\/p>\n<p>\u7b80\u5355\u597d\u7528\u7684 git \u5386\u53f2\u67e5\u770b<\/p>\n<\/li>\n<li>\n<p>DataWraith\/auto_mkdir<\/p>\n<p>vim \u4e00\u4e2a\u6587\u4ef6\u540d\u65f6, \u81ea\u52a8\u521b\u5efa\u4e2d\u95f4\u7684\u76ee\u5f55\u7ed3\u6784<\/p>\n<\/li>\n<li>\n<p>jiangmiao\/auto-pairs<\/p>\n<p>\u8f93\u5165\u62ec\u53f7\u5f15\u53f7\u4ec0\u4e48\u7684\u65f6\u5019\u81ea\u52a8\u8865\u5168\u914d\u5bf9<\/p>\n<p>\u540c\u7c7b\u63d2\u4ef6\u633a\u591a, \u4e0d\u8fc7\u8fd9\u4e2a\u611f\u89c9\u7528\u7740\u6548\u679c\u6700\u597d, \u4e0d\u8fc7\u5076\u5c14\u4f1a\u51fa\u73b0\u5947\u602a\u7684 BUG, \u6240\u4ee5\u5efa\u8bae\u8fd8\u662f\u628a\u8fd9\u8d27\u7684\u9000\u683c\u548c\u56de\u8f66\u7684\u6620\u5c04\u7981\u7528\u6389<\/p>\n<\/li>\n<li>\n<p>vim-scripts\/BufOnly.vim<\/p>\n<p>\u5173\u95ed\u9664\u5f53\u524d buffer \u5916\u6240\u6709 buffer, \u7b80\u5355\u597d\u7528<\/p>\n<\/li>\n<li>\n<p>ap\/vim-buftabline<\/p>\n<p>\u663e\u793a buffer \u5217\u8868, \u4e4b\u524d\u4e00\u76f4\u7528 minibufexpl, \u4f46\u8fd9\u8d27\u7528 tabline \u6765\u5b9e\u73b0, \u679c\u7136\u6548\u679c\u597d\u4e86\u5f88\u591a,<br \/>\n\u552f\u4e00\u9057\u61be\u7684\u662f, \u8fd9\u8d27\u7684\u914d\u7f6e\u9879\u592a\u5c11\u4e86<\/p>\n<\/li>\n<li>\n<p>vim-scripts\/CmdlineComplete<\/p>\n<p>\u547d\u4ee4\u6a21\u5f0f\u4e0b\u53ef\u4ee5\u6309 <code>&lt;c-p&gt;<\/code> \u4e4b\u7c7b\u7684\u6309\u952e\u6765\u81ea\u52a8\u8865\u5168, \u8865\u5168\u7684\u5185\u5bb9\u53ef\u4ee5\u662f\u5f53\u524d buffer \u4e2d\u7684\u5185\u5bb9, \u5076\u5c14\u8fd8\u633a\u5b9e\u7528\u7684, \u4e0d\u8fc7\u4e5f\u4ec5\u9650\u4e8e\u5076\u5c14<\/p>\n<\/li>\n<li>\n<p>junegunn\/vim-easy-align<\/p>\n<p>\u6309\u7167\u6307\u5b9a\u5b57\u7b26\u8fdb\u884c\u5217\u5bf9\u9f50, \u975e\u5e38\u9002\u5408\u62ff\u6765\u505a\u4e00\u4e9b\u6392\u7248\u64cd\u4f5c<br \/>\n(\u4e0d\u8fc7\u8fd9\u8d27\u7684\u547d\u4ee4\u89c4\u5219\u592a\u4ed6\u55b5\u7684\u96be\u8bb0\u4e86, \u9700\u8981\u4e00\u6bb5\u65f6\u95f4\u9002\u5e94)<\/p>\n<\/li>\n<li>\n<p>dkprice\/vim-easygrep<\/p>\n<p>\u4f5c\u4e3a\u4e00\u4e2a\u4ece\u6765\u8bb0\u4e0d\u4f4f grep \u547d\u4ee4\u7684\u4eba, \u8fd9\u4e2a\u62ff\u6765\u505a\u5168\u5de5\u7a0b\u66ff\u6362\u8fd8\u662f\u633a\u4e0d\u9519\u7684<\/p>\n<p>\u9ed8\u8ba4\u4f7f\u7528\u7684\u662f vim \u7684 magic \u6a21\u5f0f\u7684\u6b63\u5219\u8868\u8fbe\u5f0f, \u53ef\u4ee5\u5f00\u542f perl \u98ce\u683c\u7684\u6b63\u5219,<br \/>\n\u5177\u4f53\u53c2\u7167 <a href=\"http:\/\/zsaber.com\/blog\/p\/73\">\u8fd9\u91cc<\/a><\/p>\n<\/li>\n<li>\n<p>Lokaltog\/vim-easymotion<\/p>\n<p>\u8fd9\u4e2a\u771f\u5fc3\u592a\u597d\u7528\u4e86, \u518d\u4e5f\u4e0d\u7528\u6570\u683c\u5b50\u8fdb\u884c\u8df3\u8f6c\u4e86, \u5149\u6807\u53ef\u4ee5\u968f\u5fc3\u6240\u6b32\u7684\u8df3\u6765\u8df3\u53bb\u4e86, \u5f3a\u529b\u63a8\u8350<\/p>\n<p>\u4e2a\u4eba\u628a\u8fd9\u8d27\u6620\u5c04\u5230 s \u4e0a<\/p>\n<pre><code class=\"language-vim\">map s <Plug>(easymotion-s)\nmap S <Plug>(easymotion-sol-bd-jk)<\/code><\/pre>\n<p>\u6b64\u5916, \u60f3\u8981\u652f\u6301\u4e2d\u6587\u7684\u8bdd, \u53ef\u4ee5\u53c2\u8003 <a href=\"https:\/\/github.com\/ZSaberLv0\/vim-easymotion-chs\">ZSaberLv0\/vim-easymotion-chs<\/a><\/p>\n<\/li>\n<li>\n<p>othree\/eregex.vim<\/p>\n<p>\u641c\u7d22\u548c\u66ff\u6362\u7684\u65f6\u5019\u4f7f\u7528 perl \u98ce\u683c\u7684\u6b63\u5219\u8868\u8fbe\u5f0f, \u5f3a\u529b\u63a8\u8350\u66ff\u6362\u6389 vim \u81ea\u5e26\u7684\u6b63\u5219<\/p>\n<\/li>\n<li>\n<p>terryma\/vim-expand-region<\/p>\n<p>\u4e00\u952e\u5feb\u901f\u9009\u4e2d\u62ec\u53f7\u5f15\u53f7\u4e4b\u7c7b\u7684\u4e1c\u897f\u5305\u542b\u7684\u533a\u57df<\/p>\n<p>\u4e0d\u8fc7\u8fd9\u73a9\u610f\u513f\u53ef\u80fd\u5b58\u5728\u5361\u4ee5\u53ca\u9700\u8981\u6309\u591a\u6b21\u7684\u95ee\u9898, \u4f46\u662f\u76ee\u524d\u597d\u50cf\u6ca1\u53d1\u73b0\u9760\u8c31\u7684\u66ff\u4ee3\u54c1<\/p>\n<\/li>\n<li>\n<p>drmikehenry\/vim-fontsize<\/p>\n<p>\u5feb\u901f\u8c03\u6574 gVim \u7684\u5b57\u4f53\u5927\u5c0f, \u5e76\u4e14\u4e0d\u4f9d\u8d56\u7cfb\u7edf\u5b57\u4f53 (\u5f88\u591a\u5176\u4ed6\u540c\u7c7b\u63d2\u4ef6\u9700\u8981\u660e\u786e\u6307\u5b9a\u5b57\u4f53)<\/p>\n<\/li>\n<li>\n<p>haya14busa\/incsearch-fuzzy.vim<\/p>\n<p>\u6a21\u7cca\u5339\u914d\u7684 incsearch, \u9700\u8981 <code>haya14busa\/incsearch.vim<\/code><\/p>\n<\/li>\n<li>\n<p>Yggdroot\/LeaderF<\/p>\n<p>\u6a21\u7cca\u5339\u914d\u6253\u5f00\u6587\u4ef6, \u800c\u4e14\u53ef\u4ee5\u901a\u8fc7\u8def\u5f84\u8fc7\u6ee4, \u76f8\u5f53\u597d\u7528<\/p>\n<p>\u4e0d\u8fc7\u8fd9\u8d27\u9700\u8981 Python, \u5982\u679c\u6ca1\u6709\u7684, \u5efa\u8bae <code>kien\/ctrlp.vim<\/code> \u4f5c\u4e3a\u5907\u80ce, \u6bd5\u7adf\u5feb\u901f\u6253\u5f00\u6587\u4ef6\u8fd8\u662f\u5fc5\u5907\u529f\u80fd<\/p>\n<\/li>\n<li>\n<p>AndrewRadev\/linediff.vim<\/p>\n<p>\u901a\u8fc7\u9009\u62e9\u5feb\u901f diff \u540c\u4e00\u4e2a buffer \u5185\u7684\u5185\u5bb9, \u6709\u65f6\u5019\u633a\u597d\u7528\u7684<\/p>\n<\/li>\n<li>\n<p>andymass\/vim-matchup<\/p>\n<p>\u7528 vim \u81ea\u5e26\u7684 % \u952e, \u5728\u5404\u79cd\u6807\u8bb0\u8bed\u8a00\u7684 tag \u4e4b\u95f4\u5feb\u901f\u8df3\u8f6c<\/p>\n<p>\u8fd9\u8d27\u76f8\u6bd4\u5386\u53f2\u60a0\u4e45\u7684 <code>adelarsq\/vim-matchit<\/code>, \u597d\u5904\u662f\u53ef\u4ee5\u9ad8\u4eae, \u574f\u5904\u662f\u8df3\u8f6c\u884c\u4e3a\u7565\u5fae\u6709\u70b9\u5947\u602a, \u4ee5\u53ca\u6587\u4ef6\u590d\u6742\u4e86\u53ef\u80fd\u4f1a\u5361<\/p>\n<\/li>\n<li>\n<p>scrooloose\/nerdtree<\/p>\n<p>\u4f17\u6240\u5468\u77e5\u7684\u6811\u5f62\u6587\u4ef6\u6d4f\u89c8\u5668<\/p>\n<ul>\n<li>\n<p>jistr\/vim-nerdtree-tabs<\/p>\n<p>nerdtree \u7684\u63d2\u4ef6, \u8ba9\u6240\u6709 tab \u5171\u7528\u540c\u4e00\u4e2a nerdtree \u4fa7\u8fb9\u680f<\/p>\n<\/li>\n<li>\n<p>ZSaberLv0\/nerdtree_menu_util<\/p>\n<p>\u4e2a\u4eba\u6574\u7406\u7684 nerdtree \u7684\u63d2\u4ef6, \u7ed9 nerdtree \u6dfb\u52a0\u4e00\u4e9b\u597d\u7528\u7684\u83dc\u5355\u9879<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>google\/vim-searchindex<\/p>\n<p>\u7b80\u5355\u597d\u7528\u7684\u663e\u793a\u641c\u7d22\u5339\u914d\u4e2a\u6570\u7684\u73a9\u610f\u513f<\/p>\n<\/li>\n<li>\n<p>vim-scripts\/ShowTrailingWhitespace<\/p>\n<p>\u884c\u5c3e\u7a7a\u683c\u4f1a\u4ee5\u9ad8\u4eae\u663e\u793a\u51fa\u6765, \u4fdd\u6301\u4f18\u826f\u4ee3\u7801\u98ce\u683c\u5fc5\u5907<\/p>\n<\/li>\n<li>\n<p>kshenoy\/vim-signature<\/p>\n<p>\u53ef\u89c6\u5316\u7684 mark, \u7b80\u5355\u597d\u7528<\/p>\n<\/li>\n<li>\n<p>ervandew\/supertab<\/p>\n<p>\u6309 tab \u6765\u8fdb\u884c\u81ea\u52a8\u5b8c\u6210, \u5e76\u4e14\u53ef\u4ee5\u6839\u636e\u5f53\u524d\u573a\u666f\u4f7f\u7528\u4e0d\u540c\u81ea\u52a8\u5b8c\u6210\u6a21\u5f0f, \u518d\u4e5f\u4e0d\u7528\u7ea0\u7ed3\u5230\u5e95\u7528 <code>&lt;c-p&gt;<\/code> \u8fd8\u662f <code>&lt;c-n&gt;<\/code> \u4ec0\u4e48\u7684\u4e86<\/p>\n<\/li>\n<li>\n<p>tpope\/vim-surround<\/p>\n<p>\u5feb\u901f\u6dfb\u52a0\u5220\u9664\u548c\u4fee\u6539\u5916\u5c42\u6807\u7b7e, \u6bd4\u5982\u62ec\u53f7, html tag, \u8fd8\u53ef\u4ee5\u6dfb\u52a0\u81ea\u5b9a\u4e49\u6807\u7b7e, \u975e\u5e38\u597d\u7528<\/p>\n<\/li>\n<li>\n<p>SirVer\/ultisnips<\/p>\n<p>\u5feb\u901f\u63d2\u5165\u4e00\u4e9b\u9884\u5b9a\u4e49\u6a21\u677f, \u9700\u8981\u8f83\u957f\u65f6\u95f4\u6298\u817e\u5c5e\u4e8e\u81ea\u5df1\u7684\u914d\u7f6e<\/p>\n<p>\u5982\u679c\u9700\u8981\u652f\u6301 <code>python2<\/code>, \u8fd9\u6709\u4e2a\u6211\u7684\u5907\u4efd <code>ZSaberLv0\/ultisnips_py2<\/code><\/p>\n<p>\u4e2a\u4eba\u5728\u7528\u7684\u6a21\u677f <a href=\"https:\/\/github.com\/ZSaberLv0\/ZF_ultisnips\">ZSaberLv0\/ZF_ultisnips<\/a><\/p>\n<\/li>\n<li>\n<p>KabbAmine\/vZoom.vim<\/p>\n<p>\u7b80\u5355\u597d\u7528\u7684\u7a97\u53e3\u6700\u5927\u5316\u5de5\u5177<\/p>\n<\/li>\n<li>\n<p>ianva\/vim-youdao-translater<\/p>\n<p>\u7ffb\u8bd1\u63d2\u4ef6, \u8001\u5b9e\u8bb2, \u4e00\u4e2a\u80fd\u6253\u7684\u90fd\u6ca1\u6709, \u5c31\u8fd9\u4e2a\u51d1\u5408\u80fd\u7528\u4e00\u4e0b<\/p>\n<\/li>\n<li>\n<p>yuratomo\/w3m.vim<\/p>\n<p>\u867d\u7136\u770b\u8d77\u6765\u6ca1\u5375\u7528, \u4f46\u662f\u8bf4\u4e0d\u5b9a\u54ea\u5929\u9700\u8981 ssh \u5230 VPS \u79d1\u5b66\u4e0a\u7f51\u5462 233<\/p>\n<\/li>\n<\/ul>\n<h2>\u7f16\u7a0b\u8bed\u8a00\u76f8\u5173<\/h2>\n<p>\u597d\u7528\u4f46\u96be\u914d\u7f6e\u7684\u8865\u5168\u5f15\u64ce\u5148\u5217\u5728\u524d\u9762:<\/p>\n<ul>\n<li>\n<p>neoclide\/coc.nvim<\/p>\n<p>\u6709 <code>node<\/code> \u7684\u8bdd\u522b\u6298\u817e\u522b\u7684\u4e86, \u8fd8\u662f\u7528\u8fd9\u4e2a\u5427<\/p>\n<\/li>\n<li>\n<p>ncm2\/ncm2 or Shougo\/deoplete.nvim<\/p>\n<p>\u8fd9\u4fe9\u5728\u6211\u6765\u770b\u90fd\u5dee\u4e0d\u591a, \u597d\u5904\u662f\u53ea\u8981 python, \u574f\u5904\u662f\u6027\u80fd\u76f8\u5bf9\u8f83\u5dee<\/p>\n<\/li>\n<li>\n<p>Valloric\/YouCompleteMe<\/p>\n<p>\u5927\u540d\u9f0e\u9f0e\u7684\u8bed\u4e49\u8865\u5168\u63d2\u4ef6, \u4e0d\u8fc7\u5df2\u7ecf\u6709 <code>neoclide\/coc.nvim<\/code> \u8fd9\u6837\u7684\u66f4\u597d\u7684\u66ff\u4ee3\u54c1\u4e86<\/p>\n<ul>\n<li>ZSaberLv0\/ycm_conf_default : \u597d\u7528\u7684\u9ed8\u8ba4\u914d\u7f6e<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u5176\u5b83\u901a\u7528\u63d2\u4ef6\u5217\u8868:<\/p>\n<ul>\n<li>\n<p>taxilian\/a.vim<\/p>\n<p>\u8f93\u5165 :A \u5728 h\/cpp \u6587\u4ef6\u95f4\u5207\u6362<\/p>\n<\/li>\n<li>\n<p>tyru\/caw.vim<\/p>\n<p>\u5feb\u901f\u6ce8\u91ca\/\u53cd\u6ce8\u91ca\u4e00\u4e9b\u5185\u5bb9, \u8fd9\u8d27\u5e94\u8be5\u7b97\u662f\u652f\u6301\u6587\u4ef6\u7c7b\u578b\u6700\u591a\u7684\u4e86<\/p>\n<\/li>\n<li>\n<p>CompleteParameter.vim<\/p>\n<p>\u597d\u7528\u7684\u51fd\u6570\u53c2\u6570\u8865\u5168, \u9700\u8981\u914d\u5408\u4e00\u4e9b complete engine, \u6bd4\u5982 <code>neoclide\/coc.nvim<\/code><\/p>\n<\/li>\n<li>\n<p>sheerun\/vim-polyglot<\/p>\n<p>\u5927\u800c\u5168\u7684\u6587\u4ef6\u7c7b\u578b\u6536\u96c6, \u4e0d\u8fc7\u5e7f\u7684\u4ee3\u4ef7\u5927\u7ea6\u5c31\u662f\u4e0d\u7cbe\u5427<\/p>\n<\/li>\n<li>\n<p>vim-syntastic\/syntastic<\/p>\n<p>\u77e5\u540d\u7684\u8bed\u6cd5\u68c0\u67e5\u63d2\u4ef6, \u597d\u5904\u662f\u51e0\u4e4e\u4e0d\u7528\u600e\u4e48\u914d\u7f6e, \u7cfb\u7edf\u6709\u76f8\u5173 tools \u5c31\u81ea\u52a8\u751f\u6548<\/p>\n<\/li>\n<\/ul>\n<p>\u8bed\u8a00\u76f8\u5173\u63d2\u4ef6:<\/p>\n<ul>\n<li>\n<p>Rip-Rip\/clang_complete<\/p>\n<p>\u5f88\u597d\u7528\u7684\u8865\u5168\u63d2\u4ef6, \u5b89\u88c5\u6bd4\u5404\u79cd\u8865\u5168\u63d2\u4ef6\u5bb9\u6613\u591a\u4e86, \u4e0d\u8fc7\u95ee\u9898\u4e5f\u591a,<br \/>\n\u5bb9\u6613\u5d29\u6e83, \u6ca1\u6709\u5f02\u6b65\u8865\u5168, \u4e0d\u652f\u6301\u6a21\u7cca\u5339\u914d, \u5907\u80ce<\/p>\n<\/li>\n<li>\n<p>rhysd\/vim-gfm-syntax<\/p>\n<p>markdown \u8bed\u6cd5\u9ad8\u4eae\u7b49\u529f\u80fd, \u540c\u7c7b\u63d2\u4ef6\u5f88\u591a, \u4f46\u662f\u8fd9\u4e2a\u603b\u4f53\u6765\u8bf4\u6bd4\u8f83\u7efc\u5408\u4e00\u70b9, \u800c\u4e14\u4e5f\u652f\u6301\u4ee3\u7801\u5757\u9ad8\u4eae<\/p>\n<\/li>\n<li>\n<p>mzlogin\/vim-markdown-toc<\/p>\n<p>\u63d2\u5165\u5e76\u81ea\u52a8\u66f4\u65b0\u76ee\u5f55, \u7b80\u5355\u597d\u7528<\/p>\n<\/li>\n<li>\n<p>amiorin\/vim-fenced-code-blocks<\/p>\n<p>\u7528\u4e8e\u5feb\u901f\u7684\u7f16\u8f91\u67d0\u4e00\u5c0f\u6bb5\u7684\u4ee3\u7801\u5757, \u9002\u5408 markdown \u8fd9\u79cd\u5185\u5d4c\u5176\u5b83\u8bed\u8a00\u4ee3\u7801\u5757\u7684<\/p>\n<\/li>\n<li>\n<p>mhinz\/vim-lookup<\/p>\n<p>\u6ca1\u6709\u8865\u5168\u5f15\u64ce\u7684\u60c5\u51b5\u4e0b, \u67e5\u627e vim \u7684\u51fd\u6570, \u6709\u65f6\u5019\u633a\u597d\u7528\u7684<\/p>\n<\/li>\n<li>\n<p>sukima\/xmledit<\/p>\n<p>\u81ea\u52a8\u5339\u914d xml \u6807\u7b7e<\/p>\n<\/li>\n<\/ul>\n<h1>\u6309\u952e\u6620\u5c04<\/h1>\n<p>\u626f\u5b8c\u4e86\u63d2\u4ef6, \u5f53\u7136\u8981\u626f\u4e00\u4e0b vim \u7684\u5404\u79cd\u6309\u952e\u6620\u5c04<\/p>\n<ul>\n<li>\n<p>leader<\/p>\n<pre><code class=\"language-vim\">let mapleader=\"'\"<\/code><\/pre>\n<p>\u8fd9\u4e2a\u4e5f\u7eaf\u7cb9\u4e2a\u4eba\u559c\u597d, \u7528\u5355\u5f15\u53f7\u6765\u505a leader, \u56e0\u4e3a\u4e2a\u4eba\u5076\u5c14\u5728\u624b\u673a\u4e0a\u7528 vim, \u5355\u5f15\u53f7\u6bd4\u8f83\u65b9\u4fbf\u8f93\u5165<\/p>\n<\/li>\n<li>\n<p>esc<\/p>\n<pre><code class=\"language-vim\">inoremap <esc> <esc>l\ninoremap jk <esc>l\ncnoremap jk <c-c>\nif has('terminal') || has('nvim')\n    tnoremap jk <c-\\><c-n>\n    tnoremap <esc> <c-\\><c-n>\nendif\nnnoremap <space> <esc>\nxnoremap <space> <esc>\nonoremap <space> <esc><\/code><\/pre>\n<p>\u4e4b\u524d\u4e00\u76f4\u7528 jj \u6765\u5f53 esc, \u867d\u7136\u88ab\u5f88\u591a\u5927\u795e\u8bc5\u5492\u4e3a\u7978\u5bb3\u65b0\u4eba\u7684\u6309\u952e\u6620\u5c04, \u4e0d\u8fc7\u771f\u7684\u8fd8\u662f\u633a\u597d\u7528\u7684<\/p>\n<p>\u540e\u6765\u7ecf\u8fc7\u522b\u4eba\u63a8\u8350, \u6539\u6210\u7528 jk \u4e86, \u7528\u8d77\u6765\u66f4\u987a\u624b<\/p>\n<p>\u4e2a\u4eba\u5728 <code>&lt;esc&gt;<\/code> \u540e\u52a0\u4e86\u4e2a l, \u5728\u5927\u591a\u6570\u573a\u666f\u4e0b\u66f4\u7b26\u5408\u60ef\u6027\u601d\u7ef4\u5427, \u5177\u4f53\u4f53\u4f1a\u4e00\u4e0b\u5c31\u77e5\u9053\u4e86<\/p>\n<p>\u987a\u4fbf\u8fd8\u6620\u5c04\u4e86\u547d\u4ee4\u6a21\u5f0f\u4e0b\u7528 jk \u9000\u51fa, \u770b\u5230 <code>&lt;c-c&gt;<\/code> \u800c\u4e0d\u662f <code>&lt;esc&gt;<\/code> \u7684\u65f6\u5019\u6709\u6ca1\u6709\u611f\u89c9\u8111\u5b50\u4e00\u62bd? :D<\/p>\n<\/li>\n<li>\n<p>visual \u6a21\u5f0f<\/p>\n<pre><code class=\"language-vim\">nnoremap V <c-v>\nvnoremap V <c-v>\nnnoremap <c-v> V\nvnoremap <c-v> V<\/code><\/pre>\n<p>\u4ea4\u6362\u884c\u9009\u62e9\u548c\u5217\u9009\u62e9\u6a21\u5f0f, \u56e0\u4e3a\u611f\u89c9\u5217\u9009\u62e9\u6a21\u5f0f\u660e\u663e\u7528\u7684\u6b21\u6570\u66f4\u591a<\/p>\n<\/li>\n<li>\n<p>select \u6a21\u5f0f\u7684\u4e00\u4e9b\u6620\u5c04<\/p>\n<pre><code class=\"language-vim\">let s:_selectmode_keys='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890~!@#$%^&*-_=+\\\\|;:,.\/?)]}>'\nfor i in range(strlen(s:_selectmode_keys))\n    silent! execute 'snoremap <silent> ' . s:_selectmode_keys[i] . ' <c-g>\"_c' . s:_selectmode_keys[i]\nendfor\nsilent! snoremap <silent> <space> <esc>\nsilent! snoremap <silent> jk <esc>gv\nsilent! snoremap <silent> <bs> <c-g>\"_c\nsilent! snoremap <silent> ( <c-g>\"_c()<esc>i\nsilent! snoremap <silent> [ <c-g>\"_c[]<esc>i\nsilent! snoremap <silent> { <c-g>\"_c{}<esc>i\nsilent! snoremap <silent> < <c-g>\"_c<><esc>i\nsilent! snoremap <silent> ' <c-g>\"_c''<esc>i\nsilent! snoremap <silent> \" <c-g>\"_c\"\"<esc>i\nsilent! snoremap <silent> <code> &lt;c-g&gt;&quot;_c<\/code>`<esc>i<\/code><\/pre>\n<p>\u5728 select \u6a21\u5f0f\u4e0b\u53ef\u4ee5\u76f4\u63a5\u8f93\u5165\u4efb\u610f\u952e\u6765\u8f93\u5165\u5e76\u66ff\u6362\u539f\u6765\u7684\u5185\u5bb9, \u76ee\u524d\u4e3b\u8981\u53d1\u73b0\u5728 clang_complete \u4e2d\u975e\u5e38\u597d\u7528<\/p>\n<\/li>\n<li>\n<p>\u5149\u6807\u79fb\u52a8<\/p>\n<pre><code class=\"language-vim\">nnoremap <c-h> zh\nnnoremap <c-l> zl\nnnoremap <c-j> <c-e>\nnnoremap <c-k> <c-y><\/code><\/pre>\n<p>\u6eda\u5c4f\u5e55, \u6bd5\u7adf ctrl + hljk \u6bd4\u8f83\u987a\u624b<\/p>\n<pre><code class=\"language-vim\">inoremap <c-h> <left>\ninoremap <c-l> <right>\ninoremap <c-j> <down>\ninoremap <c-k> <up><\/code><\/pre>\n<p>\u7f16\u8f91\u6a21\u5f0f\u4e0b\u5feb\u901f\u7684\u79fb\u52a8\u5149\u6807, \u8fd9\u4e2a\u5012\u662f\u89c9\u5f97\u633a\u5fc5\u8981\u7684, \u6bd4\u76f4\u63a5\u6309\u65b9\u5411\u952e\u6216\u5207\u6362\u6a21\u5f0f\u4ec0\u4e48\u7684\u65b9\u4fbf\u591a\u4e86<\/p>\n<pre><code class=\"language-vim\">cnoremap <c-h> <left>\ncnoremap <c-l> <right>\ncnoremap <c-j> <down>\ncnoremap <c-k> <up><\/code><\/pre>\n<p>\u547d\u4ee4\u6a21\u5f0f\u4e0b\u79fb\u52a8\u5149\u6807<\/p>\n<pre><code class=\"language-vim\">nnoremap H :bp<CR>\nnnoremap L :bn<CR><\/code><\/pre>\n<p>\u5feb\u901f\u5207\u6362 buffer, \u914d\u5408 minibufexpl \u5f88\u597d\u7528<\/p>\n<pre><code class=\"language-vim\">nnoremap J <c-f>\nxnoremap J <c-f>\nnnoremap K <c-b>\nxnoremap K <c-b><\/code><\/pre>\n<p>\u7ffb\u9875, \u8fd9\u4e2a\u5c31\u7eaf\u7cb9\u4e2a\u4eba\u559c\u597d\u4e86, \u5076\u5c14\u5728\u624b\u673a\u4e0a\u7528 vim, \u8fd9\u6837\u6bd4\u8f83\u597d\u6309<\/p>\n<\/li>\n<li>\n<p>\u5149\u6807\u8df3\u8f6c<\/p>\n<pre><code class=\"language-vim\">nmap z, %\nxmap z, %\nomap z, %\n\nnnoremap , $\nxnoremap , $\nonoremap , $\nnnoremap g, g$\nxnoremap g, g$\nonoremap g, g$<\/code><\/pre>\n<p>\u4e2a\u4eba\u559c\u597d, \u56e0\u4e3a\u5728\u624b\u673a\u4e0a\u4e00\u4e9b\u7b26\u53f7\u771f\u5fc3\u4e0d\u597d\u6253<\/p>\n<pre><code class=\"language-vim\">nnoremap j gj\nxnoremap j gj\nonoremap j gj\nnnoremap gj j\nxnoremap gj j\nonoremap gj j\n\nnnoremap k gk\nxnoremap k gk\nonoremap k gk\nnnoremap gk k\nxnoremap gk k\nonoremap gk k<\/code><\/pre>\n<p>\u5728\u81ea\u52a8\u6362\u884c\u6a21\u5f0f\u4e0b, jk \u53ef\u4ee5\u6309\u7167\u4e60\u60ef\u7684\u65b9\u5f0f\u4e0a\u4e0b\u79fb\u52a8, \u8fd9\u4e2a\u5f53\u65f6\u6211\u8fd8\u627e\u4e86\u633a\u4e45<\/p>\n<\/li>\n<li>\n<p>\u62ec\u53f7\u8df3\u8f6c<\/p>\n<pre><code class=\"language-vim\">nnoremap zg <nop>\n\nnnoremap zg) va)<esc>h%\nnnoremap z) va)<esc>h\nxnoremap zg) <esc><code>&lt;mz<\/code>>va)<esc>h%m>`zm<:delmarks z<cr>gv\nxnoremap z) <esc><code>&lt;mz<\/code>>va)<esc>`zm<:delmarks z<cr>gvh\n\nnnoremap zg] va]<esc>h%\nnnoremap z] va]<esc>h\nxnoremap zg] <esc><code>&lt;mz<\/code>>va]<esc>h%m>`zm<:delmarks z<cr>gv\nxnoremap z] <esc><code>&lt;mz<\/code>>va]<esc>`zm<:delmarks z<cr>gvh\n\nnnoremap zg} va}<esc>h%\nnnoremap z} va}<esc>h\nxnoremap zg} <esc><code>&lt;mz<\/code>>va}<esc>h%m>`zm<:delmarks z<cr>gv\nxnoremap z} <esc><code>&lt;mz<\/code>>va}<esc>`zm<:delmarks z<cr>gvh\n\nnnoremap zg> va><esc>h%\nnnoremap z> va><esc>h\nxnoremap zg> <esc><code>&lt;mz<\/code>>va><esc>h%m>`zm<:delmarks z<cr>gv\nxnoremap z> <esc><code>&lt;mz<\/code>>va><esc>`zm<:delmarks z<cr>gvh\n\nnnoremap zg\" vi\"<esc>`<h\nnnoremap z\" vi\"<esc>\nxnoremap zg\" <esc><code>&lt;mz<\/code>>vi\"<esc><code>&lt;m&gt;<\/code>zm<:delmarks z<cr>gv\nxnoremap z\" <esc><code>&lt;mz<\/code>>vi\"<esc>`zm<:delmarks z<cr>gv\n\nnnoremap zg' vi'<esc>`<h\nnnoremap z' vi'<esc>\nxnoremap zg' <esc><code>&lt;mz<\/code>>vi'<esc><code>&lt;m&gt;<\/code>zm<:delmarks z<cr>gv\nxnoremap z' <esc><code>&lt;mz<\/code>>vi'<esc>`zm<:delmarks z<cr>gv\n\nnmap zg; zg}\nnmap z; z}\nxmap zg; zg}\nxmap z; z}<\/code><\/pre>\n<p>\u5728\u62ec\u53f7\u5185\u65f6, \u8df3\u8f6c\u5230\u5bf9\u5e94\u7684\u62ec\u53f7\u4e0a, \u5177\u4f53\u81ea\u884c\u8bd5\u8bd5\u5c31\u77e5\u9053\u4e86<\/p>\n<\/li>\n<li>\n<p>tag \u8df3\u8f6c<\/p>\n<pre><code class=\"language-vim\">nnoremap zj <c-]>\nnnoremap zk <c-t>\nnnoremap zh :tprevious<cr>\nnnoremap zl :tnext<cr><\/code><\/pre>\n<p>\u8bb2\u771f, \u64b8\u591a\u4e86\u4f1a\u89c9\u5f97 ctrl \u952e\u5f88\u4e0d\u597d\u7528, \u800c\u4e14\u5f88\u591a ctrl \u76f8\u5173\u7684\u5feb\u6377\u952e\u6ca1\u5565\u89c4\u5f8b, \u8bb0\u4e0d\u4f4f<\/p>\n<\/li>\n<li>\n<p>\u64a4\u9500<\/p>\n<pre><code class=\"language-vim\">nnoremap U <c-r><\/code><\/pre>\n<p>\u4e2a\u4eba\u559c\u597d, \u6bd5\u7adf\u8981\u628a u \u548c <code>&lt;c-r&gt;<\/code> \u8054\u60f3\u5230\u4e00\u8d77\u8fd8\u662f\u6709\u70b9\u56f0\u96be\u7684, \u800c\u4e14\u8fd9\u6837\u66f4\u597d\u6309<\/p>\n<\/li>\n<li>\n<p>\u5220\u9664\u66ff\u6362\u65f6, \u4e0d\u8981\u8986\u76d6\u526a\u8d34\u677f<\/p>\n<pre><code class=\"language-vim\">nnoremap c \"_c\nxnoremap c \"_c\nnnoremap d \"_d\nxnoremap d \"_d\nnnoremap <del> \"_dl\nvnoremap <del> \"_d\ninoremap <del> <right><bs><\/code><\/pre>\n<p>\u5220\u9664, visual \u6a21\u5f0f\u7c98\u8d34\u65f6, \u4e0d\u8981\u66ff\u6362\u526a\u8d34\u677f\u5185\u5bb9, \u8fd9\u4e2a\u6211\u4e5f\u8d4c\u4e94\u6bdb\u5f88\u591a\u4eba\u60f3\u8981\u5374\u4e0d\u77e5\u9053\u600e\u4e48\u5b9e\u73b0<\/p>\n<\/li>\n<li>\n<p>\u5404\u79cd\u7c98\u8d34<\/p>\n<pre><code class=\"language-vim\">if has('clipboard')\n    nnoremap zp :let @\" = @*<cr>:echo 'copied from system clipboard'<cr>\nelse\n    nnoremap zp <nop>\nendif\nset clipboard+=unnamed\nset clipboard+=unnamedplus\nnnoremap p gP\nxnoremap p \"_dgP\nnnoremap P gp\nxnoremap P \"_dgp\nnmap <c-g> p\nxmap <c-g> p\nif has('clipboard')\n    inoremap <c-g> <c-r>*\n    \" paste as user typed\n    \" to ensure the command would exist in command history\n    function! ZF_Setting_command_paste()\n        call feedkeys(\"\\<c-r>*\", 't')\n        return ''\n    endfunction\n    cnoremap <expr> <c-g> '' . ZF_Setting_command_paste()\n    snoremap <c-g> <c-o>\"_c<c-r>*\nelse\n    inoremap <c-g> <c-r>\"\n    cnoremap <c-g> <c-r>\"\n    snoremap <c-g> <c-o>\"_dgP\nendif<\/code><\/pre>\n<p>\u5177\u4f53\u542b\u4e49\u8bf7\u81ea\u884c <code>:h register<\/code>, \u611f\u89c9\u8fd9\u6837\u660e\u663e\u66f4\u7b26\u5408\u5e38\u89c4\u7684\u4f7f\u7528\u4e60\u60ef<\/p>\n<\/li>\n<li>\n<p>\u7a97\u53e3\u79fb\u52a8\u548c\u5927\u5c0f<\/p>\n<pre><code class=\"language-vim\">nnoremap B :bufdo<space>\nnnoremap zs :w<cr>\nnnoremap ZS :wa<cr>\nnnoremap zx :w<cr>:bd<cr>\nnnoremap ZX :wa<cr>:bufdo bd<cr>\nnnoremap cx :bd!<cr>\nnnoremap CX :bufdo bd!<cr>\nnnoremap x :bd<cr>\ncommand! W w !sudo tee % > \/dev\/null\n\nnnoremap WH <c-w>h\nnnoremap WL <c-w>l\nnnoremap WJ <c-w>j\nnnoremap WK <c-w>k\n\nnnoremap WO :resize<cr>:vertical resize<cr>\nnnoremap WI :vertical resize<cr>\nnnoremap WU :resize<cr>\nnnoremap WW <c-w>w\nnnoremap WN <c-w>=\nnnoremap Wh 30<c-w><\nnnoremap Wl 30<c-w>>\nnnoremap Wj 10<c-w>+\nnnoremap Wk 10<c-w>-<\/code><\/pre>\n<p>\u5177\u4f53\u4e0d\u89e3\u91ca\u4e86, \u7528\u4e86\u8bb8\u4e45\u540e\u603b\u7ed3\u51fa\u6765\u7684\u6620\u5c04<\/p>\n<\/li>\n<li>\n<p>\u6298\u53e0\u6a21\u5f0f<\/p>\n<pre><code class=\"language-vim\">xnoremap ZH zf\nnnoremap ZH zc\nnnoremap ZL zo\nnnoremap Zh zC\nnnoremap Zl zO\nnnoremap ZU zE\nnnoremap ZI zM\nnnoremap ZO zR<\/code><\/pre>\n<p>hjkl \u8fd9\u4e48\u987a\u624b\u7684\u6309\u952e\u600e\u4e48\u53ef\u4ee5\u4e0d\u591a\u7528\u7528<\/p>\n<\/li>\n<li>\n<p>\u6bd4\u8f83\u6a21\u5f0f<\/p>\n<pre><code class=\"language-vim\">nnoremap D <nop>\nnnoremap DJ ]czz\nnnoremap DK [czz\nnnoremap DH do\nxnoremap DH :diffget<cr>\nnnoremap DL dp\nxnoremap DL :diffput<cr>\nnnoremap DD :diffupdate<cr><\/code><\/pre>\n<p>hjkl \u8fd9\u4e48\u987a\u624b\u7684\u6309\u952e\u600e\u4e48\u53ef\u4ee5\u4e0d\u591a\u7528\u7528 +1<\/p>\n<\/li>\n<li>\n<p>\u5feb\u901f\u5de6\u53f3\u7f29\u8fdb\u548c\u4e0a\u4e0b\u79fb\u52a8\u4e00\u884c<\/p>\n<pre><code class=\"language-vim\">nnoremap C <nop>\n\nnnoremap CH v\"txhh\"tp\nnnoremap CL v\"tx\"tp\nnnoremap CJ mT:m+<cr>`T:delmarks T<cr>:echo ''<cr>\nnnoremap CK mT:m-2<cr>`T:delmarks T<cr>:echo ''<cr>\n\nxnoremap CH \"txhh\"tp<code>&lt;hm&lt;<\/code>>hm>gv\nxnoremap CL \"tx\"tp<code>&lt;lm&lt;<\/code>>lm>gv\nxnoremap CJ :m'>+<cr>gv\nxnoremap CK :m'<-2<cr>gv\n\nnnoremap < <<\nnnoremap > >><\/code><\/pre>\n<\/li>\n<li>\n<p>\u589e\u51cf\u6570\u5b57<\/p>\n<pre><code class=\"language-vim\">nnoremap CI <c-a>\nnnoremap CU <c-x>\nset nrformats+=alpha<\/code><\/pre>\n<p>\u975e\u5e38\u4e0d\u559c\u6b22\u7528 ctrl \u7684\u5feb\u6377\u952e, \u4e8e\u662f\u53c8\u6574\u4e86\u4e2a\u5927\u5199\u5b57\u6bcd\u7684<\/p>\n<\/li>\n<li>\n<p>\u5b8f\u76f8\u5173<\/p>\n<pre><code class=\"language-vim\">function! ZF_Setting_VimMacroMap()\n    nnoremap Q :call ZF_Setting_VimMacroBegin(0)<cr>\n    nnoremap zQ :call ZF_Setting_VimMacroBegin(1)<cr>\n    nnoremap cQ :let @t='let @m=\"' . @m . '\"'<cr>q:\"tgP\n    nmap M @m\nendfunction\nfunction! ZF_Setting_VimMacroBegin(isAppend)\n    nnoremap Q q:call ZF_Setting_VimMacroEnd()<cr>\n    nnoremap M q:call ZF_Setting_VimMacroEnd()<cr>@m\n    if a:isAppend!=1\n        normal! qm\n    else\n        normal! qM\n    endif\nendfunction\nfunction! ZF_Setting_VimMacroEnd()\n    call ZF_Setting_VimMacroMap()\n    echo 'macro recorded, use M in normal mode to repeat'\nendfunction\naugroup ZF_Setting_VimMacro_augroup\n    autocmd!\n    autocmd User ZFVimrcPostNormal\n                \\  call ZF_Setting_VimMacroMap()\n                \\| nnoremap :: q:k$\n                \\| nnoremap \/\/ q\/k$\naugroup END<\/code><\/pre>\n<p>\u6309\u4e00\u4e2a\u952e\u660e\u663e\u6bd4\u6309\u4e24\u4e0b\u66f4\u5feb\u561b<\/p>\n<\/li>\n<li>\n<p>\u5feb\u901f\u7f16\u8f91\u547d\u4ee4\u884c\u7684\u547d\u4ee4<\/p>\n<pre><code class=\"language-vim\">function! ZF_Setting_cmdEdit()\n    let cmdtype = getcmdtype()\n    if cmdtype != ':' && cmdtype != '\/'\n        return ''\n    endif\n    call feedkeys(\"\\<c-c>q\" . cmdtype . 'k0' . (getcmdpos() - 1) . 'li', 'nt')\n    return ''\nendfunction\ncnoremap <silent><expr> ;; ZF_Setting_cmdEdit()<\/code><\/pre>\n<p>\u7b80\u5355\u7c97\u66b4\u53c8\u597d\u7528<\/p>\n<\/li>\n<li>\n<p>\u641c\u7d22\u76f8\u5173<\/p>\n<pre><code class=\"language-vim\">nnoremap \/ \/\\v\nnnoremap ? \/\\v\nnnoremap <leader>vr :.,$s\/\\v\/gec<left><left><left><left>\nxnoremap <leader>vr \"ty:.,$s\/\\v<c-r>t\/\/gec<left><left><left><left>\nnnoremap <leader>zr :.,$s\/\\v\/gec<left><left><left><left><<c-r><c-w>>\/\nxnoremap <leader>zr \"ty:.,$s\/\\v<<c-r>t>\/\/gec<left><left><left><left>\n\nnnoremap <leader>v\/ :%s\/\\v\/\/gn<left><left><left><left>\nxnoremap <leader>v\/ \"ty:%s\/\\v<c-r>t\/\/gn<left><left><left><left>\nnnoremap <leader>z\/ :%s\/\\v<<c-r>t>\/\/gn<left><left><left><left>\nxnoremap <leader>z\/ \"ty:%s\/\\v<<c-r>t>\/\/gn<left><left><left><left><\/code><\/pre>\n<p>\u81ea\u884c\u4f53\u4f1a\u4e00\u4e0b\u5c31\u77e5\u9053\u8fd9\u4e48\u6620\u5c04\u7684\u597d\u7528\u4e4b\u5904\u4e86<\/p>\n<p>\u5982\u679c\u6709\u88c5 <code>othree\/eregex.vim<\/code> \u7684\u8bdd, \u5bf9\u5e94\u547d\u4ee4\u66ff\u6362\u4e00\u4e0b, \u6bd4\u5982 <code>:S<\/code><\/p>\n<\/li>\n<li>\n<p>ctrl+z<\/p>\n<pre><code class=\"language-vim\">nnoremap <c-z> <nop><\/code><\/pre>\n<p>\u73b0\u5728\u5e94\u8be5\u4e0d\u4f1a\u6709\u4eba\u53bb\u7528\u9ed8\u8ba4\u7684 suspend \u529f\u80fd\u5427..?<\/p>\n<\/li>\n<\/ul>\n<h1>\u5c0f\u5de5\u5177<\/h1>\n<p>\u4e00\u4e9b\u7b80\u5355\u4f46\u5f88\u5b9e\u7528\u7684\u529f\u80fd, \u6211\u90fd\u6254\u5230\u5355\u72ec\u4e00\u4e2a\u63d2\u4ef6\u53bb\u6298\u817e\u4e86, \u53c2\u89c1 <a href=\"https:\/\/github.com\/ZSaberLv0\/ZFVimUtil\">ZSaberLv0\/ZFVimUtil<\/a><\/p>\n<p>\u8fd9\u91cc\u5217\u4e00\u4e9b\u975e\u5e38\u5b9e\u7528\u7684\u4e1c\u897f:<\/p>\n<ul>\n<li>\n<p><code>ZF_ExecShell<\/code>: \u6267\u884c shell \u547d\u4ee4\u5e76\u590d\u5236\u6267\u884c\u7ed3\u679c\u5230\u526a\u8d34\u677f<\/p>\n<p>\u8fd9\u4e2a\u5982\u679c shell \u547d\u4ee4\u719f\u6089\u7684\u8bdd\u53ef\u4ee5\u641e\u51fa\u975e\u5e38\u591a\u73a9\u6cd5, \u6bd4\u5982 find \u627e\u51fa\u6587\u4ef6\u4e4b\u540e\u8d34\u5230 vim buffer \u4e2d\u7f16\u8f91, \u5feb\u901f\u751f\u6210\u4e00\u5927\u5806 shell \u547d\u4ee4<\/p>\n<\/li>\n<li>\n<p><code>ZF_OpenAllFileInClipboard<\/code>: \u6253\u5f00\u526a\u8d34\u677f\u4e2d\u6240\u6709\u6587\u4ef6<\/p>\n<p>\u914d\u5408 <code>ZF_ExecShell<\/code> \u5f88\u597d\u7528, \u6bd4\u5982 find \u4e4b\u540e\u76f4\u63a5\u7528 vim \u6253\u5f00\u6240\u6709\u627e\u5230\u7684\u6587\u4ef6<\/p>\n<\/li>\n<li>\n<p><code>ZF_RunShellScriptInClipboard<\/code>: \u6267\u884c\u526a\u8d34\u677f\u4e2d\u7684 shell \u547d\u4ee4<\/p>\n<p>\u914d\u5408 <code>ZF_ExecShell<\/code>, \u7136\u540e\u7528 vim \u7f16\u8f91 shell \u547d\u4ee4, \u518d\u5feb\u901f\u6267\u884c, \u975e\u5e38\u65b9\u4fbf\u5b9e\u7528, \u800c\u4e14\u4e0d\u5bb9\u6613\u51fa\u9519<\/p>\n<\/li>\n<li>\n<p><code>ZF_ExecCmd<\/code>: \u6267\u884c vim \u547d\u4ee4\u5e76\u590d\u5236\u6267\u884c\u7ed3\u679c\u5230\u526a\u8d34\u677f<\/p>\n<\/li>\n<li>\n<p><code>ZF_Calc<\/code>: \u8ba1\u7b97\u5668<\/p>\n<\/li>\n<li>\n<p><code>ZF_NumberConvert<\/code>: \u8fdb\u5236\u8f6c\u6362<\/p>\n<\/li>\n<li>\n<p><code>ZF_DiffBuffer<\/code>: \u5feb\u901f\u6bd4\u8f83\u4e24\u4e2a buffer<\/p>\n<\/li>\n<li>\n<p><code>ZF_FoldBlock<\/code>: \u7528\u6b63\u5219\u6765\u505a\u4ee3\u7801\u5757\u6298\u53e0<\/p>\n<\/li>\n<li>\n<p><code>ZF_FoldBrace<\/code>: \u6298\u53e0\u5404\u79cd\u62ec\u53f7\u5185\u7684\u5185\u5bb9<\/p>\n<\/li>\n<\/ul>\n<h1>\u5176\u5b83\u8bbe\u7f6e\u9879<\/h1>\n<p>\u7136\u540e\u662f\u4e00\u4e9b vim \u9ed8\u8ba4\u8bbe\u7f6e\u7684\u4fee\u6539<\/p>\n<ul>\n<li>\n<p>\u5e38\u89c4<\/p>\n<pre><code class=\"language-vim\">set hidden\nset list\nset listchars=tab:>\\ ,trail:-,extends:>,precedes:<,nbsp:+\nset modeline\nsilent! set shortmess+=F\nset showcmd\nset showmatch\nset wildmenu\nset autoread\nset nobackup\nset nowritebackup\nset noswapfile\nset nowrap\nset synmaxcol=200\nset lazyredraw\nset guioptions=gtk\nset whichwrap=b,s,<,>,[,]\nset display=lastline\nset sessionoptions-=options\nfunction! ZF_Setting_common_action()\n    set number\n    set textwidth=0\n    set iskeyword=@,48-57,_,128-167,224-235\nendfunction\ncall ZF_Setting_common_action()\naugroup ZF_Setting_common_augroup\n    autocmd!\n    autocmd FileType,BufNewFile,BufReadPost * call ZF_Setting_common_action()\naugroup END<\/code><\/pre>\n<p>\u4e00\u822c\u90fd\u4f1a\u8bbe\u7f6e\u7684, \u4f46\u662f\u6ca1\u8bbe\u7684\u65f6\u5019\u60f3\u627e\u8fd8\u5f88\u9ebb\u70e6, \u5efa\u8bae\u90fd :help \u4e00\u4e0b<\/p>\n<\/li>\n<li>\n<p>\u5927\u6587\u4ef6\u7684\u81ea\u52a8\u9002\u914d<\/p>\n<pre><code class=\"language-vim\">function! ZF_Setting_isLargeFile(file)\n    let size = getfsize(a:file)\n    let largeFile = get(g:, 'ZF_Setting_largefile', 2 * 1024 * 1024)\n    if size == -2 || (largeFile > 0 && size > largeFile)\n        return 1\n    endif\n    let largeColumn = get(g:, 'ZF_Setting_largefile_column', 2000)\n    if largeColumn > 0 && filereadable(a:file)\n        for line in readfile(a:file, '', get(g:, 'ZF_Setting_largefile_columnChecklines', 20))\n            if len(line) >= largeColumn\n                return 1\n            endif\n        endfor\n    endif\n    return 0\nendfunction\naugroup ZF_Setting_largefile_augroup\n    autocmd!\n    function! s:ZF_Setting_largefile_restore(...)\n        set eventignore-=FileType\n    endfunction\n    function! s:ZF_Setting_largefile_setup(notifyRestore)\n        if ZF_Setting_isLargeFile(expand('<afile>'))\n            set eventignore+=FileType\n            if has('timers')\n                call timer_start(1, function('s:ZF_Setting_largefile_restore'))\n            endif\n            setlocal bufhidden=unload\n            setlocal foldmethod=manual\n            setlocal nofoldenable\n            setlocal nocursorline\n            setlocal norelativenumber\n            let b:zf_vim_largefile = 1\n            doautocmd User ZFVimLargeFile\n        else\n            if get(b:, 'zf_vim_largefile', 0) && a:notifyRestore\n                let b:zf_vim_largefile = 0\n                doautocmd User ZFVimLargeFile\n            endif\n        endif\n    endfunction\n    autocmd User ZFVimLargeFile silent\n    autocmd BufReadPre * call s:ZF_Setting_largefile_setup(0)\n    autocmd BufWritePost * call s:ZF_Setting_largefile_setup(1)\naugroup END<\/code><\/pre>\n<\/li>\n<li>\n<p>\u7f16\u7801<\/p>\n<pre><code class=\"language-vim\">set fileformats=unix,dos\nset fileformat=unix\nset encoding=utf-8\nset fileencoding=utf-8\nset fileencodings=utf-8,ucs-bom,chinese<\/code><\/pre>\n<p>\u56e0\u4e3a\u57fa\u672c\u90fd\u5728\u7528 UTF8, \u6240\u4ee5\u4e5f\u633a\u5c11\u9047\u5230\u7f16\u7801\u95ee\u9898, \u4e0d\u77e5\u9053\u662f\u5426\u6709\u66f4\u597d\u7684\u914d\u7f6e\u65b9\u6cd5<\/p>\n<\/li>\n<li>\n<p>\u641c\u7d22\u76f8\u5173<\/p>\n<pre><code class=\"language-vim\">set ignorecase\nset smartcase\nset hlsearch\nset incsearch\nlet s:ZF_Setting_ToggleSearch_last = ''\nfunction! ZF_Setting_ToggleSearch()\n    if s:ZF_Setting_ToggleSearch_last == '' || s:ZF_Setting_ToggleSearch_last == @\/\n        let s:ZF_Setting_ToggleSearch_last = @\/\n        echo '' . s:ZF_Setting_ToggleSearch_last\n        return\n    endif\n\n    echo 'choose search pattern:'\n    echo '  j: ' . s:ZF_Setting_ToggleSearch_last\n    echo '  k: ' . @\/\n    let confirm = nr2char(getchar())\n    redraw!\n\n    if confirm == 'j'\n        let @\/ = s:ZF_Setting_ToggleSearch_last\n        silent! normal! n\n        echo '' . @\/\n    elseif confirm == 'k'\n        let s:ZF_Setting_ToggleSearch_last = @\/\n        silent! normal! n\n        echo '' . @\/\n    else\n        echo 'canceled'\n    endif\nendfunction\nnnoremap zb :call ZF_Setting_ToggleSearch()<cr>\n\nnnoremap zn viw<esc>b\/<c-r><c-w><cr>N\nxnoremap zn \"ty\/<c-r>t<cr>N\nnnoremap zm viw<esc>b\/\\<<c-r><c-w>\\><cr>N\nxnoremap zm \"ty\/\\<<c-r>t\\><cr>N\n\nnnoremap z\/n viw<esc>b:%s\/<c-r><c-w>\/\/gn<cr>``\nxnoremap z\/n \"ty:%s\/<c-r>t\/\/gn<cr>``\nnnoremap z\/m viw<esc>b:%s\/\\<<c-r><c-w>\\>\/\/gn<cr>``\nxnoremap z\/m \"ty:%s\/\\<<c-r>t\\>\/\/gn<cr>``<\/code><\/pre>\n<p>\u9700\u8981\u63d0\u4e00\u4e0b\u7684\u662f incsearch \u611f\u89c9\u633a\u5b9e\u7528\u7684, \u4e0d\u8fc7\u4e0d\u5c11\u5e73\u53f0\u90fd\u56e0\u4e3a\u6027\u80fd\u800c\u9ed8\u8ba4\u5173\u95ed<\/p>\n<p>\u53e6\u5916, \u661f\u53f7\u641c\u7d22\u662f\u5168\u5b57\u5339\u914d, \u5176\u5b9e\u5927\u591a\u65f6\u5019\u4e0d\u8981\u5168\u5b57\u5339\u914d\u4f1a\u66f4\u65b9\u4fbf, \u6240\u4ee5\u7279\u610f\u53c8\u6298\u817e\u4e86 zn \u548c zm \u7684\u6309\u952e\u6620\u5c04<\/p>\n<\/li>\n<li>\n<p>tab \u548c\u5bf9\u9f50\u76f8\u5173<\/p>\n<pre><code class=\"language-vim\">set expandtab\nset shiftwidth=4\nset softtabstop=0\nset tabstop=4\nset smartindent\nset cindent\nset autoindent\nset cinkeys=0{,0},0),:,!^F,o,O,e<\/code><\/pre>\n<p>cinkeys \u662f\u4e2a\u597d\u73a9\u7684\u4e1c\u897f, \u6709\u5174\u8da3\u53ef\u4ee5 <code>:h<\/code> \u4e00\u4e0b<\/p>\n<\/li>\n<li>\n<p>\u7f16\u8f91\u76f8\u5173<\/p>\n<pre><code class=\"language-vim\">set virtualedit=onemore,block\nset selection=exclusive\nset guicursor=a:block-blinkon0\nset backspace=indent,eol,start\nset scrolloff=5\nset sidescrolloff=5\nset selectmode=key\nset mouse=<\/code><\/pre>\n<p>\u6bd4\u8f83\u5173\u952e\u7684\u662f <code>virtualedit<\/code> \u548c <code>selection<\/code><\/p>\n<p>\u53e6\u5916, \u628a mouse \u5173\u6389, ssh \u7ec8\u7aef\u91cc\u7528\u624d\u66f4\u65b9\u4fbf\u590d\u5236\u5c4f\u5e55\u5185\u5bb9<\/p>\n<\/li>\n<li>\n<p>\u7981\u7528\u659c\u4f53\u5b57<\/p>\n<pre><code class=\"language-vim\">if v:version > 704 && get(g:, 'ZF_Setting_disableItalic', 1)\n    function! ZF_Setting_disableItalic()\n        let his = ''\n        try\n            redir => his\n            silent highlight\n        finally\n            redir END\n        endtry\n        let his = substitute(his, '\\n\\s\\+', ' ', 'g')\n        for line in split(his, \"\\n\")\n            if line !~ ' links to ' && line !~ ' cleared$'\n                execute 'hi' substitute(substitute(line, ' xxx ', ' ', ''), 'italic', 'none', 'g')\n            endif\n        endfor\n    endfunction\n    function! ZF_Setting_disableItalic_auto()\n        if g:zf_low_performance\n            augroup ZF_Setting_disableItalic_auto_augroup\n                autocmd!\n            augroup END\n        else\n            silent! call ZF_Setting_disableItalic()\n            augroup ZF_Setting_disableItalic_auto_augroup\n                autocmd!\n                autocmd FileType,BufNewFile,BufReadPost * silent! call ZF_Setting_disableItalic()\n            augroup END\n        endif\n    endfunction\n    call ZF_Setting_disableItalic_auto()\n    augroup ZF_Setting_disableItalic_augroup\n        autocmd!\n        autocmd User ZFVimLowPerf call ZF_Setting_disableItalic_auto()\n    augroup END\nendif<\/code><\/pre>\n<p>vim \u7684\u659c\u4f53\u5b57\u4e00\u822c\u90fd\u5f88\u96be\u770b\u554a&#8230;<\/p>\n<\/li>\n<li>\n<p>\u72b6\u6001\u680f<\/p>\n<pre><code class=\"language-vim\">set laststatus=2\nlet &statusline='%<%f %m%r%=%k %l\/%L : %c   %y [%{(&#038;bomb?\",BOM \":\"\")}%{(&#038;fenc==\"\")?&#038;enc:&#038;fenc} %{(&#038;fileformat)}] %4b %04B %3p%%'\naugroup ZF_Setting_quickfix_statusline_augroup\n    autocmd!\n    autocmd BufWinEnter quickfix,qf\n                \\ let &#038;l:statusline='%<%t %=%k %l\/%L : %c %4b %04B %3p%%'\naugroup END<\/code><\/pre>\n<p>vim \u72b6\u6001\u680f\u7684\u663e\u793a, \u5176\u5b9e\u8fd9\u6837\u5c31\u8db3\u591f\u4e86, \u6ca1\u592a\u5927\u5fc5\u8981\u4e13\u95e8\u53bb\u5b89\u88c5\u63d2\u4ef6<\/p>\n<\/li>\n<li>\n<p>\u8865\u5168\u76f8\u5173<\/p>\n<pre><code class=\"language-vim\">inoremap <expr> <cr> pumvisible() ? \"\\<c-y>\" : \"\\<c-g>u\\<cr>\"\ninoremap <expr> <c-p> pumvisible() ? '<c-p>' : '<c-p><c-r>=pumvisible() ? \"\\<lt>Up>\" : \"\"<cr>'\ninoremap <expr> <c-n> pumvisible() ? '<c-n>' : '<c-n><c-r>=pumvisible() ? \"\\<lt>Down>\" : \"\"<cr>'\ninoremap <expr> <c-k> pumvisible() ? '<c-p>' : '<up>'\ninoremap <expr> <c-j> pumvisible() ? '<c-n>' : '<down>'\nset completeopt=menuone,longest\nset complete=.,w,b,u,k,t\nset omnifunc=syntaxcomplete#Complete<\/code><\/pre>\n<p>\u9700\u8981\u6ce8\u610f\u7684\u662f <code>complete<\/code> \u7684\u8bbe\u7f6e\u4f1a\u5f71\u54cd\u8865\u5168\u6027\u80fd<\/p>\n<\/li>\n<li>\n<p>\u6298\u53e0\u76f8\u5173<\/p>\n<pre><code class=\"language-vim\">function! ZF_Setting_fold_action()\n    set foldminlines=0\n    set foldlevel=128\n    set foldmethod=manual\n    normal! zE\nendfunction\ncall ZF_Setting_fold_action()\naugroup ZF_Setting_fold_augroup\n    autocmd!\n    autocmd FileType,BufNewFile,BufReadPost * call ZF_Setting_fold_action()\naugroup END<\/code><\/pre>\n<p>\u4e2a\u4eba\u66f4\u559c\u6b22\u624b\u52a8\u6298\u53e0<\/p>\n<\/li>\n<li>\n<p>\u6bd4\u8f83\u6a21\u5f0f<\/p>\n<pre><code class=\"language-vim\">set diffopt=filler,context:200<\/code><\/pre>\n<\/li>\n<li>\n<p>q \u952e<\/p>\n<pre><code class=\"language-vim\">nnoremap q <esc>\nxnoremap q <esc>\nonoremap q <esc>\naugroup ZF_setting_cmdwin\n    autocmd!\n    autocmd CmdwinEnter *\n                \\ nnoremap <buffer> <silent> q :q<cr>\naugroup END\naugroup ZF_Setting_qToEsc_augroup\n    autocmd!\n    autocmd CmdwinEnter *\n                \\ nnoremap <buffer> <silent> q :q<cr>\n    autocmd BufWinEnter quickfix,qf\n                \\  nnoremap <buffer> <silent> q :bd<cr>\n                \\| nnoremap <buffer> <silent> <leader>vt :bd<cr>\n                \\| nnoremap <buffer> <silent> <cr> <cr>:lclose<cr>\n                \\| nnoremap <buffer> <silent> o <cr>:lclose<cr>\n                \\| setlocal foldmethod=indent\n    autocmd FileType help\n                \\ nnoremap <buffer> <silent> q :q<cr>\naugroup END<\/code><\/pre>\n<p>vim \u7684\u5b8f\u662f\u4e2a\u597d\u7528\u7684\u4e1c\u897f, \u4e0d\u8fc7\u8bf4\u5b9e\u8bdd\u4f7f\u7528\u9891\u7387\u8fdc\u4e0d\u5982\u5176\u5b83\u4e00\u4e9b\u57fa\u672c\u6309\u952e, \u6240\u4ee5\u4ea4\u6362\u4e00\u4e0b Q \u548c q \u7528\u8d77\u6765\u66f4\u723d<\/p>\n<p>\u5c24\u5176\u5f88\u591a\u63d2\u4ef6\u90fd\u628a q \u4f5c\u4e3a\u9000\u51fa\u6309\u952e, \u7edf\u4e00\u4e00\u4e0b\u4e60\u60ef\u603b\u662f\u597d\u7684<\/p>\n<\/li>\n<\/ul>\n<h1>\u5e73\u53f0\u76f8\u5173\u8bbe\u7f6e<\/h1>\n<h2>Windows<\/h2>\n<ul>\n<li>\n<p>\u542f\u52a8\u6700\u5927\u5316<\/p>\n<pre><code class=\"language-vim\">autocmd GUIEnter * simalt ~x<\/code><\/pre>\n<p>\u4e00\u822c\u60c5\u51b5\u4e0b\u6211\u8fd8\u662f\u559c\u6b22\u542f\u52a8\u65f6\u5c45\u4e2d (\u53c2\u89c1 <a href=\"http:\/\/zsaber.com\/blog\/p\/14\">\u8fd9\u91cc<\/a>),<br \/>\n\u4e0d\u8fc7\u6709\u4e9b\u60c5\u51b5\u4e0b\u5e76\u4e0d\u9760\u8c31, \u5bf9\u4e0d\u9f50, \u6240\u4ee5\u6700\u5927\u5316\u8fd8\u5f97\u7559\u7740<\/p>\n<\/li>\n<li>\n<p>shell<\/p>\n<pre><code class=\"language-vim\">if exists('&completeslash')\n    set completeslash=slash\nendif\nlet $PATH = 'C:\\cygwin\\bin;C:\\cygwin64\\bin;' . $PATH<\/code><\/pre>\n<p>Windows \u4e0b\u8fd8\u662f\u8981\u5b89\u88c5\u4e2a cygwin \u6bd4\u8f83\u597d, \u8fd9\u6837\u624d\u6709 grep \u7b49\u5404\u79cd\u597d\u7528\u7684\u4e1c\u897f<\/p>\n<p>\u4f46\u662f\u5efa\u8bae\u4e0d\u8981\u8bbe cygwin \u4e3a\u9ed8\u8ba4 shell, \u4f7f\u7528 cmd.exe \u80fd\u517c\u5bb9\u5927\u591a\u6570\u60c5\u51b5 (\u56e0\u4e3a\u5927\u591a\u6570\u63d2\u4ef6\u6709\u5bf9 Windows \u505a\u517c\u5bb9\u5904\u7406, \u6b64\u65f6\u7528 cygwin \u53cd\u800c\u4f1a\u51fa\u95ee\u9898)<\/p>\n<p>\u628a cygwin \u7684\u8def\u5f84\u8bbe\u7f6e\u5230 PATH \u6700\u524d\u9762, \u53ef\u4ee5\u9632\u6b62\u4e00\u4e9b\u547d\u4ee4\u548c Windows \u81ea\u5e26\u7684\u51b2\u7a81, \u6bd4\u5982 <code>find<\/code><\/p>\n<p>shellslash \u5219\u89c1\u4ec1\u89c1\u667a\u4e86, \u5728 Windows \u4e0b\u5076\u5c14\u4f1a\u9020\u6210\u4e00\u4e9b\u63d2\u4ef6\u51fa\u95ee\u9898, \u597d\u5728\u65b0\u7248\u672c\u52a0\u4e86\u4e2a <code>completeslash<\/code><\/p>\n<\/li>\n<\/ul>\n<h2>Cygwin<\/h2>\n<p>\u672c\u914d\u7f6e\u4e5f\u53ef\u4ee5\u5b8c\u7f8e\u7684\u5728 cygwin \u4e0b\u4f7f\u7528, \u4e0d\u8fc7\u9700\u8981\u6ce8\u610f\u4e24\u4e2a\u53c2\u6570, \u5efa\u8bae\u653e\u5728 <code>.vimrc<\/code> \u9876\u90e8<\/p>\n<pre><code class=\"language-vim\">set shell=bash\nset shellcmdflag=-c<\/code><\/pre>\n<h2>DroidVim<\/h2>\n<p>Android \u5e73\u53f0\u6709\u76f8\u5f53\u597d\u7528\u7684 DroidVim \u4e86, \u672c\u6587\u914d\u7f6e\u4e5f\u53ef\u7528\u4e8e DroidVim, \u4e0d\u8fc7\u914d\u7f6e\u8d77\u6765\u4f1a\u9ebb\u70e6\u4e00\u70b9<\/p>\n<p>\u7eaf VimL \u7684\u63d2\u4ef6\u57fa\u672c\u90fd\u53ef\u6b63\u5e38\u4f7f\u7528, \u9700\u8981\u5916\u90e8\u547d\u4ee4\u7684\u5219\u53ef\u80fd\u65e0\u6cd5\u6b63\u5e38\u4f7f\u7528<\/p>\n<h3>\u5b89\u88c5<\/h3>\n<p>\u9996\u5148\u5f53\u7136\u5f97\u88c5 <a href=\"https:\/\/github.com\/shiftrot\/droidvim\/releases\">DroidVim<\/a> \u672c\u4f53\u4e86<\/p>\n<p>\u88c5\u5b8c\u540e\u53ef\u4ee5\u5148\u6253\u5f00\u73a9\u73a9, \u6539\u4e00\u4e0b DroidVim \u672c\u8eab\u7684\u8bbe\u7f6e<\/p>\n<h3>\u914d\u7f6e<\/h3>\n<p>DroidVim \u7684\u914d\u7f6e\u5728\u8fd9\u4e2a\u76ee\u5f55:<\/p>\n<pre><code>\/data\/data\/com.droidvim\/files\/home\/.vimrc<\/code><\/pre>\n<p>\u7136\u800c\u8fd9\u8d27\u91cc\u9762\u80af\u5b9a\u662f\u8dd1\u4e0d\u4e86 git \u4e86, \u6240\u4ee5\u5efa\u8bae\u5728\u7535\u8111\u4e0a\u66f4\u65b0\u597d\u914d\u7f6e, \u7136\u540e\u590d\u5236\u5230\u4e0a\u8ff0\u8def\u5f84<\/p>\n<p>\u9700\u8981\u590d\u5236\u7684\u5185\u5bb9, \u4ee5\u53ca\u6700\u540e\u7684\u76ee\u5f55\u7ed3\u6784:<\/p>\n<pre><code>\/data\/data\/com.droidvim\/files\/home\/\n    .vim\/\n        bundle\/\n            ...\n    .vimrc\n    zf_vimrc.vim<\/code><\/pre>\n<h1>\u4e0b\u8f7d<\/h1>\n<p>\u5171\u4eab\u4e00\u4e0b\u672c\u4eba\u5728\u7528\u7684\u7eff\u8272\u7248 vim (Windows \u7248\u672c), \u4ee5\u53ca\u76f8\u5e94\u7684 vimrc: <a href=\"http:\/\/pan.baidu.com\/s\/1nt3NJhJ\">\u70b9\u6211\u4e0b\u8f7d<\/a><\/p>\n<p>\u6216\u8005, \u4e5f\u53ef\u4ee5\u5230 <a href=\"https:\/\/github.com\/ZSaberLv0\/zf_vimrc.vim\">github<\/a> \u67e5\u770b\u6700\u65b0\u7684\u914d\u7f6e (\u65f6\u4e0d\u65f6\u66f4\u65b0)<\/p>\n<ul>\n<li>\u7f51\u76d8\u91cc\u7684\u7248\u672c\u53ef\u80fd\u8f83\u65e7, \u5efa\u8bae\u8fd0\u884c\u4e00\u4e0b <code>:call ZF_VimrcUpdate()<\/code>, \u53ef\u4ee5\u81ea\u52a8\u66f4\u65b0\u6240\u6709\u5185\u5bb9\u548c\u63d2\u4ef6<\/li>\n<li>\u7f51\u76d8\u91cc\u7684\u7eff\u8272\u7248\u5df2\u7ecf\u914d\u597d\u5927\u90e8\u5206\u4e1c\u897f, \u5efa\u8bae\u518d\u88c5\u4e2a <code>cygwin<\/code> + <code>python<\/code> + <code>node<\/code> \u5373\u53ef<\/li>\n<li>*nix \u7248\u672c\u53ef\u4ee5\u8d85\u5feb\u901f\u7684\u4e00\u952e\u5b89\u88c5\u5566: <code>curl zsaber.com\/vim | sh<\/code>, \u5177\u4f53\u53c2\u89c1 <a href=\"http:\/\/zsaber.com\/blog\/p\/94\">\u8fd9\u91cc<\/a><\/li>\n<\/ul>\n<p>over<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7528 vim \u4e5f\u6709\u4e00\u6bb5\u65f6\u95f4\u4e86, \u771f\u5fc3\u662f\u8d8a\u7528\u8d8a\u597d\u7528, \u73b0\u5df2\u4f5c\u4e3a\u6572\u4ee3\u7801\u4e3b\u529b\u4ee5\u53ca\u9ed8\u8ba4\u6587\u672c\u7f16\u8f91\u5668 \u4e8e\u662f\u6765\u5171\u4eab\u4e0b\u81ea\u5df1\u7684 v\u2026 <span class=\"read-more\"><a href=\"http:\/\/zsaber.com\/blog\/p\/31\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,11],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u4e2a\u4eba\u7684\u4e00\u4e9b vim \u63d2\u4ef6\u548c\u914d\u7f6e\u63a8\u8350 - \u67d0Z\u7684\u535a\u5ba2<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/zsaber.com\/blog\/p\/31\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4e2a\u4eba\u7684\u4e00\u4e9b vim \u63d2\u4ef6\u548c\u914d\u7f6e\u63a8\u8350 - \u67d0Z\u7684\u535a\u5ba2\" \/>\n<meta property=\"og:description\" content=\"\u7528 vim \u4e5f\u6709\u4e00\u6bb5\u65f6\u95f4\u4e86, \u771f\u5fc3\u662f\u8d8a\u7528\u8d8a\u597d\u7528, \u73b0\u5df2\u4f5c\u4e3a\u6572\u4ee3\u7801\u4e3b\u529b\u4ee5\u53ca\u9ed8\u8ba4\u6587\u672c\u7f16\u8f91\u5668 \u4e8e\u662f\u6765\u5171\u4eab\u4e0b\u81ea\u5df1\u7684 v\u2026 Read More &raquo;\" \/>\n<meta property=\"og:url\" content=\"http:\/\/zsaber.com\/blog\/p\/31\" \/>\n<meta property=\"og:site_name\" content=\"\u67d0Z\u7684\u535a\u5ba2\" \/>\n<meta property=\"article:published_time\" content=\"2015-05-19T07:59:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-05-28T01:45:58+00:00\" \/>\n<meta name=\"author\" content=\"Z\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"Z\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/zsaber.com\/blog\/p\/31#article\",\"isPartOf\":{\"@id\":\"http:\/\/zsaber.com\/blog\/p\/31\"},\"author\":{\"name\":\"Z\",\"@id\":\"http:\/\/zsaber.com\/blog\/#\/schema\/person\/6a6701fc719eff087e24e39a00e2280f\"},\"headline\":\"\u4e2a\u4eba\u7684\u4e00\u4e9b vim \u63d2\u4ef6\u548c\u914d\u7f6e\u63a8\u8350\",\"datePublished\":\"2015-05-19T07:59:55+00:00\",\"dateModified\":\"2020-05-28T01:45:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/zsaber.com\/blog\/p\/31\"},\"wordCount\":284,\"commentCount\":4,\"publisher\":{\"@id\":\"http:\/\/zsaber.com\/blog\/#\/schema\/person\/6a6701fc719eff087e24e39a00e2280f\"},\"articleSection\":[\"vim\",\"\u957f\u671f\u66f4\u65b0\"],\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/zsaber.com\/blog\/p\/31#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/zsaber.com\/blog\/p\/31\",\"url\":\"http:\/\/zsaber.com\/blog\/p\/31\",\"name\":\"\u4e2a\u4eba\u7684\u4e00\u4e9b vim \u63d2\u4ef6\u548c\u914d\u7f6e\u63a8\u8350 - \u67d0Z\u7684\u535a\u5ba2\",\"isPartOf\":{\"@id\":\"http:\/\/zsaber.com\/blog\/#website\"},\"datePublished\":\"2015-05-19T07:59:55+00:00\",\"dateModified\":\"2020-05-28T01:45:58+00:00\",\"breadcrumb\":{\"@id\":\"http:\/\/zsaber.com\/blog\/p\/31#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/zsaber.com\/blog\/p\/31\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/zsaber.com\/blog\/p\/31#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"http:\/\/zsaber.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4e2a\u4eba\u7684\u4e00\u4e9b vim \u63d2\u4ef6\u548c\u914d\u7f6e\u63a8\u8350\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/zsaber.com\/blog\/#website\",\"url\":\"http:\/\/zsaber.com\/blog\/\",\"name\":\"\u67d0Z\u7684\u535a\u5ba2\",\"description\":\"\u7b80\u4ecb\u53c8\u4e0d\u80fd\u5403\",\"publisher\":{\"@id\":\"http:\/\/zsaber.com\/blog\/#\/schema\/person\/6a6701fc719eff087e24e39a00e2280f\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/zsaber.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/zsaber.com\/blog\/#\/schema\/person\/6a6701fc719eff087e24e39a00e2280f\",\"name\":\"Z\",\"logo\":{\"@id\":\"http:\/\/zsaber.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"\u67d0Z\",\"sameAs\":[\"http:\/\/ZFFramework.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u4e2a\u4eba\u7684\u4e00\u4e9b vim \u63d2\u4ef6\u548c\u914d\u7f6e\u63a8\u8350 - \u67d0Z\u7684\u535a\u5ba2","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/zsaber.com\/blog\/p\/31","og_locale":"zh_CN","og_type":"article","og_title":"\u4e2a\u4eba\u7684\u4e00\u4e9b vim \u63d2\u4ef6\u548c\u914d\u7f6e\u63a8\u8350 - \u67d0Z\u7684\u535a\u5ba2","og_description":"\u7528 vim \u4e5f\u6709\u4e00\u6bb5\u65f6\u95f4\u4e86, \u771f\u5fc3\u662f\u8d8a\u7528\u8d8a\u597d\u7528, \u73b0\u5df2\u4f5c\u4e3a\u6572\u4ee3\u7801\u4e3b\u529b\u4ee5\u53ca\u9ed8\u8ba4\u6587\u672c\u7f16\u8f91\u5668 \u4e8e\u662f\u6765\u5171\u4eab\u4e0b\u81ea\u5df1\u7684 v\u2026 Read More &raquo;","og_url":"http:\/\/zsaber.com\/blog\/p\/31","og_site_name":"\u67d0Z\u7684\u535a\u5ba2","article_published_time":"2015-05-19T07:59:55+00:00","article_modified_time":"2020-05-28T01:45:58+00:00","author":"Z","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"Z","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"5 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/zsaber.com\/blog\/p\/31#article","isPartOf":{"@id":"http:\/\/zsaber.com\/blog\/p\/31"},"author":{"name":"Z","@id":"http:\/\/zsaber.com\/blog\/#\/schema\/person\/6a6701fc719eff087e24e39a00e2280f"},"headline":"\u4e2a\u4eba\u7684\u4e00\u4e9b vim \u63d2\u4ef6\u548c\u914d\u7f6e\u63a8\u8350","datePublished":"2015-05-19T07:59:55+00:00","dateModified":"2020-05-28T01:45:58+00:00","mainEntityOfPage":{"@id":"http:\/\/zsaber.com\/blog\/p\/31"},"wordCount":284,"commentCount":4,"publisher":{"@id":"http:\/\/zsaber.com\/blog\/#\/schema\/person\/6a6701fc719eff087e24e39a00e2280f"},"articleSection":["vim","\u957f\u671f\u66f4\u65b0"],"inLanguage":"zh-Hans","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/zsaber.com\/blog\/p\/31#respond"]}]},{"@type":"WebPage","@id":"http:\/\/zsaber.com\/blog\/p\/31","url":"http:\/\/zsaber.com\/blog\/p\/31","name":"\u4e2a\u4eba\u7684\u4e00\u4e9b vim \u63d2\u4ef6\u548c\u914d\u7f6e\u63a8\u8350 - \u67d0Z\u7684\u535a\u5ba2","isPartOf":{"@id":"http:\/\/zsaber.com\/blog\/#website"},"datePublished":"2015-05-19T07:59:55+00:00","dateModified":"2020-05-28T01:45:58+00:00","breadcrumb":{"@id":"http:\/\/zsaber.com\/blog\/p\/31#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["http:\/\/zsaber.com\/blog\/p\/31"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/zsaber.com\/blog\/p\/31#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"http:\/\/zsaber.com\/blog"},{"@type":"ListItem","position":2,"name":"\u4e2a\u4eba\u7684\u4e00\u4e9b vim \u63d2\u4ef6\u548c\u914d\u7f6e\u63a8\u8350"}]},{"@type":"WebSite","@id":"http:\/\/zsaber.com\/blog\/#website","url":"http:\/\/zsaber.com\/blog\/","name":"\u67d0Z\u7684\u535a\u5ba2","description":"\u7b80\u4ecb\u53c8\u4e0d\u80fd\u5403","publisher":{"@id":"http:\/\/zsaber.com\/blog\/#\/schema\/person\/6a6701fc719eff087e24e39a00e2280f"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/zsaber.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":["Person","Organization"],"@id":"http:\/\/zsaber.com\/blog\/#\/schema\/person\/6a6701fc719eff087e24e39a00e2280f","name":"Z","logo":{"@id":"http:\/\/zsaber.com\/blog\/#\/schema\/person\/image\/"},"description":"\u67d0Z","sameAs":["http:\/\/ZFFramework.com"]}]}},"_links":{"self":[{"href":"http:\/\/zsaber.com\/blog\/wp-json\/wp\/v2\/posts\/31"}],"collection":[{"href":"http:\/\/zsaber.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/zsaber.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/zsaber.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/zsaber.com\/blog\/wp-json\/wp\/v2\/comments?post=31"}],"version-history":[{"count":0,"href":"http:\/\/zsaber.com\/blog\/wp-json\/wp\/v2\/posts\/31\/revisions"}],"wp:attachment":[{"href":"http:\/\/zsaber.com\/blog\/wp-json\/wp\/v2\/media?parent=31"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/zsaber.com\/blog\/wp-json\/wp\/v2\/categories?post=31"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/zsaber.com\/blog\/wp-json\/wp\/v2\/tags?post=31"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}