Linux基礎知識之vim使用技巧彙總
vim是Vi IMproved,是編輯器Vi的一個加強版,一個極其強大並符合IT工程師(程式設計師、系統運維)習慣的編輯器。如果你是一名職業的系統工程師,那麼一定在尋找一款出色的能夠自由定製、滿足靈活編輯功能的編輯器。那麼答案,就是vim或者Emacs。這裡要介紹的是前者vim。
(一)配置你的個性化vim
1. vim配置檔案在哪?
Linux作業系統中,配置檔案通常是/etc/vimrc或者是/usr/share/vim/vimrc,你可以使用find命令在系統根目錄下搜尋下vimrc即可。
2. 在vim中使用空格space代替TAB
修改vim配置檔案vimrc檔案,增加下面的幾行:
set expandtab # 使用space代替tab.
set tabstop=4 # 四個空格。
set shiftwidth=4 # 自動縮排的寬度
4、三種基本模式
在《大家來學vim》中提到vim有6+5種模式,但除了細分程度不同外,實際上常用的只有3種模式:Normal Mode、Insert Mode和Command-line Mode。
從Normal Mode進入Insert Mode,可以按i、I、a、A、o、O、r、R即可。其中i和I表示插入(Insert),r和R表示替換(replace)。
從Insert Mode進入Normal Mode,只需要按ESC鍵即可。
從Normal Mode進入Command-line Mode,可以按“:”、“/”、“?”。其中“:”表示輸入vim命令,“/”表示後面輸入要向下搜尋的字串,“?”表示後面輸入要向上搜尋字串。
從Command-line Mode進入Normal Mode,只需要按ESC鍵即可了。
你可以把Normal Mode理解為常態,進入其他任何一種模式,需要某種特殊方式,而從其他特殊模式回到Normal Mode,就按ESC鍵即可。
5、vim中那些最最常用的配置
當你嘗試去google一 些其他人的vimrc配置時,你一定會找到一篇叫做《The ultimate vim configuration》的文章,不過它的作者,Amix後來在他的部落格上提到[參考2],這份在google搜尋vimrc會排在前十的vim配置 檔案,如今已經過時了,所以他提供了一些更新資訊。
(1)顏色設定
syntax on "開啟程式碼高亮
syntax off "關閉程式碼高亮
syntax enable "開啟程式碼高亮
(2)搜尋設定
set hlsearch "開啟搜尋高亮
set nohlsearch "關閉搜尋高亮
set incsearch "輸入搜尋字串的同時進行搜尋
set ignorecase "搜尋時忽略大小寫
(3)使用者介面
set showmode "開啟模式顯示
set ruler "開啟游標位置提示
set number "顯示行號
set nonu "不顯示行號
set cursorline "強調游標所在行
set cmdheight=1 "命令部分高度為1
(4)編輯輔助配置
set autoindent "自動縮排
set noautoindent "不自動縮排
set smartindent "智慧縮排
set autoread "當檔案在外部被改變時,vim自動更新載入
set showmatch "顯示匹配的括號
參考:
[1]Run Commands,http://en.wikipedia.org/wiki/Run_commands
[2]The Ultimate vim Configuration(vimRC),http://amix.dk/blog/post/19486
(二)常用的狀態切換按鍵
1、Normal Mode -> Insert Mode
i 小寫字母i,在游標位置插入
a 小寫字母a,在游標的下一個位置插入
I 大寫字母I,在游標所在行的第一個非空格處插入
A 大寫字母A,在游標所在行的最後一個字元處插入
o 小寫字母o,在游標所在行的下一行處插入新行
O 大寫字母O,在游標所在行的上一行處插入新航
r 小寫字母r,替換游標所在處的字元一次
R 大寫字母R,持續替換游標所在處的字元,直到按下ESC
2、Normal Mode -> Command-line Mode
:w 儲存檔案
:w! 強制儲存檔案(前提是使用者有修改檔案訪問許可權的許可權)
:q 退出緩衝區
:q! 強制退出緩衝區而不儲存
:wq 儲存檔案並退出緩衝區
:wq! 強制儲存檔案並退出緩衝區(前提是使用者有修改檔案訪問許可權的許可權)
:w <filename> 另存為名為filename檔案
:n1,n2 w <filename> 將n1行到n2行的資料另存為名為filename檔案
:x 如果檔案有更改,則儲存後退出。否則直接退出。
3、Insert Mode -> Normal Mode
按下ESC鍵
4、Command-line -> Normal Mode
按下ESC鍵
(三)常用游標移動按鍵
1、游標字元操作
j 向下
k 向上
h 向左
l 向右
$ 游標移動到行尾(End),注意要按Shift鍵
0 游標移動到行首(Home)
^ 游標移動到行首第一個非空白字元(Home),注意要按Shift鍵
2、游標詞操作
w 游標移動到後一詞的詞首
W 游標移動到後一詞的詞首且忽略標點符號
e 游標移動到後一詞的詞尾
E 游標移動到後一詞的詞尾且忽略標點符號
b 游標移動到前一詞的詞首
B 游標移動到前一詞的詞首且忽略標點符號
3、游標句操作
) 游標移動到後一句的句首
( 游標移動到前一句的句首
% 配合“(”和“)”使用,尋找相匹配的另一半
4、游標行操作
G 游標移動到文件的最後一行的第一個非空白字元
nG 游標移動到文件的第n行,相當於”:n”
gg 游標移動到文件的第1行的第一個非空白字元,相當於”1G”,也相當於”:1″
<N> 游標向下移動N行
5、游標段操作
} 游標移動到下一段的段首
{ 游標移動到上一段的段首
% 配合“(”和“)”使用,尋找相匹配的另一半
6、游標頁操作
Ctrl+f 向下翻頁(Pagedown)
Ctrl+b 向上翻頁(Pageup)
Ctrl+d 向下翻半頁
Ctrl+u 向上翻半頁
H 游標移動到目前顯示頁的第一行
M 游標移動到目前顯示頁的中間行
L 游標移動到目前顯示頁的最後一行
7、游標自由操作
Ctrl+o 回到游標的上一位置
(四)常用編輯操作按鍵
1、刪除操作(delete)
dd 刪除游標所在行
ndd 刪除從游標所在行開始,向下的n行
d1G 刪除從游標所在行開始,到第一行的所有行
dG 刪除從游標所在行開始,到最後一行的所有行
d$ 刪除從游標所在位置,到行尾的所有字元
d0 刪除從游標所在位置,到行首的所有字元
2、複製操作(yank)
yy 複製游標所在行
nyy 複製從游標所在行開始,向下的n行
y1G 複製從游標所在行開始,到第一行的所有行
yG 複製從游標所在行開始,到最後一行的所有行
y$ 複製從游標所在位置,到行尾的所有字元
y0 複製從游標所在位置,到行首的所有字元
3、貼上操作(paste)
p 小寫字母p,貼上剪貼簿中的資料,從游標所在行的下一行開始
P 大寫字母P,貼上剪貼簿中的資料,從游標所在行的上一行開始
4、撤銷與重做操作(undo,redo)
u (Undo)撤銷上一個操作
Ctrl+r (Redo)重做上一個操作
5、重複操作
. 重複上一操作
6、替換操作(replace)
r 替換游標所在處字元
R 進入替換模式,直至按ESC退出
cc 替換游標所在行
cw 替換游標所在的英文單詞
~ 轉換大小寫
7、排版操作
:le<ft> 游標所在行左對齊
:ri<ght> 游標所在行右對齊
:ce<nter> 游標所在行居中
(五)常用多緩衝區操作按鍵
1、多檔案編輯模式
(1)argument list模式,就是在開啟vim編輯器時,攜帶多個檔案路徑引數。
(2)buffer list模式,就是在進入vim編輯器後,開啟多個緩衝區進行編輯。
2、單一緩衝區開啟多個檔案
:files 顯示目前打開了哪些檔案
:n 切換到下一個緩衝區內容
:N 切換到上一個緩衝區內容
:2n 切換到下下個緩衝區內容
:bn 下一個緩衝區內容(buffer next)
:bp 上一個緩衝區內容(buffer previous)
3、多個緩衝區開啟多個檔案
:sp [filename] 開啟一個新的緩衝區,如果有filename則內容為該檔案,否則為當前檔案
Ctrl+w n 新建一個緩衝區
Ctrl+w q 退出游標所在的緩衝區
Ctrl+w j 游標移動到下一緩衝區
Ctrl+w k 游標移動到上一緩衝區
Ctrl+w l 游標移動到右一緩衝區
Ctrl+w h 游標移動到左一緩衝區
Ctrl+w v 左右切割視窗新建緩衝區
Ctrl+w s 上下切割視窗新建緩衝區
Ctrl+w o 使游標所在緩衝區最大化,其他緩衝區隱藏
(六)常用搜索與書籤操作快捷鍵
1. 搜尋字串
/string 向下搜尋字串“string”
?string 向上搜尋字串“string”
2. 重複上次搜尋
n 根據上次搜尋條件找到下一個匹配的字串
N 根據上次搜尋條件找到上一個匹配的字串
3. 搜尋單詞
* 向下搜尋游標所在處的單詞(完全匹配)
# 向上搜尋游標所在處的單詞(完全匹配)
g* 向下搜尋游標所在處的單詞(部分匹配)
g# 向上搜尋游標所在處的單詞(部分匹配)
4. 標記書籤(mark)
ma a為小寫字母,為游標所在處設定文件書籤a
mA A為大寫字母,為游標所在處設定全域性書籤A
5. 使用書籤(mark)
`a 到文件書籤a處,Tab鍵上方
'a 到文件書籤a所在行行首處,Enter鍵左邊
`A 到全域性書籤A處,Tab鍵上方
'A 到全域性書籤A所在行行首處,Enter鍵左邊
`n 如果n=0,緩衝區將開啟上一次的文件,且游標在上次編輯最後的位置,1-9以此類推
'n 如果n=0,緩衝區將開啟上一次的文件,且游標在上次編輯最後的位置所在行的行首,1-9以此類推
6. 檢視書籤列表
:marks
檢視當前所有書籤
(7)關於加密
1、加密你的文字檔案
當你用vim開啟或新建一個檔案時,如果加上-x引數,即:
vim -x filename
那麼vim會提示你:
Enter entryption key:
當你輸入了密碼後,vim會提示你重複輸入以確認:
Enter same key again:
你在設定密碼的時候,是以*來顯示的,非明文。當下次有人(包括你自己)開啟該檔案的時候,vim就會提示:
Need encryption key for "main.cpp"
Enter encryption key:
這時你只要輸入你之前所設定的密碼就可以了。如果你輸入的密碼是錯誤的,vim並不會提示你密碼錯誤,而是顯示一堆無意義的垃圾程式碼。
2、解除加密與重設密碼
開啟你已經加密的檔案,然後輸入:
:set key=
這樣,你的密碼就被設定為空了,今後進入就不再需要輸入密碼了。而如果你向重設密碼的話,你可以輸入:
:X
注意是個大寫字母X。這時vim會提示你,只要反覆輸入兩次新的密碼就可以了:
Enter entryption key: *****
Enter sanme key again: *****
3、加密引起的問題
vim的加密功能,可以說是問題一大堆。比如:
(1)如果密碼輸入錯誤,vim不會拒絕訪問者編輯檔案。在這種顯示亂碼的情況下編輯檔案並儲存,整個檔案就會變得混亂不堪,無法辨識。今後即使使用正確的密碼開啟檔案,也看不到正確的文件了。
(2)如果對一個需要編譯的原始碼檔案進行了加密,則無法通過編譯器的語法檢查。
(3)交換檔案是無法加密的。這樣引起什麼問題?問題就是如果其他使用者想辦法讀取到了你的交換檔案,就可以繞過解密環節,你的加密也就無意義了。解決的辦法就是,不使用交換檔案。方法有三個,一是修改你的vimrc檔案(vim配置檔案):
set noswapfile
二是在用vim開啟檔案之初就輸入命令:
vim -x -n filename
(注意-x是加密引數,與我們所說的swap沒有關係,不要搞混)
三是在進入vim編輯該檔案後,輸入:
:setlocal noswapfile
不過不使用交換檔案的壞處就是,你可能會面臨資料丟失而無法找回的悲劇。所以又想用加密,又想不丟失檔案的朋友們,就勤按“:w”吧。