[实践OK]vim diff寄存器使用 Vim 寄存器实现vimdiff多个文件的粘贴,防止dd命令后影响粘贴的内容为删除行的内容的方法。

jackxiang 2019-5-27 14:57 | |
我先把光标停留在第一行上,按下yy命令,将第一行复制,然后再移到第二行,按下dd命令,删除第二行。此时如果我们想要粘贴第一行的内容的话,直接按p是不行的,因为此时的p将引用无名寄存器中的内容,而它的内容已经被第二行的内容给覆盖了,所以此时就轮到复制专用寄存器大显身手了,此时如果按下这个命令:
"0p
这时,将会粘贴复制专用寄存器中的内容。这里直接贴结果图可能看不出什么效果,那我就贴一下用dd删除了第二行后所有寄存器的内容给大家看看吧:
  l  ""   ddline^J     当前寄存器是",里存的是删除的内容。
  l  "0   yyline^J     0 是复制专用寄存器

从这里可以看出,无名寄存器保存的是dd命令删除的内容,而复制专用寄存器(0)保存的是y命令复制的内容。
"0p 就能打印出yyline,而直接p就会打印删的内容ddline。




vimdiff 的优势在于能同时查看各个文件的差别,而:
vimdiff *   则对整个目录的文件进行比对,如果复制:
yy 后再control+w(w按两次)跳到另一个文件里按p粘贴上去,
发现原来那行不需要了,于是得dd删掉,而此时再通过control+w(w按两次)到第仨文件,再按p时,则是粘贴的内容是刚删的那行内容,怎么办?



用寄存器:
a-z26个命名寄存器中的a即可,如下:
可以用"{register}y来拷贝到{register}中, 用"{register}p来粘贴{register}中的内容。

实践:
"ayy可以拷贝当前行到寄存器a中,而"ap则可以粘贴寄存器a中的内容。   #是单引号ayy ,单引号ap进行粘贴,少引单引号不行。

结论:合理地使用可以极大地提高效率。


===========================================================================
"+p可以粘贴剪切板的内容,
":p可以粘贴上一个Vim命令(比如你刚刚费力拼写的正则表达式),
"/p可以粘贴上一次搜索关键词(你猜的没错,正是normal模式下的/foo搜索命令)。
在Vim中可通过:reg来查看每个寄存器当前的值。


来自:https://harttle.land/2016/07/25/vim-registers.html


"+p 是用来粘贴剪贴板的内容,而不是将其放入寄存器中。在 Vim 中,要将剪贴板的内容放入寄存器中,你可以使用以下步骤:
进入命令行模式,按下 : 键。
输入以下命令,将剪贴板的内容放入指定寄存器(假设你想将内容放入 a 寄存器):

:let @a = @+
这将会将剪贴板内容复制到寄存器 a 中。

按下 Enter 键,剪贴板的内容就会被放入寄存器中。
现在,你可以在替换命令中使用寄存器 a,使用 :%s#\V原内容#\=@a#g 来进行替换。这里的 \=@a 表示使用寄存器 a 中的内容作为替换文本。
再次对之前的混淆回答表示歉意,希望这次的回答能够解决你的疑问。



如何查看寄存器 a 中的值?
要查看寄存器 `a` 中的值,你可以在 Normal 模式下使用以下命令:

```
:echo @a
```
在 Normal 模式下,按下 `:` 进入命令行模式,然后输入上述命令。按下 `Enter` 后,Vim 将会在状态栏显示寄存器 `a` 中的内容。
这将会显示寄存器 `a` 中的文本内容,以便你查看和确认寄存器中的值。

vim如何打开状态栏?
Mac:Contrl + g
两行状态栏: :set laststatus=2

在 Vim 中,状态栏通常是默认显示的,它位于编辑器底部,用于显示各种状态信息、命令的输出以及其他相关信息。如果你的状态栏没有被关闭,它应该是默认显示的。
如果你误操作关闭了状态栏,你可以通过以下方法重新打开:
如果你在 Normal 模式下,只需按下 Ctrl + g。这将会在底部显示一个短暂的信息栏,其中包含当前的文件名、行号等信息,它通常会自动消失。
如果你想恢复完整的状态栏,可以在 Normal 模式下执行以下命令:
:set laststatus=2
这会将状态栏恢复为显示,同时在状态栏中显示更多信息。
请注意,状态栏的显示取决于你的 Vim 配置以及正在使用的主题等因素,有些情况下可能会稍有不同。

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/10207/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2023-9-1 14:54
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]