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

版本 36c766bdad1a26add292eb9001d4ad2f1dcd3e94

vim/vimrc

Changes from 36c766bdad1a26add292eb9001d4ad2f1dcd3e94 to a89f916d448bb0f29da0ee67c5072326f9d5226f

---
title: vimrc設定教學
toc: no
categories: vim
...

*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=""``
  - **停用游標選取:**游標無法選取文字,滾輪只會移動光標的位置。

|

+ 所有設定都可以在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``增加縮排