假设有文字
- 'autoindent' is set by default
- 'autoread' is set by default
- 'backspace' defaults to "indent,eol,start"
- 'backupdir' defaults to .,~/.local/share/nvim/backup (|xdg|)
- 'complete' doesn't include "i"
- 'directory' defaults to ~/.local/share/nvim/swap// (|xdg|), auto-created
如何复制等到autoindent autoread backspace...系统寄存器?
附言 尝试过 vim-multiple-cursors,但这个插件有问题,只有在不退出多光标模式时才允许复制粘贴
复制多行
Vy缓冲区中的文本。您可以使用插入
P。复制并粘贴矩形块
Ctrl-v(在 Windows 上Ctrl-q)。y缓冲区中的文本。有两个插入选项:
P。:put。将多次出现的与正则表达式匹配的文本复制到一个缓冲区中
如果需要复制不是矩形的东西,可以通过正则表达式使用 copy to case。
qaq- 清除寄存器“a”。:%s/\v^- '([^']*)'/\=setreg('A', submatch(1), 'V')/n(对于您的具体情况,这里会发生什么 - 请参阅下面的解释)。“a”情况下的文本。您可以使用插入
P。在您的情况下,结果如下:定期发生的事情:
setreg()withsubmatch(1)获取括号中出现的值并将其添加到大小写“a”(注意大小写是大写的,以便添加文本,而不是替换现有文本)。更多选择在这里。
手动将部分文本键入缓冲区
如果无法使用正则表达式收集文本,您可以手动将其输入缓冲区:
qaq- 清除寄存器“a”。vi',这样的命令字面意思是“选择单引号内的单词”。"Ay- 将选定的文本复制到“a”寄存器,添加到缓冲区,而不是覆盖它。缓冲区中的文本。您可以使用插入
P。不同方法的组合
实际上,如果您在每次新搜索之前不键入
qaq,则不会清除寄存器。您可以先手动将数据输入其中,然后使用常规程序,然后以某种方式,然后再次手动输入,等等。条件“获取第一和第二引号之间的文本”很容易用程序完成
cut:更长的路
在vim中,您可以使用以下构造将当前选定的行传递给外部程序(我们将使用它
cut):即,通过按 转到它V,然后在vim!命令行中按 和 ,在可视模式下选择您需要的行- 您会得到以下文本:
在它之后,输入一个外部命令,使它看起来像这样:
按
enter,而不是所有选定的行,您只会得到第一引号和第二引号之间的单词:按gv重复选择相同范围的行,然后y将它们保存在寄存器中(默认情况下,在未命名的情况下
")。要返回之后各行的原始内容,请按u。
如果您需要处理的不是一系列行,而是文件的所有行,那么整个过程会稍微短一些。运行命令:
然后将所有结果行复制到寄存器(默认情况下,到未命名的):
然后按 返回原始行u。
更短的路
cut使用函数调用程序system(),将未命名寄存器 (@") 的内容传递给它,并将其输出写回同一寄存器:程序参数中的引号
cut必须反斜杠。当然,您可以使用任何其他寄存器。保存字符串以注册
a: "ay.a在命令行上注册寻址:(@a而不是@")。从寄存器插入a:"ap。决定改用 Vintageous。我的配置在这里
还连接了 MarkAndMove、AceJump 和 Surround。
只需看一下 MarkAndMove 是什么并欣赏它的潜力。它比 vim 好得多