vim === .. versionadded:: @20190323 新建,编辑及插件 编辑操作 -------- 模式 ^^^^ * Normal 模式:按下 :kbd:`Esc` 键回到正常(Normal)模式 定位 ^^^^ * 移动 ======== ============== :kbd:`h` 左 :kbd:`j` 下 :kbd:`k` 上 :kbd:`l` 右 ======== ============== * 跳转 .. _motion: * 可以用于编辑操作的跳转动作 ========= ========================================================= :kbd:`w` 从当前光标位置到下一个单词起始处,不包括它的第一个字符。 :kbd:`e` 从当前光标位置到单词末尾,包括最后一个字符。 :kbd:`b` 从当前光标位置到单词起始,包括第一个字符。 :kbd:`^` 从当前光标位置到当前非空白字符行首。 :kbd:`0` 从当前光标位置到当前行首。 :kbd:`$` 从当前光标位置到当前行末。 :kbd:`#$` 从当前光标位置到下第 # 行末。 :kbd:`gg` 跳转到文件第一行。 :kbd:`G` 到文件的底部。 :kbd:`%` 匹配 {},(),[] 之间跳转。 :kbd:`H` 从当前光标位置到当前屏幕的顶部。 :kbd:`M` 从当前光标位置到当前屏幕的中部。 :kbd:`L` 从当前光标位置到当前屏幕的底部。 :kbd:`#H` 跳转到当前屏的第 # 行。 :kbd:`#L` 跳转到当前屏的到数第 # 行。 :kbd:`(` 跳转到当前的段首。 :kbd:`)` 跳转到当前的段尾。 :kbd:`{` 跳转到上一个空行。 :kbd:`}` 跳转到下一个空行。 :kbd:`[{` 跳转到目前区块开头。 :kbd:`]}` 跳转到目前区块结尾。 ========= ========================================================= =================== ======================= zt 设置当前光标位置为屏顶。 zz 设置当前光标位置为屏中。 zb 设置当前光标位置为屏底。 :# 跳转到第 # 行。 #G 跳转到第 # 行。 :kbd:`⌃` + :kbd:`b` 向后翻一页。 :kbd:`⌃` + :kbd:`f` 向前翻一页。 :kbd:`⌃` + :kbd:`u` 向后翻半页。 :kbd:`⌃` + :kbd:`d` 向前翻半页。 :kbd:`⌃` + :kbd:`e` 向下滚动一行。 =================== ======================= * 选择 =================== ========= :kbd:`V` 选择一行。 :kbd:`^` + :kbd:`V` 矩形选择。 =================== ========= 编辑(增删改查) ^^^^^^^^^^^^^^^^ * 新增 ======== ==================== :kbd:`i` 光标前插入 :kbd:`I` 在当前行首插入 :kbd:`a` 光标后插入 :kbd:`A` 当前行尾插入 :kbd:`O` 在当前行之前插入新行 :kbd:`o` 在当前行之后插入新行 ======== ==================== * 删除 ========= =================================== :kbd:`x` 删除光标所在位置的字符 :kbd:`X` 删除光标所在位置前的字符 :kbd:`D` 删除到行尾 :kbd:`dd` 删除光标所在行。 ========= =================================== * `d motion`\,其中 * d 删除操作符 * number 可选数字,表示后续对象的个数 * motion 操作符的操作对象,参考 :ref:`跳转动作 `\。 * aB {} 及其内的内容。 * iB {} 中的内容。 例如,:command:`d$` 表示从当前光标删除到行末。 * 修改 ========================== ========================= :kbd:`r` 替换光标所在位置的字符。 :kbd:`R` 替换光标所到之处的字符。 :kbd:`C` 修改到行尾。 :kbd:`s` 替换当前一个光标所处字符。 :kbd:`c` :kbd:`i` :kbd:`'` 修改配对标点中的文本内容。 :kbd:`d` :kbd:`i` :kbd:`'` 删除配对标点中的文本内容。 :kbd:`y` :kbd:`i` :kbd:`'` 复制配对标点中的文本内容。 :kbd:`v` :kbd:`i` :kbd:`'` 选中配对标点中的文本内容。 ========================== ========================= * `c motion`\,其中 motion 参考 :ref:`跳转动作 `\。 * 查找: ======== ================================ :kbd:`/` 输入关键字查找。n/N 向后/前继续。 :kbd:`?` 输入关键字查找。n/N 向后/前继续。 :kbd:`*` 在当前页向后查找同一字。 :kbd:`#` 在当前页向前查找同一字。 ======== ================================ * 复制 * `y motion`\,其中 motion 参考 :ref:`跳转动作 `\。 ======== ===================================== :kbd:`Y` 复制当前行到缓冲区,同 :command:`yy` :kbd:`p` 将最后一次复制/删除的内容置入光标之后 ======== ===================================== * 大小写转换 ===== ========================== gUU 将当前行的字母改为大写。 guu 将当前行的字母改为小写。 gUw 将当前光标后的单词改为大写。 guw 将当前光标后的单词改为小写。 gggUG 全文大写。 ggguG 全文小写。 ===== ========================== * 其它: =================== ====================================== :kbd:`u` 撤消最后执行的命。 :kbd:`U` 撤消对整行的修改。 :kbd:`J` 当前行和下一行合并成一行。 :kbd:`⌃` + :kbd:`r` 撤消以前的撤消命令,恢复以前的操作结果 =================== ====================================== * 退出 ========================= ======================== :w 保存当前编辑的文件 :wq 保存当前编辑的文件后退出 :q! 退出不保存 :command:`:w !sudo tee %` 保存无权限的已编辑文件 ========================= ======================== 窗口操作 ^^^^^^^^ ============================ =========================== :kbd:`⌃` + :kbd:`w` :kbd:`p` 在两个分割窗口之间来回切换。 :kbd:`⌃` + :kbd:`w` :kbd:`j` 跳到下面的分割窗 :kbd:`⌃` + :kbd:`w` :kbd:`h` 跳到左边的分割窗。 :kbd:`⌃` + :kbd:`w` :kbd:`k` 跳到上面的分割窗。 :kbd:`⌃` + :kbd:`w` :kbd:`l` 跳到右边的分割窗。 ============================ =========================== 文件状态 ^^^^^^^^ * :kbd:`⌃` + :kbd:`g` 显示当前编辑文件中当前光标所在行位置以及文件状态信息 插件 ---- `~/.vim/pack/bundle`: * start: added to your runtime path when Vim starts up. * opt: add these to your runtime path when you need them by using the `:packadd` command.