【问题标题】:How to select multiple lines until a determinate character?如何选择多行直到一个确定的字符?
【发布时间】:2013-12-07 13:55:47
【问题描述】:

我想选择多行直到一个确定的字符,如下图所示,此示例的特殊字符是=

我尝试过使用 vim ctrl+v/ 但不起作用。这是示例:

global Tint=spettro.readlines()[3].split(",")[1]
global Average=spettro.readlines()[4].split(",")[1]
global Sensor_Mode=spettro.readlines()[6].split(",")[1]
global Case_Temperature=spettro.readlines()[7].split(",")[1]
global Sensor_Temperature=spettro.readlines()[8].split(",")[1]

【问题讨论】:

  • 为什么这个标签是emacs?你也想要一个解决方案吗?
  • @GregHendershott 我只是想要一个解决我的问题的方法,我可以同时使用这两个编辑器,所以如果在 emacs 中更容易,我可以使用它...

标签: vim emacs editor


【解决方案1】:

你不能在 Vim 中。有逐块视觉选择(通过<C-V>),但这仅限于矩形块,期望选择(使用$)到所有结束覆盖的线条,可能出现“锯齿状右边缘”。

由于选择本身没有什么价值,您可能想用它一些事情。还有其他选择,例如:substitute:global 命令的模式最多选择第一个 =: /^[^=]*/

要拉出文本,我会使用它(也有不同的方法;请注意,您需要调整 getline() 内的范围):

:let @@ = join(map(getline(1, '$'), 'matchstr(v:val,"^[^=]*")'), "\n")

【讨论】:

  • 感谢您的回答,但我尝试了您的代码,但它不起作用,您能否解释一下如何将代码从 global 复制到 =。非常感谢!
  • 我只是给出了提示,没有工作示例,但现在我添加了一种拉取方法。
【解决方案2】:

试试vim-multiple-cursors 插件。

然后,在这三行中进行选择:

  • /=<cr> 转到第一个'='
  • <c-n>开启多游标模式
  • <c-n>新建游标并跳转到第二个'='
  • <c-n>新建游标并跳转到第三个'='
  • ho0 选择“=”之前的所有内容

删除和更改选择似乎工作正常。我也不知道能不能拉。

【讨论】:

    【解决方案3】:

    https://github.com/magnars/multiple-cursors.el

    我玩的不多,但它可能可以做你想做的事。看视频。

    您可能可以通过正则表达式替换(也可能是键盘宏)来实现您的最终目标,但您还没有说明最终目标是什么。通常最好询问如何将一段代码更改为另一段代码,而不是假设某种技术(例如多项选择)。

    【讨论】:

      猜你喜欢
      • 2023-02-06
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多