【進擊的Vimmer】vim配置與vimrc文件詳解

都知道vim具有高度的可配置性,雖然有大神說過原生的vim可以做插件提供的90%的功能,但是那也是需要一定的境界,不說別的,就vim那出廠界面就會嚇走一批強迫癥患者了。所以入手vim的話,第一步肯定是要將她配置成我們心中那美好的形態,不然真的下不來手。

首先是下載合適的vim版本,linux下都是可以實現一鍵安裝,倒是windows下可能會下載錯,你下載的可能是32位的版本,32位的不支持64位的python,所以建議下載64位的vim。

以下是本人vim配置的效果圖,說不上多么高大上,至少是適合自己的,需要注意的是這個版本需要有python的支持,如果沒有python的話,某些插件可能無法正常使用。

配置完成的vim

是不是迫不及待自己也想擁有一個呢,我們都是堅定的“拿來主義”者,半小時內就可以搞定,只需要以下2個步驟:

1、相關依賴

linux/mac:

sudo apt-get install curl vim exuberant-ctags git ack-grep


sudo pip install pep8 flake8 pyflakes isort yapf

windows:

下載Git?和?Curl,下載安裝python3.6

2、復制配置文件

配置文件在Zhu-Jun/.vimrc,如果是linux/mac用戶,那么將里面的.vimrc拷貝到~/目錄下,如果是windows用戶,將_vimrc拷貝到%USERPROFILE%目錄下,一般是C:\Users\XXX\(XXX是用戶名)。

以上兩步之后,打開vim,它會自動加載需要的內容,大概10-5分鐘,至此,vim已經配置完成,windows下如果報缺少lua53.dll,需要下載一個放到vim的安裝目錄下。

下面介紹一下vimrc文件的一些比較重要的內容。

基本設置

set nocompatible? ? ? ? ? ? ? ? ? ? ? ? " 不兼容vi模式

set langmenu=en_US? ? ? ? ? ? ? ? ? ? ? " 菜單語言 中文為 zh_CN

set fileencodings=utf-8,chinese,latin-1

set fileencoding=utf-8? ? ? ? ? ? ? ? ? " 中文不亂碼了,世界都好了

set number? ? ? ? ? ? ? ? ? ? ? ? ? ? ? " 窗口左側顯示行號

set relativenumber? ? ? ? ? ? ? ? ? ? ? " 配合number,更高效的行間跳轉

au GUIEnter * simalt ~x? ? ? ? ? ? ? ? " vim 以最大化打開

set ignorecase? ? ? ? ? ? ? ? ? ? ? ? ? " 查找時忽略大小寫

set smartcase? ? ? ? ? ? ? ? ? ? ? ? ? " 當輸入中含有大寫的時候會強制區分大小寫

set incsearch? ? ? ? ? ? ? ? ? ? ? ? ? " 輸入進行中實時匹配查找到的字符串

set autoindent? ? ? ? ? ? ? ? ? ? ? ? ? " 用來自動縮進

set smartindent? ? ? ? ? ? ? ? ? ? ? ? " 自動判斷縮進長度,一般適用于類C語言

set expandtab? ? ? ? ? ? ? ? ? ? ? ? ? " 用一定的空格來代替tab

set tabstop=4? ? ? ? ? ? ? ? ? ? ? ? ? " tab占4個空格

set softtabstop=4? ? ? ? ? ? ? ? ? ? ? " 設置expandtab的情況下,輸入backspace刪除的空格

set shiftwidth=4? ? ? ? ? ? ? ? ? ? ? ? "一般情況下tabstop=softtabstop=shiftwidth,這樣不會亂

上面比較容易搞亂的應該tab相關的內容了,如果你還是很亂,可以看看這里:Tabs and Spaces

key-notation(鍵位標識)

key跟標識的對應關系,詳情可見:help key-notation


map

map可以理解成鍵位的映射,如:

nmap G Gzz?

上面指令的作用是在normal模式下將G(表示移動的最后一行)映射 Gzz(移動到最后一行+居中,zz表示居中),也就是命令生效之后,G就跟Gzz有相同的作用。

其中n表示在normal模式下起作用,同理,vmap表示在visual模式下,具體對應規則見下圖:

map與mode的對應關系

值得注意的是nmap一般寫成nnoremap比較好,中間的nore表示no recursion,不遞歸,比如

nmap w ww


nmap ww www

上面兩句話導致的結果是按完一次w之后,光標會不斷地向后移動,因為w觸發ww,而ww又會觸發w,如此遞歸下去,如果改成nnoremap w ww之后就不會再出現這個問題。

如果map的第二個參數是以:開頭,那么表示映射的內容在命令行中生效,如

map tn :tabn<CR>

上面指令的意思是,輸入tn,相當于①輸入:(進入命令行模式)②輸入tabn(跳到另一個tab頁面)③輸入回車

mapleader

這是vim中一個很重要的概念,leader的存在可以非常靈活地自定義快捷方式,很大地提高編輯的效率。

let mapleader=","

nmap <leader>h ^

默認的leader鍵是\,這還是有點反人類的,所以上面的第一句的意思是將leader鍵設置成逗號“,”,你也可以根據自己的喜好設置成空格(let mapleader = "\<space>")等,第二句話的意思表示當你再normal模式下輸入,l(逗號+h),那么光標會移動到行首,是不是比按<Shift>+6方便不少?

Vundle

vim的擴展性很大程度上來自于各種插件的存在,一般情況下你可能會用到非常多的插件,如上面的配置文件中就有30多個插件,這么多的插件管理起來還是很麻煩的,增啥改查都很頭疼,有了vundle就再也不怕了,如果你用了上面提供的配置文件的話,其實你已經見識到了它的強大,因為它已經默默幫你裝了30多個插件。

set rtp+=~/vimfiles/bundle/Vundle.vim? "表示vundle的位置在Vundle.vim下

call vundle#begin('~/vimfiles/bundle/') ?"表示插件存放的位置在bundle下

如果想添加什么插件只需要call vundle#begin和call vundle#end之間添加github上的插件位置,然后執行PluginInstall。刪除更簡單了,只需要將Plugin那一行去掉或者注釋掉,然后執行PluginClean,接著輸入Y就OK了,插件升級執行PluginUpdate一鍵搞定。需要注意的是PluginInstall和PluginClean之間可能需要先保存然后重啟

如果你修改了vimrc文件后想立即生效,但是又不想重啟,有什么解決的辦法嗎?當然有,只需要so? ~/.vimrc(so ~/_vimrc),其中so表示source。 如果你當前編輯的文件就是vimrc文件的話,那么so %就夠了,其中%是一個特殊的寄存器,表示當前文件的名稱,具體可以:help registers。

插件非常多,Vim Awesome上提供了非常詳細的插件列表,總有幾個是你的菜,在此我只推薦一個插件:

Plugin 'ianva/vim-youdao-translater'

有很多插件的官方文檔缺少中文說明,說多都是淚,如果你的英語足夠好,那就沒必要了。這個插件其實就是有道翻譯,用法很簡單,Ctrl-t會翻譯光標下對應的單詞,<leader>yd 可以讓你輸入想翻譯的單詞。

Abbreviate

在idea intellij中有大量代碼可以通過Ctrl-j完成,比如sout然后ctrl-j就可以快速生成System.out.println()。vim也不落后,只不過需要你自己去思考要配置哪些適合自己的縮寫,一般用來縮寫的都是使用頻率不高的詞,不然反而會降低效率,比較常見的有:

iabbrev teh the 或者 iab teh the

當你把the輸錯成teh時,會自動幫你更正為the。跟map類似,iab中的i表示作用在insert模式下,cabbrev(cab)僅作用于命令行模式,abbrev ?(ab )作用于所有模式下,觸發縮寫替換的快捷鍵是CTRL-]。


配置里面其它的很多內容都牽涉到vimscript,相信有一定編程基礎的話讀起來還是不費勁的,留著以后慢慢摸索也不遲。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,995評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容

  • 安裝依賴庫(支持Python 3、Lua、Ruby) sudo apt-get install libncurse...
    Cyfeng閱讀 2,130評論 0 2
  • 真實有效的Vim配置記錄(macOS) 以前在Ubuntu里配置了兩次Vim,macOS中配置了一次,都沒有配置成...
    染微言閱讀 11,493評論 0 8
  • 網上已經有很多很好的vim使用和配置教程。但每個人都有自己的習慣,因此教程僅作參考,只有在使用過程中才能體會到具體...
    yiekue閱讀 96,805評論 51 199
  • .vimrc內容如下 "=============================================...
    Morb1d閱讀 1,026評論 0 0
  • 雨后天剛放晴,在圖書館倚窗而坐,貪婪地呼吸著窗外飄進來夾雜著淡淡花香的新鮮空氣,偶爾的小憩放松身心,緩解因長時間注...
    風信子亦晴閱讀 599評論 1 2