SLES12 vim - 背景更改滚动+复制粘贴问题

Posted

技术标签:

【中文标题】SLES12 vim - 背景更改滚动+复制粘贴问题【英文标题】:SLES12 vim - background changes scrolling + copy paste issues 【发布时间】:2021-02-03 07:47:51 【问题描述】:

我正在使用带有 SLES12 的 gnome-terminal,我遇到了一个问题,在 vim 中显示文件期间我向下滚动,背景颜色正在改变。 在互联网上进行了一些探索,我得到了以下解决方案:

if &term =~ '256color'
    " Disable Background Color Erase (BCE) so that color schemes
    " work properly when Vim is used inside tmux and GNU screen.
    set t_ut=
endif

但使用此解决方案,它会创建一个新解决方案。 当我从 vim 复制粘贴一行并将其粘贴到其他 vim 时,复制也将空白行视为字符,并创建非常长的行。

为了强调,假设我有以下包含 11 个字符的行(包括空格) 复制粘贴还将该行的其余部分(空白部分)视为字符。 我希望复制粘贴在 char 'd '

处停止
hello world

知道如何结合这两个问题的解决方案吗?

【问题讨论】:

【参考方案1】:

这两个问题完全不相关。

当您“从 vim 复制粘贴一行并将其粘贴到其他 vim 上”时,您可能正在使用终端仿真器或系统的复制/粘贴功能,它不知道您认为行的开始位置和结束位置.终端模拟器的窗口是 n 个字符宽,所以一行是 n 个字符,这就是他们所关心的。

更好的方法是使用 Vim 的内置 :help y:help p,它们对线的概念与您相同。

但这会产生第二个问题:默认的 Vim 通常不支持剪贴板,因此您不能真正使用 yy 在一个 Vim 中拉出一行,并使用 p 将其放入另一个 Vim。你必须为此安装一个合适的 Vim:使用你的包管理器。

设置完成后,您可以使用"+y 拉到剪贴板并使用"+p 从剪贴板放入。如果您想将 Vim 的默认寄存器与系统剪贴板同步,请参阅 :help registers 以获取 "+:help 'clipboard'

也就是说,为什么不直接在一个 Vim 实例中打开这两个文件?

【讨论】:

我不同意它不相关的评论。当我不使用我在问题中写的if statement 时,复制粘贴效果很好。我不喜欢使用不同的选项卡/窗口在同一个 vim 上工作(这是一种习惯)。顺便说一句,在 SLES11 中我没有这两个问题。 嗯,你有一个不同版本的 Vim,一个不同版本的终端模拟器,以及 SLES11 中所有东西的不同版本。无论如何,使用 Vim 自己的剪贴板支持是从 Vim 获取副本的正确方法。

以上是关于SLES12 vim - 背景更改滚动+复制粘贴问题的主要内容,如果未能解决你的问题,请参考以下文章

Vim - 在可视模式下复制/粘贴时保留上次复制的文本

vim与系统剪切板之间的复制粘贴

Vim 多行剪切复制和删除

Vim 安装配置及复制粘贴操作

如何将vim里的内容复制粘贴到vim之外的地方

vim 下粘贴复制,如何做到最快