Vim 配置入門

阮一峰發表於2018-09-16

Vim 是最重要的編輯器之一,主要有下面幾個優點。

  • 可以不使用滑鼠,完全用鍵盤操作。
  • 系統資源佔用小,開啟大檔案毫無壓力。
  • 鍵盤命令變成肌肉記憶以後,操作速度極快。
  • 伺服器預設都安裝 Vi 或 Vim。

Vim 的配置不太容易,它有自己的語法,許許多多的命令。我總是記不清楚,所以就整理了下面這篇文章,列出主要配置項的含義。

一、基礎知識

Vim 的全域性配置一般在/etc/vim/vimrc或者/etc/vimrc,對所有使用者生效。使用者個人的配置在~/.vimrc

如果只對單次編輯啟用某個配置項,可以在命令模式下,先輸入一個冒號,再輸入配置。舉例來說,set number這個配置可以寫在.vimrc裡面,也可以在命令模式輸入。


:set number

配置項一般都有"開啟"和"關閉"兩個設定。"關閉"就是在"開啟"前面加上字首"no"。


" 開啟
set number

" 關閉
set nonumber

上面程式碼中,雙引號開始的行表示註釋。

查詢某個配置項是開啟還是關閉,可以在命令模式下,輸入該配置,並在後面加上問號。


:set number?

上面的命令會返回number或者nonumber

如果想檢視幫助,可以使用help命令。


:help number

二、基本配置

(1)


set nocompatible

不與 Vi 相容(採用 Vim 自己的操作命令)。

(2)


syntax on

開啟語法高亮。自動識別程式碼,使用多種顏色顯示。

(3)


set showmode

在底部顯示,當前處於命令模式還是插入模式。

(4)


set showcmd

命令模式下,在底部顯示,當前鍵入的指令。比如,鍵入的指令是2y3d,那麼底部就會顯示2y3,當鍵入d的時候,操作完成,顯示消失。

(5)


set mouse=a

支援使用滑鼠。

(6)


set encoding=utf-8  

使用 utf-8 編碼。

(7)

 
set t_Co=256

啟用256色。

(8)


filetype indent on

開啟檔案型別檢查,並且載入與該型別對應的縮排規則。比如,如果編輯的是.py檔案,Vim 就是會找 Python 的縮排規則~/.vim/indent/python.vim

三、縮排

(9)


set autoindent

按下Enter鍵後,下一行的縮排會自動跟上一行的縮排保持一致。

(10)


set tabstop=2

按下 Tab 鍵時,Vim 顯示的空格數。

(11)


set shiftwidth=4

在文字上按下>>(增加一級縮排)、<<(取消一級縮排)或者==(取消全部縮排)時,每一級的字元數。

(12)


set expandtab

由於 Tab 鍵在不同的編輯器縮排不一致,該設定自動將 Tab 轉為空格。

(13)


set softtabstop=2

Tab 轉為多少個空格。

四、外觀

(14)


set number

顯示行號

(15)


set relativenumber

顯示游標所在的當前行的行號,其他行都為相對於該行的相對行號。

(16)


set cursorline

游標所在的當前行高亮。

(17)


set textwidth=80

設定行寬,即一行顯示多少個字元。

(18)


set wrap

自動折行,即太長的行分成幾行顯示。


set nowrap

關閉自動折行

(19)


set linebreak

只有遇到指定的符號(比如空格、連詞號和其他標點符號),才發生折行。也就是說,不會在單詞內部折行。

(20)


set wrapmargin=2

指定折行處與編輯視窗的右邊緣之間空出的字元數。

(21)


set scrolloff=5

垂直滾動時,游標距離頂部/底部的位置(單位:行)。

(22)


set sidescrolloff=15

水平滾動時,游標距離行首或行尾的位置(單位:字元)。該配置在不折行時比較有用。

(23)


set laststatus=2

是否顯示狀態列。0 表示不顯示,1 表示只在多視窗時顯示,2 表示顯示。

(24)


set  ruler

在狀態列顯示游標的當前位置(位於哪一行哪一列)。

五、搜尋

(25)


set showmatch

游標遇到圓括號、方括號、大括號時,自動高亮對應的另一個圓括號、方括號和大括號。

(26)


set hlsearch

搜尋時,高亮顯示匹配結果。

(27)


set incsearch

輸入搜尋模式時,每輸入一個字元,就自動跳到第一個匹配的結果。

(28)


set ignorecase

搜尋時忽略大小寫。

(29)


set smartcase

如果同時開啟了ignorecase,那麼對於只有一個大寫字母的搜尋詞,將大小寫敏感;其他情況都是大小寫不敏感。比如,搜尋Test時,將不匹配test;搜尋test時,將匹配Test

六、編輯

(30)


set spell spelllang=en_us

開啟英語單詞的拼寫檢查。

(31)


set nobackup

不建立備份檔案。預設情況下,檔案儲存時,會額外建立一個備份檔案,它的檔名是在原檔名的末尾,再新增一個波浪號(〜)。

(32)


set noswapfile

不建立交換檔案。交換檔案主要用於系統崩潰時恢復檔案,檔名的開頭是.、結尾是.swp

(33)


set undofile

保留撤銷歷史。

Vim 會在編輯時儲存操作歷史,用來供使用者撤消更改。預設情況下,操作記錄只在本次編輯時有效,一旦編輯結束、檔案關閉,操作歷史就消失了。

開啟這個設定,可以在檔案關閉後,操作記錄保留在一個檔案裡面,繼續存在。這意味著,重新開啟一個檔案,可以撤銷上一次編輯時的操作。撤消檔案是跟原檔案儲存在一起的隱藏檔案,檔名以.un~開頭。

(34)


set backupdir=~/.vim/.backup//  
set directory=~/.vim/.swp//
set undodir=~/.vim/.undo// 

設定備份檔案、交換檔案、操作歷史檔案的儲存位置。

結尾的//表示生成的檔名帶有絕對路徑,路徑中用%替換目錄分隔符,這樣可以防止檔案重名。

(35)


set autochdir

自動切換工作目錄。這主要用在一個 Vim 會話之中開啟多個檔案的情況,預設的工作目錄是開啟的第一個檔案的目錄。該配置可以將工作目錄自動切換到,正在編輯的檔案的目錄。

(36)


set noerrorbells

出錯時,不要發出響聲。

(37)


set visualbell

出錯時,發出視覺提示,通常是螢幕閃爍。

(38)


set history=1000

Vim 需要記住多少次歷史操作。

(39)


set autoread

開啟檔案監視。如果在編輯過程中檔案發生外部改變(比如被別的編輯器編輯了),就會發出提示。

(40)


set listchars=tab:»■,trail:■
set list

如果行尾有多餘的空格(包括 Tab 鍵),該配置將讓這些空格顯示成可見的小方塊。

(41)


set wildmenu
set wildmode=longest:list,full

命令模式下,底部操作指令按下 Tab 鍵自動補全。第一次按下 Tab,會顯示所有匹配的操作指令的清單;第二次按下 Tab,會依次選擇各個指令。

七、參考連結

(完)

相關文章