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

apt-cache show или aptitude show дает вам много информации о пакете из ваших репозиториев (даже если это установлено или нет), включая версию. Если вас интересует только версия, используйте:

apt-cache show <packageName> | grep Version

или

aptitude show <packageName> | grep Version

Если пакет доступен в нескольких версиях, вы увидите это. Чтобы увидеть только последнюю версию, используйте:

apt-cache show <packageName> | grep Version | head -1

У вас не может быть никаких сомнений в приведенной выше команде.

1
задан 24 July 2015 в 00:50

3 ответа

В 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

Чтобы вставить из него.

2
ответ дан 23 May 2018 в 18:50
  • 1
    Проблема в том, что этот буфер находится только внутри vi. Если вы выйдете из vi, вы не сможете скопировать его на консоль. Вопрос в том, есть ли в консоли какой-нибудь общий буфер? – Pilot6 24 July 2015 в 01:09
  • 2
    @ Pilot6: Я не думаю, что я мог бы поместить его в лучшую сторону, поэтому я добавил цитату к моему ответу. Надеюсь, поможет. – Paranoid Panda 24 July 2015 в 01:22
  • 3
    Вы понимаете этот текст? Я этого не делаю ;-) И что там делают X и Windows? В консоли нет X вообще. – Pilot6 24 July 2015 в 01:25
  • 4
    @ Pilot6: Нет ... Вот почему я не мог переписать это! : D – Paranoid Panda 24 July 2015 в 16:30
  • 5
    @ Pilot6: Я просто предположил, что вы знаете, как использовать vi и vim лучше меня и поймете ... – Paranoid Panda 24 July 2015 в 16:31

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

Итак:

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

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

Я нашел обходное решение. Можно копировать & amp; вставить в vi или nano.

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

tail -1 file.txt | bash

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

sed -n <line_number> file.txt | bash

или

grep <pattern> file.txt | bash

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

1
ответ дан 23 May 2018 в 18:50

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

Похожие вопросы: