如何选择多行直到一个确定的字符?

时间:2013-12-07 13:55:48

标签: vim emacs editor

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

enter image description here

我尝试使用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]

3 个答案:

答案 0 :(得分:2)

你不能在Vim。有块状视觉选择(通过<C-V>),但这仅限于矩形块,期望进行选择(使用$ )到达所有被覆线的末端,其中有一个&#34;锯齿状的右边缘&#34;是可能的。

由于选择本身没什么价值,你可能想要一些东西。有替代品,例如:substitute:global个命令,其模式可选择最后一个=/^[^=]*/

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

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

答案 1 :(得分:1)

试用vim-multiple-cursors插件。

然后,在这三行中选择:

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

删除和更改选择似乎工作正常。我不知道是否也可以做到。

答案 2 :(得分:1)

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

我没有玩过多少,但它可能会做你想要的。看视频。

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