如何設定vimrc?

lywon發表於2020-08-21

How To Vimrc

在炮製你自己的.vimrc配置時, 這裡只有一個原則.

不要把任何你不理解的一行放到你的vimrc中.

網際網路上有以噸計的入門手冊, 諸如這篇文章. 它們之中包含各種令人驚歎的Hack技巧, 這可以記你的Vim更好, 但為了讓你的環境更好完全從別人那兒照搬那些配置, 完全是 最糟糕 的做法.

真真切切地花一些時間來學習你的編輯器的構造, 其價值無可估量. 從投影儀上手抄下來通常會有且於增多的資訊逐漸保留, 同樣的道理, 將特性一個一個地新增到你的vimrc有助於提高你對Vim的總體理解程度.

因此, 這篇文章餘下部分將會是我來解釋我當前vimrc中的全盤使用的每一行, 希望你能在其中找到你此前沒有見到的技巧. 但, 我的vimrc離完美還差得遠.  我也一直在尋找可以使我的環境更好的東西新增進來, 所以如果你認為我遺漏了什麼重要的東西, 敬請告之: @duogblackio.

我將按邏輯分成幾個部分

  •   顏色

  •   空格與製表

  •   UI配置

  •   搜尋

  •   摺疊

  •   自定義移動

  •   自定義Leader按鍵

  •   Ctrlp設定

  •   啟動配置

  •   Tmux配置

  •   Autogroups

  •   備份

  •   自定義函式

  •   組織

  •   摺疊起來

這篇文章幾乎肯定會落後於我最近的vimrc, 你可以在 github 上找到最新的vimrc版本.

Colors

    colorscheme badwolf         " awesome colorscheme

顏色! 配色方案是主觀的, 我當前是安頓在Steve Losh所寫的badwolf上了. 我發現solarized難以至信的完整, 但也發現就我的品味而言它也那麼點兒乏味. 我的大量的時間也是和 molokai 度過的. 並且我仍然認為 molokai 是一個非常好的配色方案, 只是當前更偏好 badwolf.

繼續前進

    syntax enable           " enable syntax processing

註釋足以說清它的意思.  我將借這點時間, 儘可能地新增註釋, 以避免你的vimrc沒有此中的任何一行. 如果你像我一樣, 檔案寫得很長, 基本上你不會一直記住每一行在做什麼, 所以新增註釋有助於你以後能知道這些都是什麼鬼.

另外, 許多 vim 中的設定既有長名又有短名. 例如 background 和 bg 是一樣的. 為了此後的可讀性, 我強烈建議使用長名.

Spaces & Tabs

要使 tabs/spaces 能像你期望那樣正常工作, 你必須將如下像咒語一樣的符號, 扔到你的vimrc中. 你可能對這串符號相當困惑, 所以這兒有讓你快速進修的說明.

    set tabstop=4       " number of visual spaces per TAB

tabstop 就是視覺上顯示的一個 算作的空格個數. 所以, 當 vim 開啟檔案讀取到一個 字元時, 就會使用這麼多個空格來顯示 .

    set softtabstop=4   " number of spaces in tab when editing

編輯時一個 算作的空格數. 所以這既是你插入 時插入的空格數, 也是你用 backspace 移除的 (譯註: 連續的) 空格數.

    set expandtab       " tabs are spaces

expandtab 會將 轉換為多個空格. 僅此而已. 所以 僅僅成為了 "插入4個空格" 的快捷鍵.

(以上幾個配置)一起拿走吧, 這些選項是非常不錯, 對於編輯那些偏好空格而不是 tab的語言, 因為這可以確保不會使用 . 我每天花大多數時間與python與bash打交道, 二者的規範中寫明瞭要使用空格. 我喜歡它, 因為它意味著我的原始碼在所有的機器上看起來都是一樣的.

UI Config

這些選項會改變 vim 中那此散亂的視覺材料.

    set number              " show line numbers

顯示行號, 不解釋.

    set showcmd             " show command in bottom bar

showcmd 顯示在最右下角展示最近輸入的命令. 我雖然在這裡設定了, 但實際上由於我使用powerline外掛(稍後我們會涉及到), 所以在我的vim中找不到這一行的.

    set cursorline          " highlight current line

cursorline 會突出顯示(或加下劃線, 取決於你的本色方案)你的游標當前所在水平行. 我發覺當你 vim 的多個視窗來回切換或離開 vim 後再切換回來, 這樣更容易找到離開時那一行.

    filetype indent on      " load filetype-specific indent files

這既開啟檔案型別檢測, 又開啟基於此檢測的與語言相關的縮排檔案. 對於我來說, 這意味著, 每當我開啟一個 *.py 檔案, python 的縮排檔案即 ~/.vim/indent/python.vim 將會被載入.

    set wildmenu            " visual autocomplete for command menu

這是一個相當酷的特性, 我以前都不知道Vim有它. 你知道 Vim 會自動補全類似檔名的東西, 舉例子, 執行 :e ~/.vim? 那麼它將會提供一個所有匹配項的圖形選單, 如果你開啟了 wildmenu, 你就可以迴圈遍歷它們.

    set lazyredraw          " redraw only when we need to.

Vim 喜歡重繪螢幕, 即便是在它根本不必這樣做的期間內 – 比如在巨集(回放)的期間. 這告訴 Vim 不要費神地在這些場景下重繪螢幕, 以讓巨集更快.

    set showmatch           " highlight matching [{()}]

當你的游標移動到 類似圓括號(譯註: <([{都算)字元時, 與之配對的另外一個也會高亮顯示.

相關文章