首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多行上抽取文本对象的Vim方法

在多行上抽取文本对象的Vim方法
EN

Stack Overflow用户
提问于 2016-12-14 18:13:15
回答 4查看 785关注 0票数 3

如果我有

代码语言:javascript
复制
- '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...等输入到系统寄存器中(假设)

P.S.已经尝试过vim -多游标,但是插件小马车 (而不是vim方式)不允许复制粘贴,如果其中一个退出多个游标模式。

https://ru.stackoverflow.com/questions/603697/%D0%9A%D0%B0%D0%BA-%D1%81%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82-%D0%BD%D0%B0-%D0%BC%D0%BD%D0%BE%D0%B3%D0%B8%D1%85-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0%D1%85-%D0%B2-vim#603724

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-12-15 10:16:38

我的ExtractMatches插件 (除其他外)有一个:YankMatches命令。它的工作原理类似于内置的:substitute

代码语言:javascript
复制
:YankMatches!/'\zs[^']\+\ze'/+

默认情况下,该命令将元素分隔为换行符;如果希望将元素分隔为空格,请使用以下变化:

代码语言:javascript
复制
:YankMatches!/'\zs[^']\+\ze'/& /+
票数 1
EN

Stack Overflow用户

发布于 2016-12-14 21:37:31

一种方法

代码语言:javascript
复制
:%norm f'"Zya'

会把'autoindent' 'autoread' 'backspace' 'backupdir' 'complete' 'directory'放到寄存器z中。

要使它在Vim之外可用,您可以这样做:

代码语言:javascript
复制
:let @+ = @z

另一个结果相同,但要复杂得多(只是为了好玩)。

代码语言:javascript
复制
/'\w\{-}' <CR>
"Zca'
<C-r><C-o>"<Esc>
n.n.n.n.n.

奖金

清除命名寄存器(这里的寄存器z )的最快方法是:

代码语言:javascript
复制
qzq
票数 6
EN

Stack Overflow用户

发布于 2016-12-14 20:47:52

为了使它发挥作用:

  1. 清空寄存器a:键入

正常模式的qaq

  1. 在命令行中执行: :%s/^- '\(\w\+\)'/\=setreg('A',submatch(1),'V')/n
  2. 所需的输出是在寄存器a中复制的,您可以通过在命令行中输入获得它:

:put A

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41149337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档