《 Hacking Vim 》讀書筆記: Vim 中高級技巧

轉自:http://blog.csdn.net/skydreamer01/article/details/4228264html

Hacking Vim 》讀書筆記: Vim 中高級技巧 編程

1. 引言 vim

2. 經常使用技巧 ide

2.1 全局替換 函數

2.2 多文件替換 字體

2.3 增長多行註釋 spa

2.4 ab 技巧 .net

2.5 分割窗口功能 插件

2.6 改變顏色配置 命令行

2.7 顯示和不顯示行號

2.8 更好的狀態行

2.9 光標行和光標列

2.10 語言拼寫檢查

2.11 鍵綁定

2.12 定位功能

2.13 自動補全

2.14 使用宏

2.15 讀寫文件或命令內容

2.16 使用寄存器

2.17 摺疊

2.18 文件比較 vimdiff

2.19 縮進

2.20 使用文件模板

2.21 識別中文字體

3. 經常使用插件

3.1 ctags

3.2 taglist

3.3 A

3.4 NERDtree

3.5 MiniBuffer

3.6 calendar

Hacking Vim 》讀書筆記: Vim 中高級技巧

1. 引言

若是你已經使用 Vim 超過一年半載,對 hjkl,i,a,yy,dd,p,u 等命令已經倒背如流,可是還基本沒有本身寫過 .vimrc 文件,又以爲須要將使用 Vim 的程度提到一個新的高度,看《 Hacking Vim 》這本書最合適不過了。

我給這本書打 4 分。以爲很不錯是由於這本書中提到了許多我原來沒有掌握的技巧或命令。沒有打 5 分是由於這其中也夾雜着好些沒有多大用處的部分,又有一些部分選材不是很精要。好比說, Vim 插件部分,我覺得一本好的書應該爲讀者挑選一些最多見也最有用的插件對做者進行介紹。這部分做者彷佛尚未 SMTH BBS Vim 版的 FAQ 寫得好。

2. 經常使用技巧

下面總結一下我從這本書和其它地方學到的一些常見的設置和技巧(我自認爲是中高級的,但是有些讀者可能認爲某些部分是初級的)。

2.1 全局替換

  %s/old/new/g

2.2 多文件替換

多文件替換,好比要替換全部 .c 文件中 a_value a_value ,可使用以下方法:

vi *.c
:argdo %s/a_value/b_value/ge | update
其中 update 是直接替換覆蓋原文件,若須要確認,則可以使用
:argdo %s/a_value/b_value/gec | update

2.3 增長多行註釋

方法一:

Ctrl+v; 選定所需行 ; I;  #|//; Esc 兩次

   好比須要增長 # 或者是 // 這種註釋。 Ctrl + v 定位到開始行,而後選定須要的行,而後執行 I 命令,而後輸入 # // ,而後按 Esc 鍵兩次,便可把註釋操做應用到全部選定的行,記住選定不能使用 v 指令,而應該使用 Ctrl + v (清除註釋請參考上面的方法) (v 是按行選定, Ctrl + v 是按照列選定 )

    方法二:

: 起始行 , 終止行 s/ 要替換字符 / 替換爲新字符 /g

好比: :1,20s/^//////g

2.4 ab 技巧

    : ab 替代符 原始信息

   好比::ab mail abc@gmail.com

2.5 分割窗口功能

分割窗口:

:split  [filename] ( 水平分割)

:vsplit [filename] ( 垂直分割)

:new ( 打開一個窗口編輯新文件)  

窗口跳轉:

CTRL+W w         (循環跳轉)

CTRL+W (h|j|k|l) (上下左右)

關閉(當前)窗口:

:close  

關閉全部其它窗口

:only  

增減窗口大小

CTRL+W +/-  

緩衝區跳轉:

:bnext  ( 下一緩衝區)

:blast (上一緩衝區)  

退出全部窗口

:qall

保存全部窗口:

:wall

保存並退出全部窗口:

:wqall

2.6 改變顏色配置

:colorscheme mycolors

Vim 自帶多種配色方案,能夠根據須要本身選用。若不知道系統有哪些配色方案,能夠在輸入 :colorscheme( 空格 ) 後用 Shift+Tab 鍵選擇。

2.7 顯示和不顯示行號

顯示行號: set nu[mber]

取消顯示行號: set nonu

2.8 更好的狀態行

經過設置 statusline 能夠設置更好的狀態行,我選擇的設置是:

set statusline=%F%m%r%h%w/ [FORMAT=%{&ff}]/ [ASCII=/%03.3b]/

[POS=%4l,%3v][%p%%]/ [LEN=%L]

它能夠顯示當前文件的路徑和文件名以及整個文件的長度。

2.9 光標行和光標列

:set cursorline ( 設置光標行 )

:set cursorcolumn ( 設置光標列 )

其中我以爲光標行更有用些。 Vim 默認設置,要找到光標所在位置不是很方便。

2.10 語言拼寫檢查

set spell

set spelllang=en,de,it

中文須要語言包支持,不過最經常使用的仍是英文檢查吧

2.11 鍵綁定

map Normal, Insert, Visual Command-line 模式均有效

imap Insert 模式有效

cmap Command-line 模式有效

nmap Normal 模式有效

vmap Visual 模式有效

鍵綁定能夠定義一些鍵的組合爲一個快捷鍵,如:

imap <C-s> <ESC>:w<CR>a

2.12 定位功能

{ 段首

} 段尾

g, 前一修改處

g; 後一修改處

( 句首

) 句尾

w 下一單詞頭

b  前一單詞頭

% 跳至匹配括號

[[ ][ 向後 | 前至下一區段開始

[] ]] 向後 | 前至下一區段結束

[{ 跳至塊開始

]} 跳至塊結束

[/ 跳至註釋塊開始

]/ 跳至註釋塊結束

gd (Goto Declaration) 跳至定義處

gD 跳至全局變量定義處

gj 跳至長行下一段

gk 跳至長行上一段

gf (Goto File) 打開文件

?向前查找  

/ 向後查找

?? 重複上一貫前查找

//  重複上一貫後查找

#  向前查找光標下詞 ( 整詞匹配 )

*  向後查找光標下詞(整詞匹配)

g# 向前查找光標下字符串(沒必要是整詞)

g* 向後查找光標下字符串(沒必要是整詞)

vimgrep /pattern/[j][g] file file2 … fileN 多文件查找

使用標誌 (mark) 定位:

0~9 系統自用

a-z 本文件 mark ( 使用方法: 標誌: ma, 調至標誌 `a)

A-Z 跨文件的 mark

:marks 查看全部標誌

:delmarks 刪除標誌

2.13 自動補全

Ctrl+p 自動補全單詞

Ctrl+n 自動補全單詞(向前查找)二者通常感受不到區別

Ctrl+x Ctrl+k 經過字典補全單詞

Ctrl+x Ctrl+t 從同義詞典 (thesaurus) 補全

Ctrl+x Ctrl+f  文件名自動完成(頗有用)

Ctrl+x Ctrl+l  自動完成整行

Ctrl+x Ctrl+i 從當前和包含文件補全

Ctrl+x Ctrl+o 全能自動補全,須要 set omnifunc

2.14 使用宏

qx ( 開始錄製宏至寄存器 x x 能夠爲任何字母,可是最多見的是 q)

command1

q ( 結束錄製 )

@x ( 引用宏 )

@@ ( 重複上次宏使用 )

2.15 讀寫文件或命令內容

:r filename ( 讀入文件內容 )

:m,nw filename ( m~n 行內容寫入文件 )

r!command ( 插入 command 命令結果 )

2.16 使用寄存器

無名寄存器 「」

數字寄存器 「0 「1 … 「9

有名寄存器 (Named Registers) 「a~」z 「A~」Z ( 大寫寄存器內容追加,而不是覆蓋 )

只讀寄存器:

   「% 當前活動緩衝區文件名

   「#  前一文件的文件名,替換文件

   「.  最後插入的文本

   「:  最後命令行運行的命令

黑洞寄存器: 「- 進入的永遠消失

搜索模式寄存器 「/

表達式寄存器: 「=   ( 使用:輸入表達式後 ENTER, p 粘貼 )

2.17 摺疊

zfa{   建立摺疊

zc     摺疊

zo     打開摺疊

zM    摺疊全部

zR     打開全部摺疊

2.18 文件比較 vimdiff

:vimdiff file1 file2

:diffsplit filename

或命令行下 vim –d file1 file2 可進行文件比較

[c 前一差異

]c 後一差異

2.19 縮進

>% 縮進塊中內容

<% 反縮進塊中內容

>i{ { 內部縮進(不包括 {}

>a{ { 內容縮進(包括 {}

<i{ 反縮進

<a{ 反縮進

2.20 使用文件模板

:autocmd BufNewFile *.html 0r $VIMHOME/template/html.tpl

能夠在建立新的 .html 文件時讀入模板( html.tpl 中內容)

2.21 識別中文字體

你的 Vim 在打開中文文件時都是亂碼嗎?如果這樣,在 .vimrc 中加入如下幾行就能夠了:

set fileencodings=utf-8,gb2312,gbk,gb18030

set termencoding=utf-8

set encoding=prc

3. 經常使用插件

Vim 中的插件有許多,上 Vim.org 本身查吧,不過我本身使用如下幾個,也以爲是用有用的。如下只說明這些插件的用途,具體用法不作詳細介紹。有了這些插件,足以造成一個能夠與 VC 媲美的集成開發環境了。

3.1 ctags

實現標籤跳轉, C/C++/Java 編程時頗有用。命令行下 ctags –R * 創立標籤, Ctrl+]/Ctrl+O 跳轉, Ctrl+T 返回

3.2 taglist

生成文件綱要,包括函數、關鍵字等。安裝後使用 :Tlist

3.3 A

實現頭文件跳轉。 ctags 不能查找頭文件

3.4 NERDtree

目錄瀏覽功能。能夠用 o 命令打開目錄或文件,很是好用

3.5 MiniBuffer

打開多個文件時,生成一個相似標籤頁的導航菜單,能夠用 Ctrl+w w 命令跳轉至該部分並用 Tab 選擇不一樣文件

3.6 calendar

日曆插件

相關文章
相關標籤/搜索