【Linux命令】《鳥哥Linux基礎》第九章 vim程序編輯器

第九章 vim程序編輯器

9.1 vi與vim

所有的Linux發行版都有vi文本編輯器。

vim是高級版的vi,對不同內容可以進行不同顏色顯示,就是個性能強悍的代碼編輯器。

9.2 按鍵說明

9.2.1 一般命令行可用的按鍵功能說明

移動光標的方法 具體情況
h 或 向左箭頭 光標向左移動一個字符
j 或 向下箭頭 光標向下移動一個字符
k 或 向上箭頭 光標向上移動一個字符
l 或 向右箭頭 光標向右移動一個字符
30j 或 30向左箭頭 向下移動30行
Ctrl + f 屏幕向下移動一頁,相當於page down按鍵【常用】
Ctrl + b 屏幕向上移動一頁,相當於page up按鍵【常用】
Ctrl + d 屏幕向下移動半頁
Ctrl + u 屏幕向上移動半頁
+ 光標移動到非空格字符的下一行
- 光標移動到非空格字符的上一行
n + 空格鍵 那個n表示數字,按下數字後再按下空格鍵,光標會向右移動這一行的n個字符
0 或 功能鍵home 按下數字0或home鍵,移動到這一行的最前面字符處【常用】
$ 或 功能鍵End 移動到這一行的最後面字符處【常用】
H 光標移動到這個屏幕的最上方那一行的第一個字符
M 光標移動到這個屏幕的中央那一行的第一個字符
L 光標移動到這個屏幕的最下方那一行的第一個字符
G 移動到這個文件的最後一行【常用】
nG n爲數字,移動到這個文件的第n行,可配合:set nu
gg 移動到這個文件的第一行,相當於1G【常用】
n + 功能鍵Enter n爲數字,光標向下移動n行【常用】
查找與替換 具體情況
/word 向光標之下尋找一個名稱爲word的字符串
?word 向光標之上查找一個名稱爲word的字符串
n 這個n是英文按鍵,代表重複前一個查找的操作。如果是向上查找word,那麼繼續向上查找word;如果向下查找word,那麼繼續向下查找word
N 這個N是英文按鍵,與n剛好相反,爲反向進行前一個查找。例如/word之後,本來是向下查找word的,但是按下N,會向上查找word。【使用/word配合n和N重複查找一些關鍵詞】
:n1,n2s/word1/word2/g n1和n2爲數字,在第n1和n2行之間尋找word1這個字符串,並將其替換爲word2【常用】
:1,$s/word1/word2/g 從第一行到最後一行,尋找word1字符串,並將其替換爲word2【常用】
:1,$s/word1/word2/gc 替換之前顯示提示字符給用戶,確認confirm是否需要替換【常用】
刪除、複製、粘貼 具體情況
x與X 在一行當中,x爲向後刪除一個字符(del鍵),X爲向前刪除一個字符(backspace鍵)【常用】
nx n爲數字,連續向後刪除n個字符。10x連續向後刪除10個字符
dd 剪切光標所在行【常用】
ndd 剪切光標所在的向下n行。20dd剪切20行【常用】
d1G 剪切光標所在到第一行的所有數據
dG 剪切光標所在到最後一行的所有數據
d$ 剪切光標所在處,到該行最後一個字符
d0 是數字0,剪切光標所在處,到該行第一個字符
yy 複製光標所在的那一行【常用】
nyy 複製光標所在的向下n行。20yy複製20行【常用】
y1G 複製光標所在到第一行的所有數據
yG 複製光標所在到最後一行的所有數據
y$ 複製光標所在處,到該行最後一個字符
y0 是數字0,複製光標所在處,到該行第一個字符
p和P p爲將已複製的數據在光標下一行粘貼;P爲將已複製的數據在光標上一行粘貼【常用】
J 將光標所在行與下一行的數據結合成一行
c 重複刪除多個數據。10cj向下刪除10行
u 恢復前一個操作【常用】
Ctrl + r 重做上一個操作【常用】
. 小數點,重複前一個操作【常用】

9.2.2 一般命令行切換到編輯模式的可用按鍵功能說明

進入插入或替換的編輯模式 具體情況
i與I 進入插入模式,i爲從目前光標所在處插入,I爲在目前所在行的第一個非空格符處開始插入【常用】
a與A 進入插入模式,a爲從目前光標所在的下一個字符處開始插入,A爲從光標所在行的最後一個字符處開始插入【常用】
o與O 進入插入模式,o爲在目前光標所在的下一行處插入新的一行,O爲在目前光標所在處的上一行插入新的一行【常用】
r與R 進入替換模式,r只會替換光標所在那一個字符一次,R會一直替換光標所在的文字,直到按下Esc爲止【常用】
Esc 退出編輯模式,回到一般命令模式中【常用】

9.2.3 一般命令行切換到命令行模式的可用按鍵功能說明

命令行模式的保存、退出等命令 具體情況
:w 將編輯的數據寫入硬盤文件中【常用】
:w! 若文件屬性爲只讀時,強制寫入該文件。不過到底能否成功寫入,還是跟你對該文件的權限有關
:q 退出vi【常用】
:q! 若曾修改過文件,又不想保存,使用!爲強制退出不保存
:wq 保存後退出,若爲:wq!則爲強制保存後退出
ZZ 大寫的Z,若文件已經修改則保存後退出,若文件沒有修改則不保存退出
:w [filename] 將編輯的數據另存爲filename文件
:r [filename] 在編輯的數據中,讀入另一個文件的數據,就是將filename這個文件內容加到光標所在行後面
:n1,n2 w [filename] 將n1到n2的內容保存爲filename文件
:! command 暫時退出vi到命令行模式下執行command的顯示結果。:! ls/home可在vi當中查看/home下以ls輸出的文件信息
:set nu 顯示行號
:set nonu 取消顯示行號

9.2.4 vim的緩存、恢復問題

如果不幸宕機,可從緩存文件恢復。

模擬宕機:

vim man_db.conf
ctrl + z 
kill -9 %1
此時殺掉了後臺進程,但是由於是非正常退出,緩存文件並不會正常消失,它還存在
緩存文件名爲`.man_db.conf.swap`

進行恢復:

vim man_db.conf   這是就會提示各種警告信息
點擊R後,輸入 :wq 保存並退出文件
然後手動刪除緩存文件 rm -f .man_db.conf.swap
最後再 vim man_db.conf 
即可恢復正常

9.3 vim的額外功能

9.3.1 可視區塊 virtual block

可視區塊的按鍵 具體情況
v 字符選擇,會將光標經過的地方反白選擇
V 行選擇,會將光標經過的行反白選擇
Ctrl + v 可視區塊,可以用矩形的方式選擇數據
y 將反白的地方複製起來
d 將反白的地方刪掉
p 將剛剛複製的區塊,在光標所在處粘貼

9.3.2 多文件編輯

vi中,使用:r filename 可以讀入整個filename文件;如果只想讀入一部分內容,可使用多文件編輯命令。

多文件編輯按鍵 具體情況
:n 編輯下一個文件
:N 編輯上一個文件
:files 列出目前這個vim開啓的所有文件

使用vim file1 file2同時打開兩個文件,其中file1是第一個文件,file2是最後一個文件。

9.3.3 多窗口功能

多窗口按鍵 具體情況
:sp [filename] 打開一個新窗口,如果有加filename,表示在新窗口創建一個新文件,否則表示兩個窗口爲同一個文件(同步顯示)
Ctrl + w + j 或者 Ctrl + w + 向下箭頭 先同時按下Ctrl + w,然後再按下j或向下箭頭,光標移動到下方的窗口
Ctrl + w + k 或者 Ctrl + w + 向上箭頭 先同時按下Ctrl + w,然後再按下k或向上箭頭,光標移動到上方的窗口
Ctrl + w + q 先同時按下Ctrl + w,然後再按下q,結束當前窗口;或者輸入:q 或者:close

vim file1
如果:sp,會在下方再開一個窗口,內容與file1相同;
如果:sp file2,會在下方再開一個窗口,內容是file2

9.3.4 vim的關鍵詞補全功能

編輯器兩大要求:
語法檢驗
關鍵詞補全

關鍵詞補全按鍵 具體情況
ctrl+x -> ctrl+n 通過目前正在編輯的這個文件的內容文字作爲關鍵詞,予以補齊
ctrl+x -> ctrl+f 以當前目錄內的文件名作爲關鍵詞,予以補齊
ctrl+x -> ctrl+o 以擴展名作爲語法補充,以vim內置的關鍵詞,予以補齊

9.3.5 環境設置與記錄 ~/.vimrc ~/viminfo

vim的環境設置按鍵 具體情況
:set nu 顯示行號
:set nonu 忽略行號
:set hlsearch 高亮度查找,找到的字符串反白顯示
:set nohlsearch 非高亮度查找
:set autoindent 自動縮進
:set noautoindent 不自動縮進
:set backup 自動保存備份文件,任何一次修改file時,同目錄中,源文件被另存爲一個文件名爲file~的文件
:set ruler 顯示或不顯示右下角的一些狀態欄說明
:set showmode 是否顯示–INSERT–之類信息在左下角狀態欄
:set backspace=(012) 按下i進入編輯模式後,可以利用退格鍵(backspace)刪除任意字符。2,可刪任意值;0或1,僅可刪除剛剛輸入的字符,無法刪除原本就已經存在的文字
:set all 顯示目前所有的環境參數設置值
:set 顯示與默認值不同的參數,顯示你自行變動過的參數
:syntax on 依據程序相關語法顯示不同顏色
:syntax off 純文本顏色
:set bg=dark 設置顯示的不同色調
:setbg=light 同上,系統默認是light
vim ~/.vimrc   在用戶家目錄下,創建.vimrc 文件,設置vim編輯器的默認值
打開文件後,輸入以下內容並保存:

set hlsearch
set backspace=2
set autoindent
set ruler
set showmode
set nu
set bg=dark
syntax on

9.4 其他vim使用注意事項

9.4.1 中文編碼問題

如果文件是GBK編碼,而環境使用的是LinuxGNOME,啓動的終端界面爲GNOME-terminal,採用如下方法修正打開後的亂碼問題:
首先:

LANG=zh_CN.gb18030 
export LC_ALL=zh_CN.gb18030

在終端工具欄:終端—》設置字符編碼—》中文(簡體),選擇好中文簡體後,就可以用vim去打開GBK編碼的文件了。

9.4.2 DOS與Linux換行符

Windows的DOS下換行符是: ^M$ = CR + LF
Linux下換行符是:         $  = LF 

需要安裝dos2unix-*

在不同系統之間複製一些純文本文件時,務必要記得使用unix2dos 或 dos2unix來轉換換行格式!

unix2dos -k file1   將file1中的換行符換成dos下的,同時不改變mtime時間
dos2unix -k file1   將file1中的換行符換成unix下的,同時不改變mtime時間
dos2unix -k -n file1 file2 跟之前一樣把file1中的換行符換成unix下的,保留舊文件file1,換好後保存到新文件file2

9.4.3 語系編碼轉換

iconv --list
iconv -f 原編碼格式 -t 新編碼格式 filename [-o newfile]
				--list 列出iconv支持的語系數據
				-f     from,來自於哪個編碼格式
				-t     to,要變成哪個編碼格式
				-o file 如果要保留原本文件,那麼使用-o新文件名,可以建立新的編碼文件

iconv -f big5 -t utf8 vi.big5 -o vi.utf8  將big5格式的vi.big5轉換爲utf8格式的vi.utf8


iconv -f utf8 -t big5 vi.utf8 |   \
iconv -f big5 -t gb2312 |   \
iconv -f gb2312 -t utf8 -o vi.gb.utf8    將繁體中文的utf8轉換成簡體中文的utf8
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章