复制时如何清除Vim中的行号?

why*_*why 63 linux vim

我将一些代码从一个文件的一个部分复制到vim中的另一个部分,我发现,每行都有行号,格式不见了,如何设置正确的格式作为原点?

像这样:

            40         root /opt/release/current/public;
 67             41         passenger_enabled on;
 68              42 
Run Code Online (Sandbox Code Playgroud)

seh*_*ehe 84

如果你有行号,我很确定你没有使用Vim的yank/put操作(这些将永远不会复制亚麻,折叠,图标等)因为在编辑缓冲区方面它们不存在.

我的猜测是你在终端模拟器中工作并使用鼠标将东西复制到剪贴板,这可能会选择屏幕的"无关"空间(包括末尾的虚拟空间,行号,折叠标记等)

你可能有运气设置

:se mouse+=a
Run Code Online (Sandbox Code Playgroud)

为了获得鼠标的行为,就像你期望的那样.否则,使用V<movement>...y(yfor yank,对应于'copy')进行选择

然后在目的地使用p(放在光标处),或P(放在光标前)

如果有帮助或者您需要更多信息,请告诉我

  • yank + paste操作在vim中运行良好但是粘贴到另一个编辑器或远程终端呢? (42认同)
  • 使用Ctrl + Shift +单击选择应该起作用的文本. (4认同)
  • 请记住,`:set mouse+=a` 会让你[剪贴板问题](/sf/ask/322571301/启用)。 (3认同)

San*_*ngh 34

在正常模式下,键入 :se nonu

这是删除行号的最简单方法,您可以复制没有行号的文本.

  • 他的意思是"正常模式".如果您处于插入模式(或任何其他模式),请按"Esc"返回正常模式. (13认同)

sij*_*j_a 24

如果有人想要更快的方式(无论如何在Linux上),我注意到在vim中你可以按住ctrl并拖动你要复制的区域,你将避免行号并选择你想要的部分.

步骤:

  1. ctrl并拖动区域
  2. 释放ctrl
  3. 复制(键盘快捷键或右键单击)

  • 我喜欢这个答案.在Mac上,您保持选项(alt)而不是ctrl.突出显示的区域类似于小写"v"模式下的视觉选择. (2认同)
  • 太棒了! (2认同)

小智 14

在 Mac 上:我发现您可以使用 Option+Command 选择所需区域并将其复制粘贴到另一个编辑器。

  • 你让我今天很开心! (3认同)

San*_*eep 13

对此的永久解决方案是在.vimrc位于主目录中的文件末尾添加以下代码.

se mouse+=a
Run Code Online (Sandbox Code Playgroud)

通过添加此项,您将只能选择文本而不是行号,如下图所示:

在此输入图像描述


如果您没有将.vimrc文件放在主目录中(我遇到此问题),请:scriptnames在vi编辑器中键入命令,它将显示.vimrc文件的位置.参考

  • 在我的Mac上,这使得复制粘贴不再起作用. (4认同)
  • 在Linux Mint上也是@Ilias Karim. (2认同)

Lyn*_*nch 5

以前输入的所有解决方案都非常好.但是,有时您在远程服务器上使用vim(因此无法使用复制到剪贴板"+y).终端通常支持复制粘贴操作.

我使用vim将视觉选择输出到一个新的shell,我可以使用终端功能复制文本:

:'<,'>w ! bash -c cat
Run Code Online (Sandbox Code Playgroud)

然后我可以轻松复制输出.

在vim中粘贴的模式相同:

:r ! bash -c cat
Run Code Online (Sandbox Code Playgroud)

然后我使用Ctrl+ 粘贴并发送EOF到cat d.此方法还可以避免重新输入您粘贴的文本(注意:您可以使用禁用自动缩进:set pi!).