写这篇文章的目的是,将日常学习到的 Vim 知识积累起来,同时不停地优化和重构知识结构,以更好地学习 Vim。
1 | set nocompatible " 设置成与 Vi 不兼容的模式,使得 Vim 的很多高级特性可以使用 |
Windows 下默认的用户自定义 Vim 文件夹是 $USERPROFILE\vimfiles
,可以通过 set rtp?
命令来查看得知。要保持与 *nix 一致的自定义 Vim 文件夹,则需要在 .vimrc
里添加 set rtp+=~\.vim
。
使用 set {option}?
获得当前选项的设置情况,使用 set {option}!
将该选项的值取反(只能用到 boolean 值的选项上)。如 set compatible?
,set showcmd!
。
:scriptnames
检查 Vim 载入了哪些配置文件和插件等。
1 | $ vimtutor " 30 分钟的 Vim 入门教程 :help " 帮助目录首页 (help.txt) :help {subject} " 关于某个主题的帮助,如 :help deleting ,个人觉得没什么用 :help {command} " 关于正常模式下某命令的相关内容,如 :help x :help index " 给出一系列 Vim 命令的列表 :help CTRL-A " 正常模式下的快捷键操作 :help i_CTRL-H " 插入模式下的快捷键操作 :help v_u " 可视模式下的快捷键操作 :help c_<Up> " 命令行编辑模式下的快键键操作 :help :quit " Vim 命令行模式命令 :help -t " Vim 启动时命令行参数 :help 'textwidth' " 选项帮助 |
不确定需要的帮助内容是什么的时候,可以使用 Ctrl-D
查询匹配的条目。如输入 :help word
时按 CTRL-D
就可以出现所有包含 word 的条目名。
正常模式下:
1 | h, j, k, l - 移动光标 i - 在当前光标入插入 a - 在当前光标后插入 A - 在行末插入 x - 删除当前位置的字符 X - 删除当前位置的前一个字符 c{motion} - 改变某一段内容 C - 改变当前位置到行末的内容 s - 改变当前位置的内容 S - 改变当前行的内容 d{motion} - 删除某些内容 D - 删除当前位置到行末的内容,等同于 d$ o - 在当前位置的下一行开新行 O - 在当前位置开新行 p - 相当于 o 但是不进入插入模式 P - 相当于 O 但是不进入插入模式 u - 撤消上一个改变内容的操作(包括U) U - 撤消对当前行的所有操作 CTRL-R - 重做上一次 u 命令带来的改变 r - 替换当前字符 R - 进入替换模式 p - 在当前位置粘贴 P - 在当前位置之前粘贴 % - 光标跳转到配对的括号处 |
1 | w - 移动到下面一个单词的第一个字母 e - 移动到下面一个单词的最后一个字母 ge - 移动到上面一个单词的最后一个字母 b - 移动到上面一个单词的第一个字母 W, E, gE, B 跟 w, e, ge, b 的效果不一样: ge b w e <- <- ---> ---> This is-a line, with special/separated/words (and some more). <----- <----- --------------------> -----> gE B W E $ 或 <End> - 移动到行末 ^ 或 <Home> - 移动到行初 " find f<char> - 行内查找字符并跳转至下一个 F<char> - 行内查找字符并跳转到上一个 " to t<char> - 效果同 f ,但是光标停在找到的字符的前一格 T<char> - 效果同 F ,但是光标停在找到的字符的后一格 [count]G - 跳转到某行 G - 跳转到文件末 gg - 跳转到文件首 CTRL-G - 显示光标位置 50% - 跳转到文件 50% 处 H - 跳转到屏幕最上一行 (home) M - 跳转到屏幕中间 (middle) L - 跳转到屏幕最下一行 (last) CTRL-D - 向下移动半屏 (down) CTRL-U - 向上移动半屏 (up) CTRL-Y - 屏幕向下滚动一行 (scroll down) CTRL-E - 屏幕向上滚动一行 (scroll up) CTRL-F - 向下移动一屏 (forward) CTRL-B - 向上移动一屏 (backward) zz - 将当前行置于屏幕中间 zt - 将当前行置于屏幕最上 zb - 将当前行置于屏幕最下 :set number - 显示行号 :set ruler - 屏幕右下角显示当前位置的行列数 |
1 | /pattern - 正向搜索 ?word - 反向搜索 n - 下一个匹配 N - 上一个匹配 # - 搜索当前位置的单词 /the\> - 搜索以 the 结尾的单词,\> 表示结尾 /\<the - 搜索以 the 开头的单词,\< 表示开头 :set ignorecase - 设置搜索时不区分大小写 :set hlsearch - 设置搜索结果高亮 :nohlsearch - 本次搜索结果不高亮,不影响下次搜索 |
搜索过的 pattern 会被 Vim 记忆下来,如 /one
搜索过后,输入 /o<Up>
会出现 /one
,即可以匹配搜索 pattern 的词首。