vim 的各種用法,很實用哦,都是本人是在工作中學習和總結的
(一)初級個性化配置你的vim
1、vim是什麽?
vim是Vi IMproved,是編輯器Vi的一個加強版,一個極其強大並符合IT工程師(程序員、運維)習慣的編輯器。如果你是一名職業的SE,那麽一定在尋找一款出色的能夠自由定制、滿足靈活編輯功能的編輯器。那麽答案,就是vim或者Emacs。而這一套連續的博文,就為您介紹vim編輯器。至於另一款強大的編輯器Emacs,我們會在今後的一個系列博文中看到。
2、配置文件在哪?
Windows系統的配置文件是vim安裝目錄下的vimrc文件。
Linux系統,RHEL和CentOS的配置文件是/etc/vimrc,Debian和Ubuntu的配置文件是/usr/share/vim/vimrc。
Mac OS X的配置文件是/usr/share/vim/vimrc。
3、vimRC中的RC是什麽意思?
為什麽把這麽個沒有意義的問題也列出來?原因很簡單,就是我在接觸vim之初第二個想問的問題就是這個(第一個就是上面的“1”)。一般在運行某個軟件、環境或工具之初,要初始執行的一些命令,稱為Run Commands,即RC。根據Wikipedia.org的記載,RC縮寫的用法源自MIT的相容分時操作系統(Compatible Time-Sharing System,CTSS)[參考1]。所以以後如果你看到了SystemRC或者ScreenRC,也就知其緣由了。
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 "顯示匹配的括號
參考:
Run Commands,http://en.wikipedia.org/wiki/Run_commands
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文件
:n1,n2 w 將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行
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 光標所在行左對齊
:ri 光標所在行右對齊
:ce 光標所在行居中
(五)常用多緩沖區操作按鍵
1、多文件編輯模式
argument list模式,就是在打開vim編輯器時,攜帶多個文件路徑參數。
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為小寫字母,為光標所在處設定文檔書簽amA 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”吧。
vim 的各種用法,很實用哦,都是本人是在工作中學習和總結的