一、vim的下載
Ubuntu
系統,輸入命令:
sudo apt install vim
Centos
系統,輸入命令:
yum -y install vim*
然后輸入y
就行了,不出意外的話,完成之后,vim
就已經安裝完成了。下面都以Ubuntu
為例。
二、vim的基本知識
vim
的全局配置一般在/etc/vim/vimrc
或者/etc/vimrc
,對所有用戶生效。
如果只對單次編輯啟用某個配置項,可以在命令模式下,先輸入一個冒號,再輸入配置。舉例來說,set number
這個配置可以寫在vimrc配置文件里面,也可以在命令模式輸入。
set number
配置項一般都有"打開"和"關閉"兩個設置。"關閉"就是在"打開"前面加上前綴no
。
set number "打開"
set nonumber "關閉"
上面代碼中,雙引號表示注釋。
查詢某個配置項是打開還是關閉,可以在命令模式下,輸入該配置,並在后面加上問號,例如:
: set number?
上面的命令會返回number
或者nonumber
。
如果想查看幫助,可以使用help
命令,后面跟要查看的命令,例如:
: help number
三、vim的基本配置
1.不與vi
兼容(采用vim
自己的操作命令)。
set nocompatible
2.打開語法高亮,自動識別代碼,使用多種顏色顯示。
syntax on
3.在底部顯示,當前處於命令模式還是插入模式。
set showmode
4.命令模式下,在底部顯示,當前鍵入的指令。比如,鍵入的指令是"+y
,那么底部就會顯示"+
,當鍵入y
的時候,操作完成,顯示消失。
set showcmd
5.支持使用鼠標。
set mouse=a
6.使用utf-8
編碼。
set encoding=utf-8
7.啟用256
色。
set t_Co=256
8.開啟文件類型檢查,並且載入與該類型對應的縮進規則。比如,如果編輯的是.py
文件,vim
就是會找Python
的縮進規則~/.vim/indent/python.vim
。
filetype indent on
9.代碼縮進,按下回車鍵后,下一行的縮進會自動跟上一行的縮進保持一致。
set autoindent
10.按照C/C++
的風格縮進
set cindent
11.按下Tab
鍵時,vim
顯示的空格數。
set tabstop=4
12.在文本上按下>>
(增加一級縮進)、<<
(取消一級縮進)或者==
(取消全部縮進)時,每一級的空格字符數。
set shiftwidth=4
13.由於Tab
鍵在不同的編輯器縮進不一致,設置自動將Tab
轉為空格。
set expandtab
14.Tab
轉為多少個空格。
set softtabstop=4
15.顯示行號。
set number
16.顯示光標所在的當前行的行號,其他行都為相對於該行的相對行號。
set relativenumber
17.光標所在的當前行高亮。
set cursorline
18.設置行寬,即一行顯示多少個字符。
set textwidth=80
19.自動折行,即太長的行分成幾行顯示。
set wrap
20.關閉自動折行
set nowrap
21.只有遇到指定的符號(比如空格、連詞號和其他標點符號),才發生折行。也就是說,不會在單詞內部折行。
set linebreak
22.指定折行處與編輯窗口的右邊緣之間空出的字符數。
set wrapmargin=2
23.垂直滾動時,光標距離頂部/底部的位置(單位:行)。
set scrolloff=5
24.水平滾動時,光標距離行首或行尾的位置(單位:字符)。該配置在不折行時比較有用。
set sidescrolloff=15
25.是否顯示狀態欄。0 表示不顯示,1 表示只在多窗口時顯示,2 表示顯示。
set laststatus=2
26.在狀態欄顯示光標的當前位置(位於哪一行哪一列)。
set ruler
27.光標遇到圓括號
、方括號
、大括號
時,自動高亮對應的另一個圓括號
、方括號
和大括號
。
set showmatch
28.搜索時,高亮顯示匹配結果。
set hlsearch
29.進入搜索模式時,每輸入一個字符,就自動跳到第一個匹配的結果。
set incsearch
30.搜索時忽略大小寫。
set ignorecase
31.如果同時打開了ignorecase
,那么對於只有一個大寫字母的搜索詞,將大小寫敏感;其他情況都是大小寫不敏感。比如,搜索Test
時,將不匹配test
;搜索test
時,將匹配Test
。
set smartcase
32.打開英語單詞的拼寫檢查。
set spell spelllang=en_us
33.不創建備份文件。默認情況下,文件保存時,會額外創建一個備份文件,它的文件名是在原文件名的末尾,再添加一個波浪號〜
。
set nobackup
34.不創建交換文件。交換文件主要用於系統崩潰時恢復文件,文件名的開頭是.
、結尾是.swp
。
set noswapfile
35.保留撤銷歷史。
set undofile
vim
會在編輯時保存操作歷史,用來供用戶撤消更改。默認情況下,操作記錄只在本次編輯時有效,一旦編輯結束、文件關閉,操作歷史就消失了。打開這個設置,可以在文件關閉后,操作記錄保留在一個文件里面,繼續存在。這意味着,重新打開一個文件,可以撤銷上一次編輯時的操作。撤消文件是跟原文件保存在一起的隱藏文件,文件名以.un~
開頭。
36.設置備份文件、交換文件、操作歷史文件的保存位置。
set backupdir=~/.vim/.backup//
set directory=~/.vim/.swp//
set undodir=~/.vim/.undo//
結尾的//
表示生成的文件名帶有絕對路徑,路徑中用%
替換目錄分隔符,這樣可以防止文件重名。
37.自動切換工作目錄。這主要用在一個vim
會話之中打開多個文件的情況,默認的工作目錄是打開的第一個文件的目錄。該配置可以將工作目錄自動切換到正在編輯的文件的目錄。
lset autochdir
38.出錯時,不要發出響聲。
set noerrorbells
39.出錯時,發出視覺提示,通常是屏幕閃爍。
set visualbell
40.vim
需要記住多少次歷史操作。
set history=1000
41.打開文件監視。如果在編輯過程中文件發生外部改變(比如被別的編輯器編輯了),就會發出提示。
set autoread
42.如果行尾有多余的空格(包括 Tab 鍵),該配置將讓這些空格顯示成可見的小方塊。
set listchars=tab:»■,trail:■
set list
43.命令模式下,底部操作指令按下 Tab 鍵自動補全。第一次按下 Tab,會顯示所有匹配的操作指令的清單;第二次按下 Tab,會依次選擇各個指令。
set wildmenu
set wildmode=longest:list,full
44.括號的自動匹配
inoremap ' ''<ESC>i
inoremap " ""<ESC>i
inoremap ( ()<ESC>i
inoremap < <><ESC>i
inoremap [ []<ESC>i
inoremap { {}<ESC>i
inoremap {<CR> {<CR>}<ESC>O
常用配置:
syntax on
filetype indent on
set showcmd
set showmatch
set number
set cindent
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
set cursorline
set hlsearch
set autoread
set wildmenu
set wildmode=longest:list,full
inoremap ' ''<ESC>i
inoremap " ""<ESC>i
inoremap ( ()<ESC>i
inoremap < <><ESC>i
inoremap [ []<ESC>i
inoremap { {}<ESC>i
inoremap {<CR> {<CR>}<ESC>O
四、vim與外部文件的復制粘貼
vim
默認的有12
個粘貼板,分別是0、1、2、...、 9、a、"
;用:reg
命令可以查看各個粘貼板里的內容。在vim
中簡單用y
命令只是復制到"
(雙引號)粘貼板里,同樣用p
命令粘貼的也是這個粘貼板里的內容。
要將vim
的內容復制到某個粘貼板,需要先退出編輯模式,再進入命令模式后,選擇要復制的內容,然后按"Ny
(注意帶引號)完成復制,其中N
為粘貼板號(注意是按下雙引號 + 粘貼板號 + y
),例如要把內容復制到粘貼板a
,選中內容后按"ay
就可以了。
要將vim
某個粘貼板里的內容粘貼進來,需要先退出編輯模式,再在命令模式按"Np
,其中N
為粘貼板號,如上所述,命令"5p
會將5
號粘貼板里的內容粘貼進來,也可以按"+p
將系統全局粘貼板里的內容粘貼進來。
其中,"
號粘貼板(臨時粘貼板)比較特殊,直接按y
就復制到這個粘貼板中了,直接按p
就粘貼這個粘貼板中的內容。
+
號粘貼板是系統粘貼板
,用"+y
將內容復制到該粘貼板后可以使用 ctrl+v
將其粘貼到其他文檔(如firefox、gedit
)中,同理,要把在其他地方用ctrl+c
或右鍵復制的內容復制到vim
中,需要在正常模式下按"+p
。
Ubuntu
默認vim
是不支持從外部文件與vim
之間的粘帖復制,可以用命令:reg
查看,如果里面有+
和*
粘貼板,就可以進行與外部的復制粘貼的,否則,要實現外部文件與vim
之間的復制粘貼,Ubuntu
需要安裝vim-gnome
:
sudo apt-get install vim-gnome
安裝成功后,利用"+y
和"+p
就可以進行與外部文件的復制粘貼。