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

时间:2010-09-20 21:22:10

标签: vim

我过去使用的是Windows版本的Vim,但是 MacVim新手。在MacVim中,当我切换到可视模式时,使用$ 动作(从我的光标突出显示到行尾),然后猛拉, 当我粘贴复制的内容时,它包括回车, 在粘贴点下降到新行之后碰撞所有内容。

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

4 个答案:

答案 0 :(得分:18)

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

答案 1 :(得分: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}

就我个人而言,我不倾向于使用它来进行yanking,因为我避免了额外的视觉模式击键并使用y$(不像@zigdon建议的那样复制换行符)。或者更好的是nnoremap Y y$,以便YCD保持一致。

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

视觉上做的一个好处是你可以纠正中期选择:我仍然倾向于通过肌肉记忆击中v$很多,但是如果你看到你在表演之前已经超调,你仍然可以点击g_并修正选择。

答案 2 :(得分:4)

你可以尝试杜。实际上,它可以完全按照您的需要进行操作,如果您打算在原始编辑中使用它,它会更友好。

答案 3 :(得分:3)

我发现引起我以前看到的行为的选项是behave mswin,我认为默认情况下这是GVim for Windows中的。