有没有办法让v $ y不在Mac和Linux上复制Vim中的换行符?

Bri*_*van 13 vim

我以前使用的是Windows版本的Vim,但我是MacVim的新手.在MacVim中,当我切换到可视模式时,使用$ motion(从光标突出显示到行尾),然后猛拉,当我粘贴复制的内容时,它包含回车符,在粘贴点之后碰到所有内容到一个新的路线.

这种行为对我来说似乎不熟悉(更不用说烦人了).是否有任何方法可以更改此行为以匹配Windows版本,其中换行符不包括在yank中?

zig*_*don 19

只是复制文本直到行尾不合适? y$将只从当前光标复制到行尾,没有换行符.


che*_*hes 14

无论配置Windows行为如何,都有一个鲜为人知的动作可以满足这种需求,并且在其他环境中通常很有用:g_.Quoth :help g_:

g_          To the last non-blank character of the line and
            [count - 1] lines downward |inclusive|. {not in Vi}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我不倾向于使用它来进行yanking,因为我避免了额外的视觉模式击键和使用y$(不像@zigdon建议的那样复制换行符).或者更好的是,nnoremap Y y$Y有工作的持续CD.

然而,我经常使用g_surround.vim,其中添加环绕声的映射通常比使用视觉选择更难记住.例如,如果你想选择直到行的末尾并用parens包围,那就ys$)不错了,但我倾向于忘记ys助记符.v$S)看起来很自然,但问题与你的问题相同:它包括换行符,添加环绕声时总是一团糟.vg_S)正是你通常想要的.

在视觉上做这件事的一个好处是你可以纠正中期选择:我仍然倾向于v$大量的肌肉记忆,但如果你看到你在行动之前已经超调,你仍然可以击中g_并修复选择.


小智 5

你可以试试杜。实际上,它完全可以满足您的需求,并且如果您打算在原始编辑中使用它,它对手指更加友好。


Bri*_*van 3

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