中文名: Hacking Vim 原名: Hacking Vim 别名: A cookbook to get the most out of the latest Vim editor 作者: Kim Schulz资源格式: PDF 版本: 文字版 出版社: Packt Publishing书号: 9781847190932发行时间: 2007年 地区: 美国 语言: 英文 简介: 内容简介: 不知道是谁 说过一句话:说世界上的程序员分为三种,一种是使用VIM的,还有一种使用Emacs的,剩下的都是第三种。由此可见VIM的强大程度,可以说,这是一款非常适合程序员使用的编辑器。VIM的设计哲学是如果你的工作只需要做一次,那没问题,怎么搞都行,如果你的工作是要重复的完成某些工作,则IVIM总可以帮你找到更少的按键方式来实现相同的目标,为此,VIM设计了多种模式,常见的模式包括命令模式,编辑模式,命令模式等,这个也是和其他编辑器一个很不相同的地方,可能有些已经有其他编辑器习惯的人有点不太习惯的地方,但是如果将模式熟悉了就可以发现在不同的模式之间切换是很平常的事情,而且带来的好处是更少的按键和更快的输入。 VIM是VI的优秀后裔,虽然VI的后裔中不仅仅包括VIM,但是VIM是实现对VI的兼容性最好的编辑器,其他的后裔还包括STEVIE, ELvis, NVi, Vile等。除了实现对VI的兼容性外,VIM还扩展了很多的功能,包括语法高亮,代码折迭,脚本扩展等等,Packt Publishing出版社出版的这本书《Hacking VIM》就对VIM使用的一些TIP作了介绍,介绍的内容包括定制篇,移动篇,效率篇,格式篇和脚本篇,希望可以给你在使用VIM的过程中带去一点帮助。 目录: *---注:该版本为英文版,以下仅为中文的提要而已,切勿以为是中文版,特此注明! 提纲 1.引言 2.常用技巧 2.1全局替换 2.2多文件替换 2.3增加多行注释 2.4 ab技巧 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 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=\.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 说明: 设置字典的方式:在.vimrc中增加以下语句(借用look命令的字典库) set dictionary+=/usr/share/dict/words 即可使用Ctrl+x Ctrl+k功能,很好很强大! 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 日历插件 ... ### Hacking Vim 知识点解析 #### 一、引言 《Hacking Vim》是一本专注于提升 Vim 编辑器使用效率和技术深度的指南书籍。对于已经熟练掌握 Vim 基础操作(如 hjkl 导航、i 插入模式、yy 复制、dd 删除等)但尚未深入自定义 `.vimrc` 文件的用户来说,本书具有极高的实用价值。通过阅读本书,读者可以了解到一系列提高工作效率和编辑体验的技巧。 #### 二、常用技巧 **2.1 全局替换** 全局替换是 Vim 中非常实用的一个功能,用于批量替换文本中的特定字符串。例如: ``` :s/old/new/g ``` 此命令将文档中所有出现的“old”替换为“new”。 **2.2 多文件替换** 在处理多个文件时,Vim 提供了便捷的多文件替换方法。例如,要将所有 `.c` 文件中的 `a_value` 替换为 `b_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` 键退出插入模式。另一种方法是利用 `:起始行,终止行s/要替换字符/替换为新字符/g` 命令直接添加注释。 **2.4 ab 技巧** `ab` 技巧允许用户自定义缩写,简化输入过程。例如: ``` :ab mail abc@gmail.com ``` 这样,每当键入 `mail` 并按下 `Tab` 键时,Vim 将自动将其替换为 `abc@gmail.com`。 **2.5 分割窗口功能** Vim 支持水平和垂直分割窗口,有助于同时查看多个文件或同一文件的不同部分。例如,使用 `:split [filename]` 进行水平分割,使用 `:vsplit [filename]` 进行垂直分割。此外,还可以通过 `:new` 命令在新窗口中打开文件。用户可以通过 `CTRL+W w` 在窗口间循环切换,或使用 `CTRL+W (h|j|k|l)` 分别向左、下、上、右移动。 **2.6 改变颜色配置** 通过 `:colorscheme` 命令,用户可以轻松地更改 Vim 的颜色主题,以适应个人喜好或改善视觉体验。例如: ``` :colorscheme mycolors ``` 其中 `mycolors` 是预设的颜色方案之一。 **2.7 显示和不显示行号** 显示行号可以通过 `set nu[mber]` 开启,取消显示行号则使用 `set nonu`。 **2.8 更好的状态行** 状态行显示当前编辑文件的信息,如路径、文件名等。用户可以通过设置 `statusline` 来定制状态行的内容。例如: ``` set statusline=%F%m%r%h%w\ [FORMAT=%{&ff;}]\ [ASCII=\.3b]\ [POS=%4l,%3v][%p%%]\ [LEN=%L] ``` 此设置会显示文件的路径、文件名、格式、光标位置及文件长度等信息。 **2.9 光标行和光标列** 设置光标行和光标列可以提高编辑时的可见性和便利性。例如: ``` :set cursorline :set cursorcolumn ``` 光标行和光标列分别突出显示光标所在的行和列。 **2.10 语言拼写检查** 启用语言拼写检查可以避免拼写错误,提高代码质量。例如: ``` set spell set spelllang=en,de,it ``` 这将启用英语、德语和意大利语的拼写检查。对于中文支持,则需要额外的语言包。 **2.11 键绑定** 键绑定允许用户自定义键盘快捷键,提高编辑效率。例如,可以使用 `map`、`imap`、`cmap`、`nmap` 和 `vmap` 分别为 Normal、Insert、Command-line、Normal 和 Visual 模式定义快捷键。例如: ``` imap <C-s> <ESC>:w<CR>a ``` 此命令使得按 `<C-s>` 键等同于执行 `<ESC>:w<CR>a` 命令。 **2.12 定位功能** Vim 提供了丰富的定位功能,帮助快速导航至文件中的特定位置。例如,使用 `{` 和 `}` 定位至段落的开头和结尾;使用 `(` 和 `)` 定位至句子的开头和结尾;使用 `w` 和 `b` 定位至单词的开头和结尾;使用 `%` 定位至匹配的括号等。 **2.13 自动补全** Vim 支持多种自动补全方式,如单词补全 (`Ctrl+p`)、文件名补全 (`Ctrl+x Ctrl+f`)、整行补全 (`Ctrl+x Ctrl+l`) 等,极大地提高了编写代码的速度和准确性。 **2.14 使用宏** 宏是记录并回放一系列命令的有效工具,可用于重复执行相同的编辑操作。例如,使用 `qx` 开始录制宏至寄存器 x,使用 `@x` 回放宏,使用 `@@` 重复上一个宏。 **2.15 读写文件或命令内容** 读取文件内容 (`r filename`) 或将文件内容写入另一文件 (`m,nw filename`) 是 Vim 的基本功能之一。此外,还可以通过 `r!command` 插入外部命令的结果。 **2.16 使用寄存器** 寄存器是 Vim 中用于存储临时数据的区域。它包括无名寄存器 (`""`)、数字寄存器 (`"0 "1 … "9`)、有名寄存器 (`"a~"z "A~"Z`) 等。合理利用寄存器可以提高编辑效率。 **2.17 折迭** 折迭功能允许隐藏文档中的部分区域,以减少屏幕上的混乱,提高阅读效率。例如,使用 `zfa{` 创建折迭,使用 `zc` 关闭折迭,使用 `zo` 打开折迭。 **2.18 文件比较** 使用 `vimdiff` 或 `:diffsplit` 命令可以对比两个文件之间的差异。例如,`vim –d file1 file2` 将打开 Vim 并显示两个文件的差异。 **2.19 缩进** Vim 支持多种缩进操作,如 `%` 缩进块中内容、`<%` 反缩进块中内容、`>i{` 内部缩进等。正确使用缩进可以提高代码的可读性。 **2.20 使用文件模板** 通过 `:autocmd` 命令,可以在新建文件时自动加载模板。例如,可以设置在创建新的 `.html` 文件时自动加载 HTML 模板。 **2.21 识别中文字体** 为了正确显示中文内容,需要设置适当的编码。例如,在 `.vimrc` 文件中添加以下设置: ``` set fileencodings=utf-8,gb2312,gbk,gb18030 set termencoding=utf-8 set encoding=prc ``` 这将确保 Vim 正确识别和显示中文字符。 #### 三、常用插件 **3.1 ctags** ctags 是一个用于创建源代码标签索引的工具,可以帮助开发者快速定位到函数、类、变量等定义的位置。例如,使用 `ctags –R *` 创建标签索引,然后使用 `Ctrl+]/Ctrl+O` 快速跳转至定义处。 **3.2 taglist** taglist 是一个插件,可以生成文件结构的大纲视图,包括函数、类、变量等,便于快速导航至所需位置。 **3.3 A** 该插件允许用户在 C/C++ 项目中快速跳转至头文件或实现文件。 **3.4 NERDtree** NERDtree 是一个文件浏览器插件,提供了类似于图形界面文件管理器的体验,用户可以直接在 Vim 中浏览和打开文件。 **3.5 MiniBuffer** MiniBuffer 是一个用于多文件编辑的插件,它提供了一个类似于标签页的导航菜单,便于用户在多个文件间切换。 **3.6 calendar** calendar 插件提供了日历功能,方便用户在 Vim 中查看日期。 通过以上技巧和插件的应用,Vim 不仅成为了一款高效的文本编辑器,还能为用户提供强大的编程支持和个性化设置选项,极大地提升了编程效率和个人生产力。














剩余223页未读,继续阅读

- 粉丝: 83
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- C#窗体及常用控件、组件PPT课件.ppt
- 2022年通信生产实习报告汇编8篇.docx
- 互联网思维在报业转型中的运用.docx
- 第四章系统安全评价.pptx
- hadoop生态系统.pdf
- 计算机基础知识试题.doc
- 软件工程软件开发模型lyh教学教材.ppt
- 2021年全国中小学教师网络研修培训心得范本.doc
- 常见的网络推广方法有哪些.pdf
- 【税会实务】Excel中隔行插空行技巧.doc
- C语言程序设计教学论文.doc
- 移动互联网第四波浪潮李开复精选备课讲稿.ppt
- ZKTeco考勤软件说明书模板.doc
- 2021-2022年收藏的精品资料系统集成项目管理工程师第2章练习题总结信息系统服务管理.doc
- 浅谈信息化对中职会计教学的影响.docx
- excel-操作技巧培训PPT课件.pptx



- 1
- 2
前往页