Vim 补充技巧

回到 Normal 模式

  • Esc

  • Ctrl+C

  • Ctrl+[

光标移动

  • ``.` 回到上一次编辑的位置,并进入 Normal 模式
  • gi 回到上一次编辑的位置,并进入插入模式
  • f/Ft/T 加字符来在行内定位字符,然后通过 ,/; 进行下一次查找
  • g_ 行尾非空字符

查找替换

  • :[range]s[ubstitute]/{pattern}/{string}/[flags]

flags 内容:g[lobal]/c[onfirm]/n[umber]

  • {string} 为空,后面 flags 指定为 n,则为统计次数

整词匹配:\<string\>

多文件(缓冲区)操作

  • :e:在当前窗口编辑指定文件,:e! 来重新加载正在编辑文件

  • :ls:缓冲区列表

  • :b 序号/名称:切换缓冲区

窗口

  • Ctrl+W S:sp:水平分割窗口,指定文件名的话可以打开新文件

  • Ctrl+W V:vs:垂直分割窗口,指定文件名的话可以打开新文件

复制粘贴

在设置了 :set autoindent 的情况下,粘贴会导致排版混乱,可以先通过如下命令来保证粘贴效果,然后再恢复:

:set paste/nopaste

寄存器

  • 复制、剪切默认使用无名寄存器,使用 xp 两个命令实现字符调换

  • "<寄存器名称>操作:内容放到指定寄存器(通过字母或数字标识寄存器)
    如:"cdd 将当前行剪切至 c 寄存器

  • :reg [寄存器名]:查看指定寄存器内容。如未制定,则查看所有寄存器。

常用寄存器:

  • "0:复制专用寄存器

  • "+:系统剪贴板

  • 使用系统剪贴板完成复制粘贴::set clipboard=unnamed

  • 录制:q{寄存器名},之后使用 q 退出
  • 回放:@{寄存器名}

应用举例:以数字 5 为起始,生成数字序列

  1. 在某一行写入数字 5,光标定位到数字上,恢复到 Normal 模式
  2. 开始录制宏:qa
  3. 定义行为:yyp 复制行,Ctrl+A 数字 + 1, q 结束宏录制
  4. 多次执行宏:100@a

命令模式

在命令模式中执行 Normal 模式中的命令,步骤如下:

  1. 选中内容
  2. 冒号 :
  3. normal 命令内容

: Ctrl+P 执行上一次命令

应用举例:为选中行的行尾增加分号

  1. Ctrl+V 选中内容
  2. 冒号 :
  3. 在光标位置输入 normal A;回车

补全

首先进入插入状态:

  • 文字补全:Ctrl+N/P
  • 路径补全:Ctrl+X-Ctrl+F

配色

  • :colorscheme 不加参数显示当前 Scheme

  • :colorscheme <ctrl+d> 显示支持的 Scheme 列表

  • :colorscheme scheme名称 指定要使用的 Scheme

  • 指定颜色风格::set background=dark/light

  • 自定义配色方案复制到这里:

~/.vim/colors/*.vim

(完)

推荐阅读更多精彩内容

  • . 重复上次更改* 正向查找字符串 # 反向查找; 向后查找一行内相同的字符,, 向前查找% 跳转到于当前光标相匹...
    cendechen阅读 398评论 0 0
  • 《Vim使用技巧》笔记 个人笔记 zc折叠代码,zv展开代码 结识.命令 . 命令可以让我们重复上次的修改,它是V...
    咣咣当阅读 1,413评论 0 0
  • 注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 本文源链接:...
    chloneda阅读 528评论 0 2
  • 最近集中读了几本关于Vim的书,�以《Practical Vim》最为详尽,特重新温习并总结成篇,一来作为复习和练...
    南瓜不胡闹阅读 4,051评论 1 29
  • 夜莺2517阅读 4,008评论 1 8