Графический интерфейс для bash, делаем работу в командной строке удобнее

4ea5c296c6ac3e6b58838c0a71f42090.png

Когда пишешь код в IntelliJ IDEA, привыкаешь что везде есть подсказки, везде где можно работает комплишен, всегда можно одним кликом перейти на декларацию метода или на его юсаджи. После этого интерфейс командной строки выглядит как-то бедно. Конечно, он очень хорошо продуман, сделан настолько удобным, насколько это возможно в текстовом UI, но в графическом UI возможностей намного больше. Представляю вам плагин для JetBrains IDE, позволяющий работать в командной строке cо всеми удобствами IDE.

Плагин Friendly Terminal позволяет печатать команду в редакторе IDE. Такой редактор удобнее чем текстовая командная строка, потому что в нём есть подсветка синтаксиса, продуманный комплишен, показ документации, работают привычные сочетания клавиш, можно перемещать курсор мышкой и т.д.
После запуска команды, пользователь переключается в текстовую консоль, где команда выполняется, так, как будто её запустили обычном терминале.
После завершения исполнения команды, пользователь возвращается в GUI интерфейс, где показан output команды и можно вводить следующую. Bash сессия в текстовой консоле висит в бэкграунде и ждёт пока не будет запущена следующая команда.

Output показывается средствами IDE, что позволяет сделать его интерактивным. Например, командаls /opt/my-app/conf выведет список файлов в директории /opt/my-app/conf, и эти имена файлов будут кликабельны, при нажатии c Ctrl файлы открываются в редакторе IDE, так же, из контекстного меню доступны свойства файла, копирование полного пути, и т.д.

82dbc610d60340ac6022e6ec01068878.gif

Поиск команды в истории происходит во всплывающем окне, что позволяет видеть сразу несколько вариантов, в отличии от стандартного текстового терминала, где показывается только один вариант и легко пропустить нужный нажимая Ctrl+R.

d3854a4246a3e02cfddb24043e36a21e.png

File Manager

Навигация по файловой системе с помощью команд cdи ls — не самая удобная вещь, поэтому в плагине есть встроенный файловый менеджер типа Total Commander. Можно нажать Ctrl+O и откроются 2 файловых панели. В них можно ходить по директориям, копировать файлы, удалять файлы и т.д. Если вы на удалённой машине, то можно скачать файл или загрузить с локальной машины.

441bc8c3fbd10d803d1d103f70b30296.png

SSH

Командная строка используется, в основном, для доступа к удаленным машинам через SSH, поэтому все фичи должны работать даже если терминал подключен к удалённой машине. Было бы мало толка если бы GUI работал только локально. Это накладывает некоторые ограничения на способ получения данных. Допустим, пользователь открыл историю команд, плагину надо как-то узнать что там за история команд на удалённой машине. На локальной всё просто — можно прочитать историю из файла »~/.bash_history» , а для связи с удалённой есть только bash сессия, которая висит в бэкграунде, пока пользователь находится в GUI панеле. Через эту bash сессиию и происходит загрузка всех данных. Например можно получить историю команд запустив history и распарсив результат, для комплишена имён файлов и навигации по файловой системе в File Manager запускается ls. Чтобы технические команды не зафлудили историю, они начинаются с пробела. Bash не сохраняет команду в истории, если она начинается с пробела.

Я писал, что можно открывать файлы в редакторе IDE, это работает и через SSH. В этом случае, файл скачивается в temporary директорию. Если его изменить, изменения можно выгрузить обратно нажав «Upload changes». video
Представляю что об этом думают фанаты vim… Но на вкус и цвет товарищей нет, этот плагин для любителей IntelliJ IDEA.

Маленькие, но полезные фичи

  • Ctrl+Shift+Space (smart completion) предлагает команды из истории, совпадающие по префиксу с тем что уже напечатано.

  • Иногда хочется взглянуть на вывод последней команды отдельно от всего остального, для этого можно нажать Ctrl+Shift-O или соответствующую иконку в конце вывода, и он откроется во всплывающем окне на весь экран.

  • Можно нажать Alt-Up, чтобы переместить курсор из строки ввода команды, в консоль, где печатается output команд, это позволяет что-нибудь скопировать без использования мыши. Дальнейшие нажатия Alt-Up / Alt-Down перемещают курсор к выводу следующей / предыдущей команды.

  • Нажатие Alt+F12 открывает терминал, в каком-бы месте IDE вы не находились.

Ограничения

Friendly Terminal работает только с Linux консолью. В Windows может работать только в WSL (Windows Subsystem for Linux) или как SSH клиент для подключения к Linux машинам. Работать с CMD или PowerShell не может. Теоретически, можно сделать поддержку Cygwin, но пока не сделано.

Ссылка на плагин: https://plugins.jetbrains.com/plugin/18857-friendly-terminal
Буду рад любым отзывам.

© Habrahabr.ru