Как вызвать редактор vim и передать вывод в bash

Chrome-браузер можно установить:

напрямую с помощью пакета файла .deb

apt-get update && apt-get upgrade
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
dpkg -i google-chrome-stable_current_amd64.deb
apt-get install libappindicator1

Теперь запустите apt-get -f install , затем установите недостающие зависимости

Добавив Google Chrome репозитории.

Chrome можно установить, добавив официальные репозитории в ваш sources.list :

настроить apt-key

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

добавить официальный репозиторий:

echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list

обновить и установить chrome:

apt-get update
apt-get install google-chrome-stable
39
11.05.2016, 00:49
4 ответа

vipe - это программа для редактирования конвейеров:

command1 | vipe | command2

Вы получаете редактор с полным выводом command1 , и когда вы выходите, содержимое передается по каналу command2 .

В этом случае нет command1 . Итак, вы можете сделать:

: | vipe | pandoc -o foo.pdf

Или:

vipe <&- | pandoc -o foo.pdf

vipe подхватывает переменные EDITOR и VISUAL , чтобы вы могли использовать их для открытия Vim .

Если он у вас не установлен, vipe доступен в пакете moreutils ; sudo apt-get install moreutils или другой аналог в вашем вкусе.

47
20.08.2021, 12:07

Запуск в конвейере

Попробуйте:

quickedit() (  trap 'rm ~/temp$$' exit; vim ~/temp$$ >/dev/tty; cat ~/temp$$ )

Ключ в том, что для нормального использования vim vim требует, чтобы стандартный вывод был терминалом. Мы достигаем этого с помощью перенаправления > / dev / tty .

В целях безопасности я помещаю временный файл в домашний каталог пользователя. Для получения дополнительной информации см. Часто задаваемый вопрос Грега 062 . Это избавляет от необходимости использовать непонятное имя файла.

Пример:

Когда открывается vim , я набираю Эта функция выполнена успешно. и сохраните файл.Результат на экране выглядит следующим образом:

$ quickedit | grep succeeded
This function succeeded.

Несмотря на то, что вывод quickedit перенаправлен в конвейер, vim по-прежнему работает нормально, потому что мы предоставили ему прямой доступ к / dev / tty .

Запуск программы из vim

Как я упоминал в комментариях, vim может передать файл команде по конвейеру. Например, из vim введите команду : w! Pandoc -o file.pdf (Примечание: пробел между w и! Обязателен).

19
20.08.2021, 12:07

Убедитесь, что vim установлен в качестве редактора по умолчанию (например, export EDITOR = vim в вашем .bash_profile или .bashrc . Затем при любом запросе , вы можете ввести Ctrl - X , а затем Ctrl - E . Это откроет текущую командную строку в настроенном вами редакторе (например, vim ). Внесите изменения, сохраните и выйдите, и команда будет выполнена так, как если бы вы ввели ее в командной строке, включая конвейеры и т.п.

9
20.08.2021, 12:07

Вы можете сделать это из Vim:

:w !pandoc -o file.pdf

Или даже записать буфер в сложный конвейер:

:w !grep pattern | somecommand > file.txt

А затем вы можете выйти из Vim без сохранения:

:q!

Однако, учитывая ваш конкретный вариант использования, вероятно, лучшее решение, используя vi в качестве редактора командной строки. Предполагая, что вы используете bash :

set -o vi

Это устанавливает ваши сочетания клавиш на vi . Таким образом, вы можете редактировать свои команды прямо в командной строке с помощью базовых привязок клавиш vi , нажав , а затем набрав команды vi , такие как x , cw и т. Д. (Вы можете вернуться в режим вставки, нажав i .)

Еще лучше и более актуально для этого вопроса, вы можете откройте Vim, чтобы напрямую создать содержимое командной строки. Просто введите v , и вы получите пустой буфер Vim. Когда вы сохраняете и выходите, эта является командой в вашей командной строке, и она немедленно запускается. Это намного более гибко, чем редактирование непосредственно в командной строке, поскольку вы можете написать целый мини-скрипт, если хотите.


Так, например, если вы хотите написать какой-нибудь сложный текст и немедленно передать его в pandoc, вы можете просто набрать:

<Esc>v

Затем отредактируйте буфер Vim, пока не получите что-то вроде:

cat <<EOF | pandoc -o file.pdf
stuff for pandoc
more stuff for pandoc
EOF

Затем сохраните и выйдите ( с : x ), и все это будет выполняться как команда оболочки.

Он также будет доступен в истории команд вашей оболочки.

24
20.08.2021, 12:07

Теги

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