LINUX.ORG.RU

Продвинутый редактор командной строки терминала (gui)

 


1

3

Есть ли такое: в gui (kde в частности) в терминале при вводе команды хотелось бы иметь возможность получить некое всплывающее окно, в котором я могу редактировать командную строку, причем использовать для этого некий более-менее современный редактор (выделение мышкой, курсор управляемый, всякое такое:)). Все это связано с историей bash, т.е. например, если начинаю вводить команду, то всплывает окошко, в котором из истории выбираются предыдущие команды, соответствующие текущему вводу и имеется возможность выбрать из этого что то мышкой или enter. Ну и возможность создавать некие макросы, которые как меню доступны для выбора или выпадают при вводе.

Все это только в gui, в ssh и консоли - не обязательно.

Хочется странного или все же есть что то подобное?



Последнее исправление: fguest (всего исправлений: 1)

Что-то похожее пытаются сделать здесь: https://www.warp.dev/

Но за деньги и для дровосексуалов.

Самое лучшее, что можно сделать для увеличения эффективности редактирования в bash/zsh/fish (и, возможно, других): включить vi-mode.

При этом можно сделать, чтобы по умолчанию был включен insert-mode, и тогда даже не будет отличаться от привычного режима работы, кроме тех случаев, когда надо будет редактировать сложную длинную команду - станет намного проще.

emorozov
()

vi-mode не интересует… Не то… Всякие «за деньги» - прикольно конечно, но опять таки - не совсем то что нужно… Печально, конечно…

Тогда вот такое уточнение: могу ли я, будучи в консоли (konsole, например), отреагировать программно на некую комбинацию клавиш, и запустить что то, свой скрипт/программу, который после закрытия передаст в терминал некий текст, который я как то во внешнем приложении сформирую. Как бонус - могу я получить текущее состояние введенного текста в консоли?

fguest
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid

возможно, я ковырял когда-то, всякие навороты есть и там (zsh) и тут (fish), некоторые - приятные:)

Но это не совсем то. Ведь все что нужно:

  • приятное/привычное редактирование сложных командных строк
  • макросы всякие (типа вставки $param (ну или :param1)), которые приведут к запросу конкретного значения при запуске
  • взаимодействие с историей, показ вариантов по мере ввода. Причем не только 1:1 совпадающие по тексту, но и по по подтексту
  • свои команды, которые можно искать не только по имени, но по некоему описанию. Вот в меню всяких kde/xfce.. такое же возможно
fguest
() автор топика

Все это связано с историей bash, т.е. например, если начинаю вводить команду, то всплывает окошко, в котором из истории выбираются предыдущие команды, соответствующие текущему вводу и имеется возможность выбрать из этого что то мышкой или enter.

Ctrl+R. Только без мышки и всплывающего окна. Работает в ssh.

filosofia
()
Ответ на: комментарий от fguest

В fish точно можно, например, отредактированный кусок моей конфигурации:

function reverse_history_search
  history | fzf | read -l command
  if test $command
    commandline -rb $command
  end
end


function fish_user_key_bindings
    bind \cr reverse_history_search
end

Но отказ от vi-keys в пользу какого-то мышевожения - это непонимание, что такое эффективность в командной строке. Пока другой пользователь будет что-то нажимать и возить мышой, я уже десять раз успею отредактировать строку используя режим vi.

emorozov
()

far2l что такое поддерживает

           ┌─────────────────────────────────────────────────────────────────┐
           │                                                                 │
           │  ls -l ./'(1990) Passion And Warfare'/'07 - For The Love Of God»│
FAR2L, vers│  ls -l ./'(1990) Passion And Warfare;/'07 - For The Love Of God»│
Copyright (│  ls -l ./"(1990) Passion And Warfare"/'07 - For The Love Of God»│
           │  ll                                                             │
При наборе │  ls -l ./"(1990) Passion And Warfare"/"07 - For The Love Of God»│
 Ctrl+O - п│  ls -l './(1990) Passion And Warfare/07 - For The Love Of God.m»│
 Ctrl+Вверх│  ll ./\(1984\)\ Flex-Able/                                      │
 Двойной Sh│  ls -l ./\(1990\)\ Passion\ And\ Warfare/07\ \-\ For\ The\ Love»│
 F3, F4, F8│  ls -l ./\(1990\) Passion And Warfare/07 - For The Love Of God.»│
 Ctrl+Shift│  ls -l ./(1990) Passion And Warfare/07 - For The Love Of God.mp»│
В процессе │  ls -l ./"(1990) Passion And Warfare/07 - For The Love Of God.m»│
 Ctrl+Shift│  ls -l "./(1990) Passion And Warfare/07 - For The Love Of God.m»│
 Ctrl+Alt+C│  ls "./(1990) Passion And Warfare/07 - For The Love Of God.mp3.»│
 Ctrl+Alt+Z│  ls "./(1990) Passion And Warfare/07 - For The Love Of God.mp3" │
 Ctrl+Shift│  lsmod                                                          │
           └────────────────── Up/Down,Enter,Esc,Shift-Del ──────────────────┘
/home/pfg$ ls                                                                  ↑
1Помощь 2ПользМ 3Просм  4Редакт 5Копир  6Перен  7Папка  8Удален 9КонфМн 10Выход
pfg ★★★★★
()

посмотри утилиту поиска в истории командной строки hstr - https://github.com/dvorka/hstr
Краткое описание - https://zenway.ru/page/hstr
и еще - https://linuxhint.com/hstr-command-history-browser-in-linux/

sigurd ★★★★★
()
Последнее исправление: sigurd (всего исправлений: 1)

Какая в этом необходимость? В .bash_history, если вы не оптимизируете его путем удаления ненужного, всегда можно найти то, что недавно, на днях, выполняли. Обычный сеанс, как правило, опирается на текущий контекст выполняемых действий, а для этого достаточно клавиатурных up & down. Это самое популярное и действенное, особенно в совокупности с символами введенными в промпт. Если вы забываете что-то действительно важное, это вполне возможно, ну так записывайте куда-нибудь, разовые или редко выполняемые команды в любом случае потеряются и хорошо если вы знаете что конкретно искать.

dmitry237 ★★★
()
Ответ на: комментарий от dmitry237

Я храню историю за годы (поэтому и отказался от bash, т.к. bash всё равно в какие-то непредсказуемые моменты времени старую историю теряет), мне нравится. Иногда бывает, что делал что-то 4 года назад, сейчас снова понадобилось - хоба, и fish начинает подсказывать по первым буквам.

Заранее не предугадать, что понадобится через год, два, три. Поэтому проще хранить всю историю.

Поиск по up/down не настолько эффективен, как Ctrl-R в bash/zsh или как моя функция поиска по истории в fish при помощи fzf, т.к. это удобнее, чем 10 раз нажимать up. Во всяком случае, так кажется, а субъективное удобство - тоже удобство.

emorozov
()

Это глупость. История баша не вечная. Если однострочник слишком длинный, чтобы править его в командной строке, то сразу оформляй его в виде скрипта и редактируй с удобствами. Эти скрипты и будут тебе «макросами»

futurama ★★★★★
()
Последнее исправление: futurama (всего исправлений: 1)
Ответ на: комментарий от emorozov

Я храню историю за годы

Я не храню, эти сотни pushd, cd и cat. Что считаю для себя важным выношу в отдельный файл с комментарием, а файл истории очищаю от полных дубликатов и иногда его перезаписываю наиболее часто употребляемыми командами (из другого файла), их немного, где-то 50.

dmitry237 ★★★
()
Ответ на: комментарий от dmitry237

Для себя давно принял, что заранее не угадаешь, что понадобится. Да, трагедии нет, если какой-то curl, которым тестировал рабочую API 4 года назад, потерялся, и надо придумывать его снова.

Но насколько всё же приятнее, когда начинаешь печатать ‘curl -X…’, а там бац - и команда, которую не придётся писать снова.

pushd, cd и cat обычно не мешают, при поиске они отфильтровываются. А иногда и они бывают нужны.

Конечно, часто используемые или однозначно важные и нужные команды записываются в алиасы или в заметки в org-mode, а то и в оба места одновременно. Не отменяет удобства долгой истории с мощным поиском.

emorozov
()