Как скопировать строку в vi и вставить ее в консоль?

Есть текстовый файл с командами bash.

Есть ли способ скопировать строку из этого файла с помощью vi и вставить ее в консоль? Это может быть и нано.

Это только консольная установка сервера. Нет мыши, чтобы быть ясным.

4 ответа

Решение

GPM, "мышь общего назначения", предоставляет функции мыши в консоли, наиболее полезной, возможно, является вырезание и вставка.

Со страницы руководства:

Этот пакет пытается быть полезным сервером мыши для приложений, работающих на консоли Linux. Он основан на пакете "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

В bash можно редактировать текущую команду в редакторе, нажав CtrlxCtrle.

Так:

  1. Начните с новой подсказки, нажмите CtrlxCtrle. Откроется новый пустой редактор, предпочтительно Vim (я думаю, что редактор решается VISUAL а также EDITOR переменные).
  2. Откройте файл, содержащий команды в новой вкладке или разделить.
  3. Скопируйте соответствующие команды в исходный буфер (возможно, с именем bash-fc-xxxxxxxx).
  4. Сохранить и выйти. И вуаля!

В vi есть визуальный режим, который позволяет визуально выбирать текст. Вы можете войти в этот режим, нажав v. После входа в этот режим вы можете использовать клавиши со стрелками, чтобы выбрать текст, который вы хотите скопировать и вставить. Затем используйте y, чтобы скопировать, p, чтобы вставить (в нужное место), и, наконец, вы можете использовать d, чтобы вырезать текст (или удалить его).

Существует специальная версия vim Вы можете получить, который поддерживает X и, следовательно, разрешает доступ к системному буферу обмена. Но поскольку проще всего не оставлять их в большом количестве (так как версия по умолчанию не имеет этих расширенных возможностей), будет полезно скомпилировать их из исходного кода, как предложил этот человек. Так что для этого сначала убедитесь, что у вас есть 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 <youremail@domain.com>" \
    --with-python-config-dir=/usr/lib/python2.7/config
make && sudo make install

ОБРАТИТЕ ВНИМАНИЕ: Это установит его в /usr/localтак что вы должны быть уверены, что это в вашем PATH до /usr так что он используется вместо версии Ubuntu по умолчанию.

Тогда у вас должно получиться работать с:

"+y

Для копирования в системный буфер обмена. А также:

"+p

Вставить из него.

Я не знаю, есть ли глобальный буфер в консоли Linux.

Я нашел обходной путь. Можно копировать и вставлять в vi или nano.

Если какая-либо команда, часть команды или измененная команда должна быть выполнена, я скопирую ее в конец файла, затем закройте редактор и запустите

tail -1 file.txt | bash

Некоторые строки файла могут быть запущены

sed -n <line_number> file.txt | bash

или же

grep <pattern> file.txt | bash

Но это не совсем отвечает на мой вопрос. Это своего рода обходной путь.

Другие вопросы по тегам