都知道vim具有高度的可配置性,雖然有大神說(shuō)過(guò)原生的vim可以做插件提供的90%的功能,但是那也是需要一定的境界只酥,不說(shuō)別的褥实,就vim那出廠界面就會(huì)嚇走一批強(qiáng)迫癥患者了。所以入手vim的話裂允,第一步肯定是要將她配置成我們心中那美好的形態(tài)损离,不然真的下不來(lái)手。
首先是下載合適的vim版本绝编,linux下都是可以實(shí)現(xiàn)一鍵安裝僻澎,倒是windows下可能會(huì)下載錯(cuò),你下載的可能是32位的版本十饥,32位的不支持64位的python窟勃,所以建議下載64位的vim。
以下是本人vim配置的效果圖绷跑,說(shuō)不上多么高大上拳恋,至少是適合自己的,需要注意的是這個(gè)版本需要有python的支持砸捏,如果沒(méi)有python的話谬运,某些插件可能無(wú)法正常使用。
是不是迫不及待自己也想擁有一個(gè)呢垦藏,我們都是堅(jiān)定的“拿來(lái)主義”者梆暖,半小時(shí)內(nèi)就可以搞定,只需要以下2個(gè)步驟:
1掂骏、相關(guān)依賴
linux/mac:
sudo apt-get install curl vim exuberant-ctags git ack-grep
sudo pip install pep8 flake8 pyflakes isort yapf
windows:
2、復(fù)制配置文件
配置文件在Zhu-Jun/.vimrc弟灼,如果是linux/mac用戶级解,那么將里面的.vimrc拷貝到~/目錄下,如果是windows用戶田绑,將_vimrc拷貝到%USERPROFILE%目錄下勤哗,一般是C:\Users\XXX\(XXX是用戶名)。
以上兩步之后掩驱,打開(kāi)vim芒划,它會(huì)自動(dòng)加載需要的內(nèi)容,大概10-5分鐘欧穴,至此民逼,vim已經(jīng)配置完成,windows下如果報(bào)缺少lua53.dll涮帘,需要下載一個(gè)放到vim的安裝目錄下拼苍。
下面介紹一下vimrc文件的一些比較重要的內(nèi)容。
基本設(shè)置
set nocompatible? ? ? ? ? ? ? ? ? ? ? ? " 不兼容vi模式
set langmenu=en_US? ? ? ? ? ? ? ? ? ? ? " 菜單語(yǔ)言 中文為 zh_CN
set fileencodings=utf-8,chinese,latin-1
set fileencoding=utf-8? ? ? ? ? ? ? ? ? " 中文不亂碼了调缨,世界都好了
set number? ? ? ? ? ? ? ? ? ? ? ? ? ? ? " 窗口左側(cè)顯示行號(hào)
set relativenumber? ? ? ? ? ? ? ? ? ? ? " 配合number疮鲫,更高效的行間跳轉(zhuǎn)
au GUIEnter * simalt ~x? ? ? ? ? ? ? ? " vim 以最大化打開(kāi)
set ignorecase? ? ? ? ? ? ? ? ? ? ? ? ? " 查找時(shí)忽略大小寫
set smartcase? ? ? ? ? ? ? ? ? ? ? ? ? " 當(dāng)輸入中含有大寫的時(shí)候會(huì)強(qiáng)制區(qū)分大小寫
set incsearch? ? ? ? ? ? ? ? ? ? ? ? ? " 輸入進(jìn)行中實(shí)時(shí)匹配查找到的字符串
set autoindent? ? ? ? ? ? ? ? ? ? ? ? ? " 用來(lái)自動(dòng)縮進(jìn)
set smartindent? ? ? ? ? ? ? ? ? ? ? ? " 自動(dòng)判斷縮進(jìn)長(zhǎng)度苟鸯,一般適用于類C語(yǔ)言
set expandtab? ? ? ? ? ? ? ? ? ? ? ? ? " 用一定的空格來(lái)代替tab
set tabstop=4? ? ? ? ? ? ? ? ? ? ? ? ? " tab占4個(gè)空格
set softtabstop=4? ? ? ? ? ? ? ? ? ? ? " 設(shè)置expandtab的情況下,輸入backspace刪除的空格
set shiftwidth=4? ? ? ? ? ? ? ? ? ? ? ? "一般情況下tabstop=softtabstop=shiftwidth棚点,這樣不會(huì)亂
上面比較容易搞亂的應(yīng)該tab相關(guān)的內(nèi)容了早处,如果你還是很亂,可以看看這里:Tabs and Spaces
key-notation(鍵位標(biāo)識(shí))
key跟標(biāo)識(shí)的對(duì)應(yīng)關(guān)系瘫析,詳情可見(jiàn):help key-notation
map
map可以理解成鍵位的映射砌梆,如:
nmap G Gzz?
上面指令的作用是在normal模式下將G(表示移動(dòng)的最后一行)映射 Gzz(移動(dòng)到最后一行+居中,zz表示居中)贬循,也就是命令生效之后咸包,G就跟Gzz有相同的作用。
其中n表示在normal模式下起作用杖虾,同理烂瘫,vmap表示在visual模式下,具體對(duì)應(yīng)規(guī)則見(jiàn)下圖:
值得注意的是nmap一般寫成nnoremap比較好奇适,中間的nore表示no recursion坟比,不遞歸,比如
nmap w ww
nmap ww www
上面兩句話導(dǎo)致的結(jié)果是按完一次w之后嚷往,光標(biāo)會(huì)不斷地向后移動(dòng)葛账,因?yàn)閣觸發(fā)ww,而ww又會(huì)觸發(fā)w皮仁,如此遞歸下去籍琳,如果改成nnoremap w ww之后就不會(huì)再出現(xiàn)這個(gè)問(wèn)題。
如果map的第二個(gè)參數(shù)是以:開(kāi)頭贷祈,那么表示映射的內(nèi)容在命令行中生效趋急,如
map tn :tabn<CR>
上面指令的意思是,輸入tn势誊,相當(dāng)于①輸入:(進(jìn)入命令行模式)②輸入tabn(跳到另一個(gè)tab頁(yè)面)③輸入回車
mapleader
這是vim中一個(gè)很重要的概念呜达,leader的存在可以非常靈活地自定義快捷方式,很大地提高編輯的效率键科。
let mapleader=","
nmap <leader>h ^
默認(rèn)的leader鍵是\闻丑,這還是有點(diǎn)反人類的漩怎,所以上面的第一句的意思是將leader鍵設(shè)置成逗號(hào)“勋颖,”,你也可以根據(jù)自己的喜好設(shè)置成空格(let mapleader = "\<space>")等勋锤,第二句話的意思表示當(dāng)你再normal模式下輸入,l(逗號(hào)+h)饭玲,那么光標(biāo)會(huì)移動(dòng)到行首,是不是比按<Shift>+6方便不少叁执?
Vundle
vim的擴(kuò)展性很大程度上來(lái)自于各種插件的存在茄厘,一般情況下你可能會(huì)用到非常多的插件矮冬,如上面的配置文件中就有30多個(gè)插件,這么多的插件管理起來(lái)還是很麻煩的次哈,增啥改查都很頭疼胎署,有了vundle就再也不怕了,如果你用了上面提供的配置文件的話窑滞,其實(shí)你已經(jīng)見(jiàn)識(shí)到了它的強(qiáng)大琼牧,因?yàn)樗呀?jīng)默默幫你裝了30多個(gè)插件。
set rtp+=~/vimfiles/bundle/Vundle.vim? "表示vundle的位置在Vundle.vim下
call vundle#begin('~/vimfiles/bundle/') ?"表示插件存放的位置在bundle下
如果想添加什么插件只需要call vundle#begin和call vundle#end之間添加github上的插件位置哀卫,然后執(zhí)行PluginInstall巨坊。刪除更簡(jiǎn)單了,只需要將Plugin那一行去掉或者注釋掉此改,然后執(zhí)行PluginClean趾撵,接著輸入Y就OK了,插件升級(jí)執(zhí)行PluginUpdate一鍵搞定共啃。需要注意的是PluginInstall和PluginClean之間可能需要先保存然后重啟占调。
如果你修改了vimrc文件后想立即生效,但是又不想重啟移剪,有什么解決的辦法嗎妈候?當(dāng)然有,只需要so? ~/.vimrc(so ~/_vimrc)挂滓,其中so表示source苦银。 如果你當(dāng)前編輯的文件就是vimrc文件的話,那么so %就夠了赶站,其中%是一個(gè)特殊的寄存器幔虏,表示當(dāng)前文件的名稱,具體可以:help registers贝椿。
插件非常多想括,Vim Awesome上提供了非常詳細(xì)的插件列表,總有幾個(gè)是你的菜烙博,在此我只推薦一個(gè)插件:
Plugin 'ianva/vim-youdao-translater'
有很多插件的官方文檔缺少中文說(shuō)明瑟蜈,說(shuō)多都是淚,如果你的英語(yǔ)足夠好渣窜,那就沒(méi)必要了铺根。這個(gè)插件其實(shí)就是有道翻譯,用法很簡(jiǎn)單乔宿,Ctrl-t會(huì)翻譯光標(biāo)下對(duì)應(yīng)的單詞位迂,<leader>yd 可以讓你輸入想翻譯的單詞。
Abbreviate
在idea intellij中有大量代碼可以通過(guò)Ctrl-j完成,比如sout然后ctrl-j就可以快速生成System.out.println()掂林。vim也不落后臣缀,只不過(guò)需要你自己去思考要配置哪些適合自己的縮寫,一般用來(lái)縮寫的都是使用頻率不高的詞泻帮,不然反而會(huì)降低效率精置,比較常見(jiàn)的有:
iabbrev teh the 或者 iab teh the
當(dāng)你把the輸錯(cuò)成teh時(shí),會(huì)自動(dòng)幫你更正為the锣杂。跟map類似氯窍,iab中的i表示作用在insert模式下,cabbrev(cab)僅作用于命令行模式蹲堂,abbrev ?(ab )作用于所有模式下狼讨,觸發(fā)縮寫替換的快捷鍵是CTRL-]。
配置里面其它的很多內(nèi)容都牽涉到vimscript柒竞,相信有一定編程基礎(chǔ)的話讀起來(lái)還是不費(fèi)勁的政供,留著以后慢慢摸索也不遲。