Vim 實用小技巧

(一)初級個性化配置你的vim

一、vim是什麼?linux

vim是Vi IMproved,是編輯器Vi的一個增強版,一個極其強大並符合IT工程師(程序員、運維)習慣的編輯器。若是你是一名職業的SE,那麼必定在尋找一款出色的可以自由定製、知足靈活編輯功能的編輯器。那麼答案,就是vim或者Emacs。而這一套連續的博文,就爲您介紹vim編輯器。至於另外一款強大的編輯器Emacs,咱們會在從此的一個系列博文中看到。程序員

二、配置文件在哪?ubuntu

Windows系統的配置文件是vim安裝目錄下的vimrc文件。vim

Linux系統,RHEL和CentOS的配置文件是/etc/vimrc,DebianUbuntu的配置文件是/usr/share/vim/vimrc。windows

Mac OS X的配置文件是/usr/share/vim/vimrc。centos

三、vimRC中的RC是什麼意思?運維

爲何把這麼個沒有意義的問題也列出來?緣由很簡單,就是我在接觸vim之初第二個想問的問題就是這個(第一個就是上面的「1」)。通常在運行某個軟件、環境或工具之初,要初始執行的一些命令,稱爲Run Commands,即RC。根據Wikipedia.org的記載,RC縮寫的用法源自MIT的相容分時操做系統(Compatible Time-Sharing System,CTSS)[參考1]。因此之後若是你看到了SystemRC或者ScreenRC,也就知其原因了。
編輯器

四、三種基本模式工具

在《你們來學vim》中提到vim有6+5種模式,但除了細分程度不一樣外,實際上經常使用的只有3種模式:Normal Mode、Insert Mode和Command-line Mode。post

從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鍵便可。

五、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

(二)經常使用的狀態切換按鍵

一、Normal Mode -> Insert Mode

i 小寫字母i,在光標位置插入
a 小寫字母a,在光標的下一個位置插入
I 大寫字母I,在光標所在行的第一個非空格處插入
A 大寫字母A,在光標所在行的最後一個字符處插入
o 小寫字母o,在光標所在行的下一行處插入新行
O 大寫字母O,在光標所在行的上一行處插入新航
r 小寫字母r,替換光標所在處的字符一次
R 大寫字母R,持續替換光標所在處的字符,直到按下ESC

二、Normal Mode -> Command-line Mode

:w 保存文件
:w! 強制保存文件(前提是用戶有修改文件訪問權限的權限)
:q 退出緩衝區
:q! 強制退出緩衝區而不保存
:wq 保存文件並退出緩衝區
:wq! 強制保存文件並退出緩衝區(前提是用戶有修改文件訪問權限的權限)

:w <filename> 另存爲名爲filename文件
:n1,n2 w <filename> 將n1行到n2行的數據另存爲名爲filename文件
:x 若是文件有更改,則保存後退出。不然直接退出。

三、Insert Mode -> Normal Mode

按下ESC鍵

四、Command-line -> Normal Mode

按下ESC鍵

(三)經常使用光標移動按鍵

一、光標字符操做

j 向下
k 向上
h 向左
l 向右

$ 光標移動到行尾(End),注意要按Shift鍵
0 光標移動到行首(Home)
^ 光標移動到行首第一個非空白字符(Home),注意要按Shift鍵

二、光標詞操做

w 光標移動到後一詞的詞首
W 光標移動到後一詞的詞首且忽略標點符號
e 光標移動到後一詞的詞尾
E 光標移動到後一詞的詞尾且忽略標點符號
b 光標移動到前一詞的詞首
B 光標移動到前一詞的詞首且忽略標點符號

三、光標句操做

) 光標移動到後一句的句首
( 光標移動到前一句的句首
% 配合「(」和「)」使用,尋找相匹配的另外一半

四、光標行操做

G 光標移動到文檔的最後一行的第一個非空白字符
nG 光標移動到文檔的第n行,至關於」:n」
gg 光標移動到文檔的第1行的第一個非空白字符,至關於」1G」,也至關於」:1″
<N> 光標向下移動N行

五、光標段操做

} 光標移動到下一段的段首
{ 光標移動到上一段的段首
% 配合「(」和「)」使用,尋找相匹配的另外一半

六、光標頁操做

Ctrl+f 向下翻頁(Pagedown)
Ctrl+b 向上翻頁(Pageup)
Ctrl+d 向下翻半頁
Ctrl+u 向上翻半頁

H 光標移動到目前顯示頁的第一行
M 光標移動到目前顯示頁的中間行
L 光標移動到目前顯示頁的最後一行

七、光標自由操做

Ctrl+o 回到光標的上一位置

(四)經常使用編輯操做按鍵

一、刪除操做(delete)

dd 刪除光標所在行
ndd 刪除從光標所在行開始,向下的n行
d1G 刪除從光標所在行開始,到第一行的全部行
dG 刪除從光標所在行開始,到最後一行的全部行
d$ 刪除從光標所在位置,到行尾的全部字符
d0 刪除從光標所在位置,到行首的全部字符

二、複製操做(yank)

yy 複製光標所在行
nyy 複製從光標所在行開始,向下的n行
y1G 複製從光標所在行開始,到第一行的全部行
yG 複製從光標所在行開始,到最後一行的全部行
y$ 複製從光標所在位置,到行尾的全部字符
y0 複製從光標所在位置,到行首的全部字符

三、粘貼操做(paste)

p 小寫字母p,粘貼剪貼板中的數據,從光標所在行的下一行開始
P 大寫字母P,粘貼剪貼板中的數據,從光標所在行的上一行開始

四、撤銷與重作操做(undo,redo)

u (Undo)撤銷上一個操做
Ctrl+r (Redo)重作上一個操做

五、重複操做

. 重複上一操做

六、替換操做(replace)

r 替換光標所在處字符
R 進入替換模式,直至按ESC退出
cc 替換光標所在行
cw 替換光標所在的英文單詞
~ 轉換大小寫

七、排版操做

:le<ft> 光標所在行左對齊
:ri<ght> 光標所在行右對齊
:ce<nter> 光標所在行居中

(五)經常使用多緩衝區操做按鍵

一、多文件編輯模式

(1)argument list模式,就是在打開vim編輯器時,攜帶多個文件路徑參數。
(2)buffer list模式,就是在進入vim編輯器後,打開多個緩衝區進行編輯。

二、單一緩衝區打開多個文件

:files 顯示目前打開了哪些文件
:n 切換到下一個緩衝區內容
:N 切換到上一個緩衝區內容
:2n 切換到下下個緩衝區內容
:bn 下一個緩衝區內容(buffer next)
:bp 上一個緩衝區內容(buffer previous)

三、多個緩衝區打開多個文件

: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)關於加密

一、加密你的文本文件

當你用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並不會提示你密碼錯誤,而是顯示一堆無心義的垃圾代碼。

二、解除加密與重設密碼

打開你已經加密的文件,而後輸入:

:set key=

這樣,你的密碼就被設置爲空了,從此進入就再也不須要輸入密碼了。而若是你向重設密碼的話,你能夠輸入:

:X

注意是個大寫字母X。這時vim會提示你,只要反覆輸入兩次新的密碼就能夠了:

Enter entryption key: *****
Enter sanme key again: *****

三、加密引發的問題

vim的加密功能,能夠說是問題一大堆。好比:

(1)若是密碼輸入錯誤,vim不會拒絕訪問者編輯文件。在這種顯示亂碼的狀況下編輯文件並保存,整個文件就會變得混亂不堪,沒法辨識。從此即便使用正確的密碼打開文件,也看不到正確的文檔了。

(2)若是對一個須要編譯的源代碼文件進行了加密,則沒法經過編譯器的語法檢查。

(3)交換文件是沒法加密的。這樣引發什麼問題?問題就是若是其餘用戶想辦法讀取到了你的交換文件,就能夠繞過解密環節,你的加密也就無心義了。解決的辦法就是,不使用交換文件。方法有三個,一是修改你的vimrc文件(vim配置文件):

set noswapfile

二是在用vim打開文件之初就輸入命令:

vim -x -n filename

(注意-x是加密參數,與咱們所說的swap沒有關係,不要搞混)

三是在進入vim編輯該文件後,輸入:

:setlocal noswapfile

不過不使用交換文件的壞處就是,你可能會面臨數據丟失而沒法找回的悲劇。因此又想用加密,又想不丟失文件的朋友們,就勤按「:w」吧。

轉自:http://blog.csdn.net/poechant/article/details/7216534 本人作了點小修改。

相關文章
相關標籤/搜索