如何在vim正常模式下选择所有文本?

5
有没有“仅键盘”方式可以选择整个vim文档,并等价于正常模式下用鼠标左键单击并拖动?请不要将其与在可视模式下选择所有文本(ggVG)混淆。我想能够随后在记事本++中右键粘贴(ggVG/ggVGy后跟记事本++中的右键粘贴不能复制文档)。谢谢

有趣,我想知道那是否可能。 - Bishal
虽然这可能是适合在这里讨论的话题,但您可能想要检查 http://vi.stackexchange.com。 - iled
可能是复制所有行到剪贴板的重复问题。 - mkrieger1
3个回答

5
再次说明,"ggVG"命令和"+y"命令都不能工作(这些在我原始帖子中应该提到的)。也许值得注意的是,我正在Windows本地机器上工作(在那里我有notepad++打开),并在一个Linux虚拟机(slurm集群)上生成vim文件。在这些工作条件下,如果我左键拖动vim文件并在notepad++上右键粘贴,所选的文本会被复制。然而,这个过程对于大文件来说很麻烦,因此我想咨询一下。再次感谢。

当然你应该在开始时就提到这点,因为这不是一些无意义的细节。

在终端手动选择只能选择当前在视口中显示的文本,这显然对于大文件来说是很麻烦的。唯一实用的方法是在远程机器上启用X转发,并在远程机器上构建针对X库的Vim。这将给你你想要的:共享剪贴板。

如果你不能或不想在远程机器上安装必要的东西,那么你将无法以实用的方式达成目标。

作为一种轻量级的替代方案,你可以简单地使用scp将远程文件复制到本地机器上。


谢谢提供的信息。我没有权限在远程机器上执行必要的安装,所以只能使用PuTTY scp。 - gobot6

3
只需使用 (esc) :%y+。这将复制整个文档到剪贴板。然后,您可以转到notepad++或其他任何想要使用的应用程序,并通过右键单击粘贴。
解释:
%:告诉vim下一个命令将应用于所有行。
y:对所有'yank'行
+:将所有行复制到剪贴板,您也可以使用Ctrl + C。注意:+有时绑定为*。有时两者是等效的。
或者您也可以使用稍长的方式:ggVG+
如果您真的想要花哨一点,可以通过将此行添加到您的.vimrc来重新映射Ctrl + A到ggVG%ymap <C-a> <esc>ggVG<CR>

再次说明,“ggVG”命令和“+y”命令都无法使用(这是我在原帖中应该提到的)。也许值得注意的是,我正在Windows本地机器上工作(在那里我打开了notepad ++),并在Linux虚拟机(slurm集群)上生成vim文件。在这些工作条件下,如果我左键拖动vim文档并右键粘贴到notepad ++中,则所选文本将被复制。但是,对于大文件来说,这个过程很繁琐,因此我进行了查询。再次感谢。 - gobot6
我可以使用PuTTY将vim文件传输到我的本地机器,但我希望有更简单的方法。 - gobot6
如果复制和粘贴可行,您可以尝试使用 gg,然后按下 v 键,最后按下 g 键。然后只需复制和粘贴即可。如果这有效,请告诉我,我会更新我的答案。希望能帮到您! - zoecarver

0
尝试使用 Xshell 远程登录软件。其中有一个名为“到文本编辑器”的选项。
只需使用“vi 文件名.c”打开文件,然后在工作区域上进行左键单击并选择“到文本编辑器 ->全部”。 然后这些所有文本都移动到记事本文件中,然后您可以简单地复制并粘贴到 notepad++ 中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接