Как скопировать строку в 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
или справочная страница
В bash можно редактировать текущую команду в редакторе, нажав CtrlxCtrle.
Так:
- Начните с новой подсказки, нажмите CtrlxCtrle. Откроется новый пустой редактор, предпочтительно Vim (я думаю, что редактор решается
VISUAL
а такжеEDITOR
переменные). - Откройте файл, содержащий команды в новой вкладке или разделить.
- Скопируйте соответствующие команды в исходный буфер (возможно, с именем
bash-fc-xxxxxxxx
). - Сохранить и выйти. И вуаля!
В 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
Но это не совсем отвечает на мой вопрос. Это своего рода обходной путь.