代码之家  ›  专栏  ›  技术社区  ›  Brian Sullivan

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

vim
  •  12
  • Brian Sullivan  · 技术社区  · 14 年前

    我以前用过windows版本的vim,但是 麦克维姆新来的。在MacVim中,当我切换到视觉模式时,使用$ 运动(从光标突出显示到行尾),然后猛拉, 当我粘贴复制的内容时,它包括回车, 粘贴后的所有内容都将指向新的行。

    这种行为对我来说似乎不熟悉(更不用说烦人)。有没有办法改变这种行为来匹配Windows版本,在Yank中新行不包括在内?

    4 回复  |  直到 10 年前
        1
  •  18
  •   zigdon    14 年前

    只是复制文本到行尾不合适吗? y$ 将只从当前光标复制到行尾,而不使用换行符。

        2
  •  14
  •   ches jericevans    10 年前

    有一个鲜为人知的运动可以满足这一需求,而不必考虑配置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$ 以便 Y C D .

    不过我经常用 Gy 在surround.vim中,添加环绕的映射通常比使用可视化选择更难记住。例如,如果您想选择到行尾并用parens包围,它将是 ys$) 这还不错,但我往往会忘记 ys 助记法。 v$S) 看起来很自然,但问题和你的问题是一样的:它包括了换行符,当添加包围圈时,这是一个完全混乱的问题。 vg_S) 正是你通常想要的。

    视觉上做它的一个好处是你可以纠正中间选择:我仍然倾向于点击 v$ 因为肌肉记忆力很强,但如果你在表演前看到你已经过了头,你仍然可以打 Gy 并修复选择。

        3
  •  4
  •   diulin    14 年前

    你可以试试杜。有效地说,它完全按照你想要的来做,如果你打算在原始编辑中使用它,它会更容易被人指认。

        4
  •  3
  •   Brian Sullivan    14 年前

    我发现导致我习惯看到的行为的选择是 behave mswin ,我认为在gvim for windows中默认为打开。