《 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

日历插件

相关文章
相关标签/搜索