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

时间:2011-04-20 09:35:55

标签: linux vim

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

像这样:

            40         root /opt/release/current/public;
 67             41         passenger_enabled on;
 68              42 

11 个答案:

答案 0 :(得分:74)

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

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

你可能有运气设置

:se mouse+=a

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

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

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

答案 1 :(得分:33)

在普通模式下,输入:se nonu

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

答案 2 :(得分:18)

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

<强>步骤

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

答案 3 :(得分:11)

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

se mouse+=a

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

enter image description here

如果您的主目录中没有收到.vimrc文件(我遇到此问题),请在vi编辑器中输入命令:scriptnames,它会显示.vimrc的位置文件。 Reference

答案 4 :(得分:5)

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

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

:'<,'>w ! bash -c cat

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

用于粘贴vim的相同模式:

:r ! bash -c cat

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

答案 5 :(得分:4)

看看有时设置为F11的pastetoggle选项。

作为替代方案,您始终可以将要复制的部分写入临时文件 (ma,转到结束行然后使用:'a,.w tempfile)然后将其读入第二个文件。

如需进一步调查,您可能需要查看autoindent选项。

答案 6 :(得分:1)

在Windows VIM GUI上::set nu然后按住 Ctrl - Shift 用鼠标突出显示所需的文本。这会拉线数 进入缓冲区。

答案 7 :(得分:0)

我将以下命令映射到一个键 它会删除复制的行号周围的空白 它忽略了行文本和后面的任何空白行。

:1,$s/^\s*[0-9]\+\s//\|1,$s/^\s*[0-9]\+\n/\r/<cr>

答案 8 :(得分:0)

您还可以考虑使用sedpbcopy将行复制到剪贴板,在此处您可以粘贴到vim之外的其他终端或应用程序。

sed -n <line start #>,<line end #>p <file name> | pbcopy

答案 9 :(得分:0)

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

答案 10 :(得分:0)

在使用Putty的Windows上,我注意到在vim中,您可以按住ALT键并在要复制的区域上拖动,这样可以避免行号并选择想要的部分。

步骤

  1. 按住ALT键
  2. 拖动到区域
  3. 发布ALT
  4. 使用CTRL + Shift + C进行复制(如果已打开,则单击鼠标右键)

变化:

根据您的特定设置,特定密钥可能会有所不同。 如果ALT不起作用,请改用以下键:

  1. CTRL
  2. CTRL + Shift
  3. ALT + Shift

注意:

如果有人知道其他适用于他们的按键组合,请告诉我,我将与他们一起更新此答案。