返回

Vim 记录

跳到复制过的

`[ 跳到复制过后的文字首

`] 跳到复制过后的文字尾

标记

mx 在某行标记 x

'x 移动到标记为 x 的行

查找和替换

:%s/以下是/\r&/gc

s表示替换;s/a/b 表示把a换为b;上一命令是把“以下是”换为“\r&”,\r表示回车,&表示被替换的部分,即“以下是”;%则表示全文;/gc表示一直替换(不是仅替换第一个),并且要用户确认。 tip:可以按一个a全部替换,不用一次次按y

TIPS小记录

  • 在 Vim 命令行下按 Ctrl+r,然后输入 =@% 便取到了当前文件名。
  • Ctrl+o 跳到 jumplist 中的上一个。
  • 浏览 Vim help 文档时,按 Ctrl+] 可以跳到相应的帮助文档。
  • Vim 中,当光标在网址下时,按 gx 可调用系统默认浏览器打开。
  • 普通用户保存无权限的问题::w !sudo tee %

:copy 命令

几个 copy 命令的例子,也可以用 :t 代替。

  • :t. 会复制当前行到当前行下。
  • :5t. 会复制第5行到光标所在行下。
  • :5t 会复制当前行到第5行下。
  • :-1t. 会复制当前行往上数第1行到当前行下。
  • :2,5t. 会复制第2行至第5行到当前行下。

类似的还有删除和移动,分别为 :d:m

习惯是怎样养成的

noremap h <NOP>
noremap j <NOP>
noremap k <NOP>
noremap l <NOP>

更新 help

:Helptags

Vim 实用技巧

  • 把撤销单元切成块,i<Esc> 是一次修改,即是一次撤销粒度。
  • 构造可重复的修改可以让 . 命令发挥威力,对比 dbx bdw daw 之后使用 . 的情况。
  • vim -u None -N 不加载 vimrc,-N 即 nocompatible,防止进入 vi 兼容模式,-u 后可跟自定义 vimrc。
  • <C-a><C-x> 命令分别对数字执行加和减操作,set nrformates= 把数字都当成十进制。
  • 在插入模式中按 <C-o> 进入插入-普通模式,例子 <C-o>zz
  • <C-r>{register} 在插入模式粘贴文本,<C-r><C-p>{register} 更加好些。<C-r>= 进入表达式寄存器。小数点可以 <C-r>=9.0 / 2
  • nnoremap 和 normal。
  • Vim 的自动位置标记:
    位置标记 跳转到
    `` 当前文件中上次跳转动作之前的位置
    `. 上次修改的地方
    `^ 上次插入的地方
    `[ 上次修改或复制的起始位置
    `] 上次修改或复制的结束位置
    `< 上次高亮选取的起始位置
    `> 上次高亮选取的结束位置
  • 用搜索高亮关键字后,使用 :substitute 可以省略替换者,如 :%s//new/g
  • 命令模式下使用 <C-r><C-w> 获取光标下单词。
  • /\v 进入 very magic 模式。