如何在 vi 中复制一行并将其粘贴到控制台?

如何在 vi 中复制一行并将其粘贴到控制台?

有一个包含 bash 命令的文本文件。

有没有办法使用 vi 从该文件复制一行并将其粘贴到控制台?它也可能是 nano。

这是仅控制台服务器安装。没有鼠标。

答案1

GPM,“通用鼠标”在控制台中提供鼠标功能,最有用的可能是剪切和粘贴。

从手册页中:

此软件包旨在成为运行在 Linux 控制台上的应用程序的有用鼠标服务器。它基于“selection”软件包,其部分代码来自selection本身。此软件包旨在替代“selection”作为剪切粘贴机制;它还提供其他功能。

“特殊命令”部分概述了其他功能

sudo apt-get install gpm

一般来说它开箱即可工作,至少我不需要手动配置它。

但关于如何配置它的一个很好的概述请参见http://www.cyberciti.biz/tips/howto-linux-configure-the-mouse-at-a-text-based-terminal-for-copy-and-paste-operation.html

或手册页

http://manpages.ubuntu.com/manpages/vivid/man8/gpm.8.html

答案2

在 bash 中,可以编辑当前的在编辑器中按 命令CtrlxCtrle

所以:

  1. 从新提示开始,按CtrlxCtrle。这将打开一个新的空白编辑器,最好是 Vim(我相信编辑器由VISUALEDITOR变量决定)。
  2. 在新选项卡或拆分中打开包含命令的文件。
  3. 将相关命令复制到原始缓冲区(可能命名为类似的bash-fc-xxxxxxxx)。
  4. 保存并退出。瞧!

答案3

vi一个可视模式,可让您直观地选择文本。您可以按 进入此模式v。进入此模式后,您可以使用箭头键选择要复制和粘贴的文本。然后使用y复制,p使用 粘贴(到您想要的位置),最后您可以使用 d 剪切文本(或删除它)。

你可以得到一个支持 X 的特殊版本vim,因此允许访问系统剪贴板。但是,为了避免让它们大量存在(因为默认版本没有这些扩展功能),最好从源代码编译,如下所示这个人建议。因此,要执行此操作,请先确保您已mercurial安装,如果尚未安装,则安装它:

sudo apt-get install mercurial

一旦确定已安装,请获取以下编译依赖项vim

sudo apt-get build-dep vim

然后使用以下命令获取源代码:

hg clone https://vim.googlecode.com/hg/ vim_source

最后我们需要编译它:

cd vim_source
./configure \
    --enable-perlinterp=dynamic \
    --enable-pythoninterp=dynamic \
    --enable-rubyinterp=dynamic \
    --enable-cscope \
    --enable-gui=auto \
    --enable-gtk2-check \
    --enable-gnome-check \
    --with-features=huge \
    --with-x \
    --with-compiledby="Your Name <[email protected]>" \
    --with-python-config-dir=/usr/lib/python2.7/config
make && sudo make install

请注意:这将在 中安装它/usr/local,因此您需要确保它PATH之前在您的系统中/usr,以便使用它来代替默认的 Ubuntu 版本。

然后你应该能够使用以下命令:

"+y

复制到系统剪贴板。并且:

"+p

从中粘贴。

答案4

我不知道 Linux 控制台中是否有全局缓冲区。

我找到了一个解决方法。可以在 vi 或 nano 中复制和粘贴。

如果需要执行某个命令、命令的一部分或修改后的命令,我会将其复制到文件末尾,然后关闭编辑器并运行

tail -1 file.txt | bash

文件中的某些行可以通过

sed -n <line_number> file.txt | bash

或者

grep <pattern> file.txt | bash

但这并没有完全回答我的问题。这只是一种解决方法。

相关内容