vim 寄存器

前言

从2020年的vim笔记中摘选出来单独做内容的说明;

理解 vim 寄存器

在以前的笔记中只提到一点点,这里多做一些说明。 vim 不使用单一的剪贴板进行剪切、复制与粘贴操作,而是为这些操作提供了多组寄存器。当使用删除、复制与粘贴命令时,可以明确指定某一个进行操作. vim 的删除、复制与粘贴命令都会用到众多寄存器中的某一个。可以通过给命令加”{register} 前缀的方式指定要用的寄存器。若不指明,vim 将缺省使用无名寄存器。

看一些引用寄存器的例子,如果想把当前单词复制到寄存器 a 中,可执行”ayiw”,或者,可以用”bdd”,把当前整行文本剪切至寄存器 b 中。在此之后,既可以输入”ap” 粘贴来自寄存器 a 的单词,也可使用”bp”命令粘贴来自寄存器 b 的一整行文本,两者互不干扰.

复制专用寄存器(“)

当使用 y{motion}命令时,要复制的文本不仅会被拷贝到无名寄存器中,而且也被拷贝到了复制专用寄存器中,后者可用数字 0 加以引用。 复制专用寄存器,顾名思义,仅当使用 y{motion}命令时才会被赋值。换句话讲,使用 x、s、c{ motion}以及 d motion}命令均不会覆盖该寄存器。如果复制了些文本,可以确信该文本会一直保存于寄存器 0 中,直到复制其他文本时才会被覆盖。复制专用寄存器是稳定的,而无名寄存器是易变的.

有名寄存器(“a-“z)

vim 提供了组以 26 个英文字母,命名的有名寄存器。这意味着我们可以剪切(“ad{motion})、复制(“ay{motion})或者粘贴(“ap)多达 26 段文本。 用小写字母引用有名寄存器,会覆盖该寄存器的原有内容,而换用大写字母的话,则会将新内容添加到该寄存器的原有内容之后。

系统剪贴板(“+)与选择专用寄存器(“*)

当然,这个在windows/Linux里用的是比较多的,在mac上直接cmd+v就好了,没那么费事。如果想从 vim 复制文本到外部程序(反之亦然),则必须使用系统剪贴板. 如果在外部程序中用剪切或复制命令获取了文本,就可以通过”+p 命令(或在插入模式下用ctrl-r +)将其粘贴到 vim 内部。相反地,如果在 vim 的复制或删除命令之前加入相应的文本将被捕获至系统剪贴板。

表达式寄存器(“=)

vim 的寄存器通常被认为是保存一段文本的容器。然而,通过=号引用的表达式寄存器却是个例外。当从表达式寄存器获取内容时,vim 将跳到命令行模式,并显示提示符“=”。这时,我们可以输入一段 vim 脚本表达式并按Enter执行,如果返回的是字符串(或者可被强制转换成字符串的数据), vim 将会使用它。

参考

[1] Vim 7.2
[2] Practice Vim
[3] 感受Vim的强大:进阶技巧

CMakeLists Eigen FCPX GNU Gazebo Git Interest KDL Life Linux Matrix ODE ROS Ros UML Ubuntu VcXsrv algorithm algorithms axis-angle bode calibration chrome control cpp data_struct dots figure gdb latex launch life linux mac math matlab memory motor moveit operator optimal algorithm python robot robotics ros ros2 rtb simulation stl thread tools twist urdf velocity vim web work wsl
知识共享许可协议