Найти в Дзене
Блокнот математика

Рубрика "Секреты Вим". Терминал

Привет, коллеги. Терминалом или консолью называется программа, позволяющая напрямую отдавать команды операционной системе. Начиная с Вим 8 версии, поддержка терминала встроена в Вим.

В общем-то и раньше можно было запустить любую команду через восклицательный знак:

:!ls *.txt

Но теперь можно открыть окно Вим и запустить оболочку вроде bash или команду на выполнение прямо в окне. Мы этим уже пользовались, а теперь обсудим поподробнее.

Итак, синтаксис

:terminal [опции] [команда]

Если указана команда, она будет выполняться в новом окне. Если команда не указана, запустится оболочка, указанная в опции shell. У меня там /bin/bash. Если указана специальная команда NONE, не запускается ничего и терминал можно использовать для своих целей, отладки, например. Об этом в другой раз.

Можно указать диапазон строк и тогда они пойдут на вход команде. Это может быть удобно.

Некоторые опции:

  • ++close - закрыть окно терминала по завершении запущенной команды.
  • ++open - открыть окно по завершении работы команды, если окна нет.
  • ++curwin - открыть терминал в текущем окне.
  • ++hidden - использовать скрытый буфер, без выделения окна.
  • ++rows={height} - задать высоту окна
  • ++cols={width} - аналогично ширина
  • ++eof={text} - позволяет послать текст после последней строки диапазона. Пробелы запрещены, а конец строки добавляется автоматически. Например, можно указать "++eof=exit", а для Питона "++eof=exit()".

Например, вот так можно запустить что-то скрытно, и увидеть результат сразу по завершении:

:term ++hidden ++open make

Размером терминала управляет опция termsize. Она может быть пустой, тогда размер окна определяется родительским окном (из которого его запустили). А можно указать два числа, разделив их звездочкой (25*80) или иксом (25x80, 25X80). В последнем случае задается жесткий размер: окно будет иметь такой размер, и если останется пустое место, значит так надо. Если одно из чисел равно нулю, это означает установку только другого. Значение 0x0 равносильно пустой строке. А звездочка задает минимальное значение: больше можно, меньше нет.

Обычно, когда в окне терминала работает задача (в том числе и bash), она и обрабатывает нажатия клавиш. То есть команды Вим недоступны. Однако можно выйти в "нормальный режим терминала" сочетанием клавиш <C-W>N. Можно задать клавишу или сочетание в опции termkey, заменив <C-W> на что-то свое. В этом режиме клавиатуру обрабатывает Вим. Но задача продолжает выполняться в фоновом режиме, хотя вывод в окно приостанавливается.

Вернуться обратно в терминал можно так же, как мы входим в режим вставки: i или a.

В нормальном режиме терминала можно, например, сохранять выдачу в файл, скопировать в буфер и т.п.

Для чего удобно окно терминала? Можно запускать задачу не отрываясь от кода. Можно запустить что-то длинное и окно выпрыгнет тогда, когда задача завершится. Или просто будет ждать, пока вы занимаетесь своими делами. Можно комфортно менять параметры расчета, редактировать код, следить за выдачей на экран и за результатами расчета. Можно и сохранить выдачу в файл или перенести в другой буфер для обработки... В общем, вещь, безусловно, полезная.

Удачи, коллеги

Научно-популярные каналы на Дзене: путеводитель
Новости популярной науки12 марта 2022