如何在复制时清除Vim中的行号?
我将一个文件的一部分代码复制到vim中的另一个部分,我发现每行都有行号,格式不见了,如何设置正确的格式为原点?
喜欢这个:
40 root /opt/release/current/public; 67 41 passenger_enabled on; 68 42
如果你有行号,我很确定你没有使用Vim的yank / put操作(它们不会复制linen linen,foldcolumn,icons等),因为在编辑缓冲区方面,它们不存在。
我的猜测是你正在使用terminal模拟器,并使用鼠标将东西复制到剪贴板,这可能会select屏幕的“无关”空间(包括最后的虚拟空间,行号,折叠标记等)
你可能有运气设置
:se mouse+=a
以便像你期望的那样获得鼠标的行为。 否则,用V <movement>...
y ( y
代表yank
,对应于'copy')进行select。
然后在目的地使用p (放在光标处)或P (放在光标前面)
让我知道如果有帮助,或者你需要更多的信息
在Esc模式下,键入:se nonu
这是删除行号最简单的方法,您将能够复制文本没有行号。
如果有人想要一个更快的方法(在Linux上),我已经注意到,在vim中,你可以按住Ctrl并拖动你想要复制的区域,你将避免行号并select你想要的部分。
步骤 :
- ctrl和拖动区域
- 释放ctrl
- 复制(键盘快捷键或右键单击)
看看有时设置为F11的pastetoggle选项。
作为一种替代方法,你总是可以将要复制的部分写入临时文件( ma
,goto end line,然后使用:'a,.w tempfile
),然后将其读入第二个文件。
为了进一步的调查,你可能想看看autoindent选项。
所有以前input的解决scheme都非常好。 但是,有时你在远程服务器上使用vim(所以你不能使用"+y
复制到你的剪贴板)。通常terminal支持复制粘贴操作。
我使用vim输出视觉select到一个新的shell,我可以使用terminalfunction复制文本:
:'<,'>w ! bash -c cat
然后我可以很容易地复制输出。
在vim中粘贴的模式相同:
:r ! bash -c cat
然后我粘贴并使用Ctrl + d将EOF发送给猫。 这种方法也避免了重新粘贴你粘贴的文本(注意:你可以使用:set pi!
来禁止自动缩进)。
一个永久的解决scheme是将下面的代码添加到位于主目录中的.vimrc
文件的末尾。
se mouse+=a
通过添加这个,你将能够只select文本,而不是行号,如下图所示:
如果你的主目录没有得到你的.vimrc
文件(我遇到这个问题),在vi编辑器中input命令:scriptnames
,它会显示你的.vimrc
文件的位置。 参考
我将下面的命令映射到一个键。
它删除复制行号周围的空白。
它忽略了行文本和任何后面的空白行。
:1,$s/^\s*[0-9]\+\s//\|1,$s/^\s*[0-9]\+\n/\r/<cr>
在Windows VIM GUI上:: :set nu
,然后按住Ctrl – Shift同时用鼠标突出显示所需的文本。 这将行号插入缓冲区。