2010-09-20 16 views
12

我以前使用过Vim的Windows版本,但是对于MacVim来说我是新的 。在MacVim中,当我切换到可视模式时,使用$ 动作(从光标到行尾突出显示),然后抽出, 当我粘贴复制的内容时,它包含回车符, 粘贴点到新的一行。

这种行为似乎对我来说并不陌生(更不用说烦人)。有没有办法改变这种行为来匹配Windows版本,其中换行符不包含在Yank中?

回答

3

我发现导致我习惯看到的行为的选项是behave mswin,我相信在GVim for Windows中默认使用该选项。

18

刚刚复制文字直到行尾不合适? y$只会从当前游标复制到行尾,而不是换行符。

+0

这会工作,没有想到这一点,谢谢!不过,我很好奇,为什么不同版本的Vim有不同的表现。 – 2010-09-20 21:27:18

+0

对vim在windows上没有做太多的工作,我无法告诉你:) – zigdon 2010-09-20 21:43:43

+0

实际上,在我的WinXP上安装Vim7.2时,'vy $'也会导致换行,所以MacVim的行为是正确的。 – 2010-09-20 22:53:23

4

您可以试试Du。有效地,它确实是你想要的,如果你打算在原始编辑中使用它,它会更亲近手指。

+0

非常狡猾!我喜欢! – Juto 2017-01-22 23:35:16

14

有一个鲜为人知的动作可以满足这种需求,无论配置Windows行为如何,通常在其他情况下都可以使用:g_。答曰:help g_

g_   To the last non-blank character of the line and 
      [count - 1] lines downward |inclusive|. {not in Vi} 

我个人不倾向于因为我避免了额外的视觉模式按键就能用这个唬弄和使用y$(不复制换行符,作为@zigdon建议)。或者更好的是,nnoremap Y y$以便YCD一致地工作。

但是,我经常使用g_与surround.vim,其中添加环绕的映射通常比使用视觉选择难以记住。例如,如果你想选择直到行尾并用parens环绕,那将是ys$),这并不坏,但我倾向于忘记ys助记符。 v$S)似乎很自然,但与你的问题有同样的问题:它包括换行符,并且在添加环绕声时这是一团糟。 vg_S)正是你通常想要的。

约直观这样做的一个好处是,你可以纠正中间选择:我仍然倾向于通过肌肉记忆击中v$了很多,但如果你看到你已经在采取行动前冲出,你仍然可以打g_和修复选择。

相关问题