大家来学VIM 繁体版
### VIM编辑器入门知识点详解 #### 一、VIM编辑器简介 VIM是一款功能强大的文本编辑器,尤其在Linux环境下被广泛使用。它基于Vi编辑器开发而来,不仅继承了Vi的所有特性,还增加了许多实用的功能。《大家来学VIM 繁体版》是一本适合初学者入门的书籍,它详细介绍了VIM编辑器的基本操作和高级用法。 #### 二、为什么选择VIM? 1. **高效性**:VIM支持键盘快捷键,可以大大提高文本编辑的速度。 2. **跨平台性**:几乎所有的操作系统都支持VIM,包括Windows、Linux和macOS等。 3. **可定制性**:用户可以通过编写脚本来扩展VIM的功能。 4. **开源**:VIM是开源软件,用户可以自由地修改源代码来满足自己的需求。 #### 三、获取与安装VIM 1. **下载VIM**: - 官网下载:可以从VIM官方网站下载最新版本。 - 包管理器安装:在大多数Linux发行版中,可以通过包管理器轻松安装VIM。 2. **编译安装**: - **VIM**: 最常用的版本,功能全面。 - **elvis**: 一个较小的VIM克隆版本,适用于资源有限的系统。 - **nvi-m17n**: 支持多语言的VIM变种。 #### 四、VIM的四种基本模式 1. **常态模式(Normal mode)**:默认模式,用于执行大多数命令。 2. **插入模式(Insert mode)**:用于输入文本。 3. **命令列模式(Cmdline mode or Command-line mode)**:用于执行命令或设置选项。 4. **反白模式(Visual mode)**:用于选取文本。 5. **选择模式(Select mode)**:类似于反白模式,但支持鼠标操作。 6. **Ex模式(Ex mode)**:兼容早期vi编辑器的命令模式。 #### 五、基本编辑指令 1. **五种额外模式**: - **操作等待模式(Operator-pending mode)**:执行特定操作前的模式。 - **取代模式(Replace mode)**:逐字符替换文本。 - **插入常态模式(Insert-normal mode)**:在常态模式下插入文本。 - **插入反白模式(Insert-visual mode)**:在反白模式下插入文本。 - **插入选择模式(Insert-select mode)**:在选择模式下插入文本。 2. **进入插入模式的指令**:如`i`、`a`、`o`等。 3. **删除指令**:如`x`、`dd`等。 4. **取代及还原**:使用`r`替换单个字符,`R`替换直到按下Esc,`u`撤销上一次操作。 5. **加上数目字**:例如`3dd`表示删除当前行及其后两行。 6. **简单重排功能**:如`J`命令可以合并当前行与下一行。 #### 六、复制与粘贴 1. **复制(yank)**:使用`yy`复制当前行,`yw`复制单词。 2. **Register缓存区**:存储复制的内容,可以在不同的缓冲区之间进行切换。 3. **天大的指令**:暂无明确解释,可能是指非常有用的指令。 4. **疑难杂症**: - **mouse中键的剪贴功能**:在某些情况下,VIM可能不支持直接通过鼠标中键粘贴。 - **软件间互相copy时,常常都搞得天下大乱**:由于编码问题或格式不一致导致的问题。 #### 七、搜索与替换 1. **搜索**:使用`/`后跟要搜索的内容。 2. **更方便的搜索操作**:VIM提供了更高级的搜索功能,如正则表达式匹配。 3. **替换(substitute)**:使用`:s/old/new/g`命令全局替换文本中的字符串。 4. **书签功能**:使用`m`标记位置,`'`跳转到标记的位置。 #### 八、打开与保存文件 1. **开档的一些花招**:使用`:e filename`打开文件。 2. **多档编辑**:可以同时编辑多个文件,使用`:tabnew`或`:sp`命令。 3. **离开**:使用`:q`退出,`:wq`保存并退出。 4. **Vim的加密功能**:通过`:X`命令对文件进行加密处理。 #### 九、各种标示方法及视窗操作 1. **标示指令**:使用`ma`标记当前位置为a。 2. **视窗操作**:使用`:sp`分割窗口,`:vsplit`垂直分割,`:tabnew`新建标签页。 #### 十、Shell命令及求助系统 1. **Shell命令**:使用`:!command`在VIM中执行shell命令。 2. **求助系统**:使用`:help`命令获取帮助信息。 #### 十一、Set功能设定 1. **该在何处设定**:可以在`.vimrc`文件中进行配置。 2. **如何得知目前的设定**:使用`:set all`查看所有设置。 3. **各种set功能说明**: - `number`:显示行号。 - `syntax on`:开启语法高亮。 - `autoindent`:自动缩进。 - `smartindent`:智能缩进。 - `tabstop`:设置制表符宽度。 - `shiftwidth`:设置自动缩进时使用的空格数。 - `expandtab`:将制表符转换为空格。 - `showcmd`:显示正在输入的部分命令。 - `hlsearch`:搜索时高亮显示结果。 - `incsearch`:在输入搜索模式时即时显示匹配项。 - `cursorline`:高亮显示光标所在的行。 - `cursorcolumn`:高亮显示光标所在的列。 - `relativenumber`:显示相对行号。 - `listchars`:显示不可见字符,如空格和制表符。 - `showmatch`:括号匹配时显示相应的括号。 - `wildmenu`:补全路径或文件名时显示菜单。 - `wildmode`:设置补全行为。 - `ignorecase`:忽略大小写差异。 - `smartcase`:当搜索模式包含大写字母时不忽略大小写。 - `scrolloff`:设置滚动时保持光标距离屏幕顶部或底部的行数。 - `foldmethod`:设置折叠方式。 - `foldenable`:启用或禁用折叠。 - `foldlevel`:设置折叠级别。 - `foldtext`:设置折叠时显示的文本。 - `foldminlines`:设置最小的折叠行数。 - `foldmaxlines`:设置最大的折叠行数。 - `foldclosed`:设置初始折叠状态。 - `foldopen`:设置初始展开状态。 - `foldcolumn`:设置折叠列的宽度。 - `foldexpr`:设置折叠表达式。 - `foldexpr`:设置自定义折叠方式。 #### 十二、规则表示式的运用 1. **基本的匹配**:使用简单的正则表达式匹配文本。 2. **中介字元(metacharacter, or character classes)**:特殊字符,如`.`、`*`、`+`、`?`、`^`、`$`等。 3. **全域性的指令**:使用`:%s/pattern/replacement/flags`全局替换文本。 4. **&替代变量**:引用上一个替换命令的结果。 5. **greedy陷阱**:默认情况下,正则表达式会尽可能多地匹配字符,有时需要使用非贪婪模式。 #### 十三、VIM折迭(Folding) 1. **手动折迭**: - **折迭的产生**:使用`zf`命令手动创建折叠区域。 - **折迭的操作**:使用`zo`打开折叠区域,`zm`关闭折叠区域。 - **折迭的记亿**:可以将折叠状态保存在文件中。 2. **自动折迭**: - **以缩行为依据**:根据代码缩进来自动创建折叠区域。 - **以特殊的表示法为依据**:例如C语言中的`{}`。 - **以语法规则为依据**:根据文件的语法规则自动创建折叠区域。 - **以是否更改过为依据**:如果某部分代码被修改,则自动取消折叠。 - **以文件上的标志为依据**:使用标记来指示折叠的起始位置。 #### 十四、Vimtags的使用 1. **各种程式码专用tag工具**:如ctags等。 2. **tags档案的格式**:tags文件的结构和规范。 3. **tag档案的制作**:使用ctags命令生成tags文件。 4. **一般的tag使用**:如何利用tags文件快速定位到函数或变量的定义位置。 5. **Vim线上说明文件的制作**:如何为VIM创建自定义的帮助文档。 《大家来学VIM 繁体版》是一本全面介绍VIM编辑器使用方法的书籍,适合初学者作为学习VIM的入门指南。通过本书的学习,读者可以掌握VIM的基本操作,并了解其强大的高级功能。