分享到plurk 分享到twitter 分享到facebook

版本 7b2a039f051b532cd5fb09d24a9cb0ae64cadce0

vimrc設定教學

vim是強大的IDE,很多初學者碰到vim會很不習慣,像是用hjkl鍵來移動光標,不小心按到方向鍵讓編輯一整個崩潰的悲慘經驗,使得初學者不喜歡碰vim(被視窗化介面給寵壞了)。vim強大的地方在於使用者可以自由的設定和擴充功能,讓vim為自己工作,進而擁有良好得編輯體驗。良好的vim設定,使得在coding過程中不用去煩惱編輯器的問題,增強coding效率。

前置作業

  • 安裝vim
    剛安裝好的linux上只有vi,vi預設不支援方向鍵移動光標,還有自動上色等功能。但是vim比vi強大很多很多,除了以上功能不用另外設定外,還支援多步復原/取消復原、同時編輯多個檔案等。
    • $ sudo apt-get install vim # linux的安裝指令(常用)
  • 建立vim設定檔.vimrc
    • $ cd # 移動到使用者的家目錄
    • $ vi .vimrc # 建立新的vim設定檔

基本設定

  • :set nu
    • 顯示行號:對於debug相當有幫助!
  • :set ai
    • 自動對齊縮排 縮排即為一個tab字元(‘\t’)。也就是說,如果上一行有兩個tab的寬度,按enter繼續編輯下一行時會自動保留兩個tab鍵的寬度。
  • :set cursorline
    • 光標底線:光標所在的那一行會有底線,幫助尋找光標位置
  • :set bg=light
    • 上色模式-針對亮背景上色
    • 預設為亮背景(白色等)上色,但是終端機的初始背景色為深紫色,會出現文字失蹤(註解為深藍色)的情況。將這一行換成:set bg=dark即可。
  • :set tabstop=4
    • 縮排間隔數:預設為8格對齊
    • 也就是說按一次tab鍵,游標會跳到第8*n+1格。雖有多個空格但實際上只有一個tab字元

.. [Not sure]- :set shiftwidth=4 自動縮排間隔數:?

  • :set mouse=a
    • 啟用游標選取:游標可以直接選取文字,滾輪可以直接滑動頁面(非移動光標)。
  • :set mouse=""
    • 停用游標選取:游標無法選取文字,滾輪只會移動光標的位置。
  • :set ruler
    • 顯示右下角的設定值
  • :set backspace=2
    • 在insert模式啟用backspace鍵
  • :set formatoptions+=r
    • 自動註解(注意:若要貼上的文件某一行有註解,會因為此項設定而讓其以下每一行都變成註解)
  • :set history=100
    • 保留 100 個使用過的指令
  • :set incsearch
    • 在關鍵字尚未完全輸入完畢前就顯示結果
  • 所有設定都可以在vim的command-mode中作即時變更,像是如果要關閉自動縮排對齊功能時,先按Esc離開insert-mode,輸入:set noai就可以了。

Key Mapping

如果有使用過其他IDE,就會發現有個好用的功能,括號自動對齊,例如:只輸入左括號,IDE自動幫你完成右括號。可以使用key mapping來完成。

  • :inoremap ( ()<Esc>i
    • 在insert-mode下,只要輸入’(’,vim會先執行輸入()<Esc>進入Command-mode→i進入Insert-mode→就會發現光標在“(”“)”之間了
    • 其他類似應用還有:
      • :inoremap " ""<Esc>i
      • :inoremap ' ''<Esc>i
      • :inoremap [ []<Esc>i
  • :inoremap { {<CR>}<Esc>ko<Tab>
    • 在coding的過程中{}的使用量也很大,所以這個key mapping對於coding相當有幫助!
    • 在insert-mode時,當輸入’{’,vim會輸入{<CR>換行→輸入}→進入command-mode→k光標上移→o插入新的一行→Tab增加縮排