首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Vim中的标记选择

Vim中的标记选择
EN

Stack Overflow用户
提问于 2015-07-08 14:57:13
回答 3查看 109关注 0票数 2

我有时会梦见Vim中有一个标记选择功能,就像您键入:

代码语言:javascript
复制
ma

在正常模式下,您可以从任何地方点击:

代码语言:javascript
复制
`a

回到这个地方a。我希望有这样的东西:

代码语言:javascript
复制
ma

在视觉模式下。这将节省您的视觉选择区域。然后你就可以在正常模式的任何地方输入:

代码语言:javascript
复制
<someHeader>a

若要与此a选择一起返回可视模式,请执行以下操作。

在Vim里有这样的特征吗?或者是一个看起来像的分机?还是一种简单的方法来实现它?

EN

Stack Overflow用户

发布于 2015-07-08 20:32:42

我写了这封信,我相信这是你想要的:

代码语言:javascript
复制
function! VisualMark()
  call inputsave()
  let registers = input("m")
  call inputrestore()
  exec "normal! `<m" . registers[0]
  exec "normal! `>m" . registers[1]
endfun

function! GetVisualMark()
  call inputsave()
  let registers = input("`")
  call inputrestore()
  exec "normal! `" . registers[0]
  if strlen(registers) > 1
    exec "normal! v`" . registers[1]
  endif
endfun

vnoremap m <esc>:call VisualMark()<cr>
nnoremap ` :call GetVisualMark()<cr>

除视觉模式外,它们的行为方式应与常规标记相同,而且它们都需要两个参数。

首先,要保存一个视觉选择的区域,在可视模式下选择块,按m键,就像通常情况下一样。它会让你输入更多的文字..。在这里,函数需要两个字符,这两个寄存器将开始标记和结束标记保存到.例如,在视觉模式下输入mab,然后按enter (我想不出一种方法使它在没有enter的情况下工作),会在寄存器a中为块的开头创建一个标记,而b将是块的结束。

若要在视觉上重新选择块,请进入可视模式并执行与常规标记相同的`.这也需要两个字符

编辑

在我看来,我已使执行工作更好。在我使用它之前,为了返回视觉选择的块,您必须处于可视模式,然后单击回勾(与正常标记相同的按钮)按钮,然后是2个寄存器。现在你用正常的方式..。这意味着默认使用回勾符现在使用此函数,但该函数现在检查提供了多少寄存器.所以,如果你只使用一个寄存器,它只会带你回到那个。如果你提供2个寄存器,那么它会直观地选择它们.如果你提供超过2,它将只使用前2。

尽管如此,在选择中仍然需要输入enter键。无论如何,采用新的实现方式可能会更好。

对于那些想要看到或使用旧实现的人来说,这就是:

代码语言:javascript
复制
function! VisualMark()
  call inputsave()
  let registers = input("m")
  call inputrestore()
  exec "normal! `<m" . registers[0]
  exec "normal! `>m" . registers[1]
endfun

function! GetVisualMark()
  call inputsave()
  let registers = input("`")
  call inputrestore()
  exec "normal! `" . registers[0]
  exec "normal! v`" . registers[1]
endfun

vnoremap m <esc>:call VisualMark()<cr>
vnoremap ` <esc>:call GetVisualMark()<cr>
票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31296394

复制
相关文章

相似问题

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