我将一些代码从一个文件的一个部分复制到vim中的另一个部分,我发现,每行中都有行号,格式不见了,如何设置正确的格式作为原点?
像这样: 40 root /opt/release/current/public;
67 41 passenger_enabled on;
68 42
答案 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并拖动你要复制的区域,你就可以避免行号并选择你的部分想。
<强>步骤强>:
答案 3 :(得分:11)
永久性的解决方案是在主目录中的.vimrc
文件的末尾添加以下代码。
se mouse+=a
通过添加此项,您只能选择文字,而不能选择行号,如下图所示:
如果您的主目录中没有收到.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)
您还可以考虑使用sed
和pbcopy
将行复制到剪贴板,在此处您可以粘贴到vim之外的其他终端或应用程序。
sed -n <line start #>,<line end #>p <file name> | pbcopy
答案 9 :(得分:0)
在Mac上:我发现您可以使用Option + Command选择所需的区域并将其复制粘贴到另一个编辑器中。
答案 10 :(得分:0)
在使用Putty的Windows上,我注意到在vim中,您可以按住ALT键并在要复制的区域上拖动,这样可以避免行号并选择想要的部分。
步骤:
变化:
根据您的特定设置,特定密钥可能会有所不同。 如果ALT不起作用,请改用以下键:
注意:
如果有人知道其他适用于他们的按键组合,请告诉我,我将与他们一起更新此答案。