一、vi、vim介紹
(1)基於圖形界面,如gedit、geany等;
(2)基於命令行,如nano、vi、joe等;
每個命令行界面的文本編輯器都有各自不同的快捷鍵,比如nano的保存爲CTRL+W,vim的保存爲:w; 基於命令行的文本編輯器是必要的,Linux的tty1~tty6都是命令行界面,是打不開圖形界面的文本編輯器的; vi是每個Linux Distribution都默認安裝的文本編輯器,並且很多軟件的默認編輯器都是vi,因此學習vi是很必要的; vim是vi的高級版本,vi是文本編輯器,而vim應該說是程序編輯器,因爲能夠像一般的IDE一樣,根據文件名載入不同的語法高亮,即顏色區分,比如java文件會遵循java的語法高亮;
下面我們就編寫一個"hello world"的java程序來看看vim的語法高亮;
可以看出vim有很好的語法檢查功能,因爲關鍵字都使用了不同的顏色標出;
vi有三種模式:
(1)一般模式:進入vi的默認模式,能夠進行復制、黏貼、刪除等操作; (2)編輯模式:從一般模式按下‘i’即可進入; (3)命令行模式:從一般模式按下「:」、'?'、'/'即可進入;
注意:如果安裝了vim後,輸入vi後也是使用vim編輯器,我們輸入alias後看到「alias vi='vim'」;
二、vi/vim按鍵
「一般模式」的常用按鍵:
「一般模式」的常用按鍵 | 按鍵含義 |
---|---|
h | 向左 |
J | 向下 |
K | 向上 |
l | 向右 |
20h | 向左20個字符 |
20j | 向下20行 |
20k | 向上20行 |
20l | 向右20個字符 |
Page Up | 向上翻頁 |
Page Down | 向下翻頁 |
Home | 光標移到當前行的最左端 |
End | 光標移到當前航的最右端 |
n [空格] | 光標向右移動n個字符 |
N[Enter] | 光標向下N行 |
G | 光標移到最後一行 |
nG | 光標移動到第n行 |
gg或1G | 光標移動到第一行 |
/word | 向下查找word |
?word | 向上查找word |
n | 如果是/word後使用,則表示向下繼續查找; 如果是?word後使用,則表示向上繼續查找; |
N | 如果是/word後使用,則表示向上繼續查找; 如果是?word後使用,則表示向下繼續查找; |
:n,m/old/new/g | 從第n行到第m行中,將old替換爲new |
:n,$s/old/new/g | 從第n行到最後一行中,將old替換爲new |
u | 類似windows中的CTRL+Z,前一步 |
x | 向後刪除一個字符 |
X | 向前刪除一個字符 |
3x | 向後刪除3個字符 |
3X | 向前刪除3個字符 |
dd | 刪除當前行 |
3dd | 刪除當前行開始的3行 |
yy | 複製當前行 |
3yy | 複製當前行開始的3行 |
p | 黏貼到當前光標的下一行 |
P | 黏貼到當前光標的上一行 |
CTRL+r | 重做前一個操作 |
「命令行模式」的常用按鍵:
「命令行模式」的常用按鍵 | 按鍵含義 |
---|---|
:w | 保存 |
:q | 退出vim |
:wq | 保存並退出 |
:wq! | (在可以轉換權限的情況下)強制保存並退出 |
:q! | 直接退出不保存 |
:w filename | 另存爲filename |
:n,m w filename | 將第n行到第m行另存爲filename |
:set nu | 顯示行號 |
:set nonu | 不顯示行號 |
:! command | 暫時離開vim,並執行command,執行完後再進入vim |
:r filename | 將filename文件的數據讀入當前文件 |
:set all | 顯示當前vim的環境配置 |
三、vim的恢復機制
vim正在編輯某個文件時都會同時存在.file.swp,此文件用來暫存,幫助恢復文件內容,當vim正常關閉此文件時,.filename.swp文件會消失。
我們看到圖中說明了出現此界面的兩個原因:
(1)多人同時編輯此文件:因爲Linux是多用戶的操作系統,因此可能兩個人同時登陸並編輯此文件,如果A進入系統開始編輯1.txt文件,則會出現.1.txt.swp,當A還沒編輯完但B也想進去編輯時,因爲此文件的目錄中存在.1.txt.swp,則就會出現上圖的界面; (2)非正常關閉文件;
圖中最後一行說明了我們此時可以採取的幾個動作:
(1)o:以只讀方式打開; (2)R:恢復,即從swp文件中恢復,但是swp文件不會隨着vim關閉而刪除,需要手動刪除; (3)d:刪除swp文件; (4)q:退出vim;
四、vim記錄及默認配置文件
/etc/vimrc文件爲全局vim配置文件。
1.如果我們用xiazdong賬戶使用vim後,在/home/xiazdong就會出現.viminfo文件,此文件用來作爲vim的日誌,記錄用戶使用vim打開了什麼文件,做了什麼操作; 2.如果xiazdong賬戶想要配置vim的默認環境,則可以在/home/xiazdong創建.vimrc,並且配置一些特徵,比如顯示行號,語法檢查等;
一般使用如下配置:
set hlsearch set backspace=2 set autoindent set nu set ruler set showmode set bg=dark syntax on
五、Visual Block功能
Visual Block功能可以用於塊複製。
(1)CTRL+v:開始複製塊; (3)y:複製塊; (4)p:黏貼塊; (5)d:刪除塊
六、同時編輯多個文件
多文件編輯的好處是能夠將一個文件的某些內容yy後,p到另一個文件中。
vim file1 file2 即可同時編輯兩個文件,但是屏幕中同時只會出現一個文件內容,需要進行切換。
(1):n:向下切換; (2):N:向上切換; (3):files:列出當前編輯的所有文件;
七、多窗口編輯
如下圖:一個界面能夠顯示多個文件內容。
(1):sp:打開當前文件; (2):sp filename:打開filename文件; (3)CTRL+w+↓:光標切換到下一個窗口; (4)CTRL+w+↑:光標切換到上一個窗口; (5):q:關閉光標所在的窗口;
八、編碼問題
可能會出現亂碼問題,解決方法:保持終端的字符編碼與文件的字符編碼一致!tty1~tty6不支持顯示中文,因此在tty1~tty6中顯示中文必出現亂碼,設置終端的字符編碼。
編碼轉換命令:iconv iconv -f文件的原本編碼-t文件的新編碼filename -o newfilename 比如有一個big5編碼的文件:1.big5,要轉換成utf8的文件:2.utf8,則iconv -f big5 -t utf8 1.big5 -o 2.utf8