
【軟件介紹】
Vim是一個(gè)類似于Vi的著名的功能強(qiáng)大、高度可定制的文本編輯器,在Vi的基礎(chǔ)上改進(jìn)和增加了很多特性。VIM是自由軟件。
【軟件功能】
根據(jù)設(shè)定可以和原始vi完全兼容多緩沖編輯、多tab編輯
任意個(gè)數(shù)的分割窗口(橫,豎)
vim7開始,支持多種數(shù)據(jù)類型,比如具備列表和字典功能、以及(簡單形式)面向?qū)ο缶幊痰哪_本語言vim script,對(duì)功能進(jìn)行高度定制化。
可以在腳本中調(diào)用 Perl, Ruby, Python, Tcl, MzScheme ,C,C++
單詞縮寫功能
動(dòng)態(tài)單詞補(bǔ)全
多級(jí)樹狀撤銷和重做操作
對(duì)應(yīng)550種以上文本文件的語法高亮
Shell,Lisp,C/C++, Perl, Java, Ruby, Python 等40種以上語言的自動(dòng)縮排
利用ctags的標(biāo)簽中跳轉(zhuǎn)
崩潰后文件恢復(fù)
光標(biāo)位置和打開的緩沖狀態(tài)的保存、復(fù)原(session功能)
可以對(duì)兩個(gè)文件進(jìn)行差分,同步功能的diff模式
遠(yuǎn)程文件編輯 。
vim 8.0新增功能
支持異步 I/O 和通道(channels)、JSON
多任務(wù)
定時(shí)器
Partial、Lambda 和閉包
插件包管理
根據(jù)時(shí)間戳合并viminfo
Windows用戶:支持 DirectX
支持 GTK+ 3

【常用命令】
fx:移動(dòng)光標(biāo)到當(dāng)前行的下一個(gè) x 處。很明顯,x 可以是任意一個(gè)字母,而且你可以使用 ; 來重復(fù)你的上一個(gè) f 命令。tx:和上面的命令類似,但是是移動(dòng)到 x 的左邊一個(gè)位置。(這真的很有用)
Fx:和 fx 類似,不過是往回找。使用 , 來重復(fù)上一個(gè)F命令。
Tx:和 tx 類似,不過是往回移動(dòng)到 x 的右邊一個(gè)位置。b:光標(biāo)往前移動(dòng)一個(gè)詞。
w:光標(biāo)往后移動(dòng)一個(gè)詞。
0:移動(dòng)光標(biāo)到當(dāng)前行首。(是數(shù)字0)
^:移動(dòng)光標(biāo)到當(dāng)前行的第一個(gè)字母位置。
$:移動(dòng)光標(biāo)到行尾。
):移動(dòng)光標(biāo)到下一個(gè)句子。
( :移動(dòng)光標(biāo)到上一個(gè)句子。
VIM 有很多命令,可以用來到達(dá)文件里面你想到達(dá)的地方。下面是一些在文件里面移動(dòng)的命令:
<Ctrl-f>:向下移動(dòng)一屏。
<Ctrl-d>:向下移動(dòng)半屏。
<Ctrl-b>:向上移動(dòng)一屏。
<Ctrl-u>:向上移動(dòng)半屏。
G:到文件尾
numG:移動(dòng)光標(biāo)到指定的行(num)。(比如 10G 就是到第 10 行)
gg:到文件首H:移動(dòng)光標(biāo)到屏幕上面
M:移動(dòng)光標(biāo)到屏幕中間
L:移動(dòng)光標(biāo)到屏幕下面
*:讀取光標(biāo)處的字符串,并且移動(dòng)光標(biāo)到它再次出現(xiàn)的地方。
#:和上面的類似,但是是往反方向?qū)ふ摇?br />

【使用教程】
使用(1)基于圖形界面,如gedit、geany等;(2)基于命令行,如nano、vi、joe等;
每個(gè)命令行界面的文本編輯器都有各自不同的快捷鍵,比如nano的保存為CTRL+W,vim的保存為:w; 基于命令行的文本編輯器是必要的,Linux的tty1~tty6都是命令行界面,是打不開圖形界面的文本編輯器的; vi是每個(gè)Linux Distribution都默認(rèn)安裝的文本編輯器,并且很多軟件的默認(rèn)編輯器都是vi,因此學(xué)習(xí)vi是很必要的; vim是vi的高級(jí)版本,vi是文本編輯器,而vim應(yīng)該說是程序編輯器,因?yàn)槟軌蛳褚话愕腎DE一樣,根據(jù)文件名載入不同的語法高亮,即顏色區(qū)分,比如java文件會(huì)遵循java的語法高亮;
下面我們就編寫一個(gè)"hello world"的java程序來看看vim的語法高亮;

可以看出vim有很好的語法檢查功能,因?yàn)殛P(guān)鍵字都使用了不同的顏色標(biāo)出;vi有三種模式:
(1)一般模式:進(jìn)入vi的默認(rèn)模式,能夠進(jìn)行復(fù)制、黏貼、刪除等操作; (2)編輯模式:從一般模式按下‘i’即可進(jìn)入; (3)命令行模式:從一般模式按下“:”、'?'、'/'即可進(jìn)入;
注意:如果安裝了vim后,輸入vi后也是使用vim編輯器,我們輸入alias后看到“alias vi='vim'”;
二、vi/vim按鍵
“一般模式”的常用按鍵:
“一般模式”的常用按鍵
按鍵含義
h向左
J向下
K向上
l向右
20h向左20個(gè)字符
20j向下20行
20k向上20行
20l向右20個(gè)字符
Page Up向上翻頁
Page Down向下翻頁
Home光標(biāo)移到當(dāng)前行的最左端
End光標(biāo)移到當(dāng)前航的最右端
n [空格]光標(biāo)向右移動(dòng)n個(gè)字符
N[Enter]光標(biāo)向下N行
G光標(biāo)移到最后一行
nG光標(biāo)移動(dòng)到第n行
gg或1G光標(biāo)移動(dòng)到第一行
/word向下查找word
?word向上查找word
n如果是/word后使用,則表示向下繼續(xù)查找;如果是?word后使用,則表示向上繼續(xù)查找;
N如果是/word后使用,則表示向上繼續(xù)查找;如果是?word后使用,則表示向下繼續(xù)查找;
:n,m/old/new/g從第n行到第m行中,將old替換為new
:n,$s/old/new/g從第n行到最后一行中,將old替換為new
u類似windows中的CTRL+Z,前一步
x向后刪除一個(gè)字符
X向前刪除一個(gè)字符
3x向后刪除3個(gè)字符
3X向前刪除3個(gè)字符
dd刪除當(dāng)前行
3dd刪除當(dāng)前行開始的3行
yy復(fù)制當(dāng)前行
3yy復(fù)制當(dāng)前行開始的3行
p黏貼到當(dāng)前光標(biāo)的下一行
P黏貼到當(dāng)前光標(biāo)的上一行
CTRL+r重做前一個(gè)操作
“命令行模式”的常用按鍵:
“命令行模式”的常用按鍵
按鍵含義
:w保存
:q退出vim
:wq保存并退出
:wq!(在可以轉(zhuǎn)換權(quán)限的情況下)強(qiáng)制保存并退出
:q!直接退出不保存
:w filename另存為filename
:n,m w filename將第n行到第m行另存為filename
:set nu顯示行號(hào)
:set nonu不顯示行號(hào)
:! command暫時(shí)離開vim,并執(zhí)行command,執(zhí)行完后再進(jìn)入vim
:r filename將filename文件的數(shù)據(jù)讀入當(dāng)前文件
:set all顯示當(dāng)前vim的環(huán)境配置
三、vim的恢復(fù)機(jī)制
vim正在編輯某個(gè)文件時(shí)都會(huì)同時(shí)存在.file.swp,此文件用來暫存,幫助恢復(fù)文件內(nèi)容,當(dāng)vim正常關(guān)閉此文件時(shí),.filename.swp文件會(huì)消失。

我們看到圖中說明了出現(xiàn)此界面的兩個(gè)原因:
(1)多人同時(shí)編輯此文件:因?yàn)長inux是多用戶的操作系統(tǒng),因此可能兩個(gè)人同時(shí)登陸并編輯此文件,如果A進(jìn)入系統(tǒng)開始編輯1.txt文件,則會(huì)出現(xiàn).1.txt.swp,當(dāng)A還沒編輯完但B也想進(jìn)去編輯時(shí),因?yàn)榇宋募哪夸浿写嬖?1.txt.swp,則就會(huì)出現(xiàn)上圖的界面; (2)非正常關(guān)閉文件;
圖中最后一行說明了我們此時(shí)可以采取的幾個(gè)動(dòng)作:
(1)o:以只讀方式打開; (2)R:恢復(fù),即從swp文件中恢復(fù),但是swp文件不會(huì)隨著vim關(guān)閉而刪除,需要手動(dòng)刪除; (3)d:刪除swp文件; (4)q:退出vim;
四、vim記錄及默認(rèn)配置文件
/etc/vimrc文件為全局vim配置文件《Linux就該這么學(xué)》。
1.如果我們用xiazdong賬戶使用vim后,在/home/xiazdong就會(huì)出現(xiàn).viminfo文件,此文件用來作為vim的日志,記錄用戶使用vim打開了什么文件,做了什么操作; 2.如果xiazdong賬戶想要配置vim的默認(rèn)環(huán)境,則可以在/home/xiazdong創(chuàng)建.vimrc,并且配置一些特征,比如顯示行號(hào),語法檢查等;
一般使用如下配置:
set hlsearch set backspace=2 set autoindent set nu set ruler set showmode set bg=dark syntax on
END
五、Visual Block功能
1
Visual Block功能可以用于塊復(fù)制。
(1)CTRL+v:開始復(fù)制塊; (3)y:復(fù)制塊; (4)p:黏貼塊; (5)d:刪除塊

六、同時(shí)編輯多個(gè)文件
多文件編輯的好處是能夠?qū)⒁粋€(gè)文件的某些內(nèi)容yy后,p到另一個(gè)文件中。vim file1 file2 即可同時(shí)編輯兩個(gè)文件,但是屏幕中同時(shí)只會(huì)出現(xiàn)一個(gè)文件內(nèi)容,需要進(jìn)行切換。
(1):n:向下切換; (2):N:向上切換; (3):files:列出當(dāng)前編輯的所有文件;
七、多窗口編輯
如下圖:一個(gè)界面能夠顯示多個(gè)文件內(nèi)容。

(1):sp:打開當(dāng)前文件; (2):sp filename:打開filename文件; (3)CTRL+w+↓:光標(biāo)切換到下一個(gè)窗口; (4)CTRL+w+↑:光標(biāo)切換到上一個(gè)窗口; (5):q:關(guān)閉光標(biāo)所在的窗口;
八、編碼問題
可能會(huì)出現(xiàn)亂碼問題,解決方法:保持終端的字符編碼與文件的字符編碼一致!tty1~tty6不支持顯示中文,因此在tty1~tty6中顯示中文必出現(xiàn)亂碼,設(shè)置終端的字符編碼。

編碼轉(zhuǎn)換命令:iconv iconv -f文件的原本編碼-t文件的新編碼filename -o newfilename 比如有一個(gè)big5編碼的文件:1.big5,要轉(zhuǎn)換成utf8的文件:2.utf8,則iconv -f big5 -t utf8 1.big5 -o 2.utf8
配置
作為開發(fā)者而言,大多數(shù)都會(huì)在linux下開發(fā)。但是作為大多數(shù)的初學(xué)者而言,大多數(shù)都是在Win下學(xué)習(xí)的,告訴大家,其實(shí)Vim還有win版本。如果打擊覺得安裝linux虛擬機(jī)麻煩的話,可以選擇安裝win版本,操作和linux下相差不大。



我們可以百度搜索”vim下載“,可以選擇官網(wǎng)下載。也可以選擇跳轉(zhuǎn)到GitHub下載。下載安裝好后,還需將安裝路徑添加到path路徑中,這樣就可以在命令行中快速打開了。

我們打開命令行,Win+R,輸入cmd即可快速打開。然后輸入vim + 編輯的文件名,即可開始使用vim編輯器了。
Taglist插件如何使用?
TagList插件,是一款基于ctags,在vim代碼窗口旁以分割窗口形式(如上圖所示)顯示當(dāng)前的代碼結(jié)構(gòu)概覽,增加代碼瀏覽的便利程度的vim插件.
在Vim中加載代碼文件后,可以使用以下命令控制taglist
:TlistOpen 打開并將輸入焦點(diǎn)至于標(biāo)簽列表窗口,效果如上圖所示
:TlistClose 關(guān)閉標(biāo)簽列表窗口
:TlistToggle 切換標(biāo)簽列表窗口狀態(tài)(打開←→關(guān)閉),標(biāo)簽列表窗口是否獲得焦點(diǎn)取決于其他配置
ctl-w + w 或ctl-w + 方向鍵 窗口切換(taglist本質(zhì)上是一個(gè)vim分隔窗口,因此可以使用ctl-w系列快捷鍵對(duì)窗口進(jìn)行切換操作)
在Taglist窗口主要有以下操作
按F1:打開幫助
回車鍵:跳到光標(biāo)所在的標(biāo)記的定義處(如將光標(biāo)移到main函數(shù),按回車鍵)
o:新建一個(gè)窗口,跳到標(biāo)記定義處
p:預(yù)覽標(biāo)記定義(仍然在taglist窗口)
空格:顯示標(biāo)記的原型(如函數(shù)原型)
u:更新標(biāo)記列表(比如源文件新增了一個(gè)函數(shù),并在保存后,可在taglist窗口按u)
s:選擇排序字段(暫時(shí)我也不知道什么意思)
d:刪除光標(biāo)所在的taglist文件(如用vi打開了兩個(gè)文件f1.c,f2.c可以刪除f1.c的標(biāo)記)
x:n放大/縮小taglist窗口
+:展開(指標(biāo)記)
-:折疊
*:全部展開
=:全部折疊
[[:將光標(biāo)移到前一個(gè)文件的起點(diǎn)
]]:將光標(biāo)移到后一個(gè)文件的起點(diǎn)
q:退出taglist窗口
F1:關(guān)閉幫助

【更新日志】
Vim 8.1是一個(gè)小版本,從Vim 8.0開始,已經(jīng)添加了一些新特性。很多bug被修復(fù),文檔被更新等等。主要的新特性是終端窗口

































