LINUX.ORG.RU

Хочу работу с мышью как в терминале ConEmu

 ,


1

2

Привет. Мне понравилось, что в виндовом ConEmu терминале можно мышь (курсор) тыкать в любое место команды и редактировать её (даже в XP, лол). В общем, поведение как в текстовом редакторе, а не старом терминале. Для правки длинной команды не надо жать стрелку влево и адски долго ждать пока курсор доползёт до нужного места. Конечно, знаю, что в линуксе есть горячие клавиши, облегчающие редактирование. Например, быстрая навигация по словам Alt+B (назад), Alt+F (вперёд). Есть ещё какие-то клавиши для возврата в начало, в конец. Но это не так удобно, как просто тыкнуть мышью и надо запоминать эти хоткеи.

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



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

Это действительно не терминал, например я редактирую команды в mcedit, а точнее в $VISUAL, шелл pwsh. Нажимаю F4 и открывается mcedit с текущей командой в приглашении (промпте). Удобно, когда команда многострочная.

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

zsh крутая вещь.

zsh
wget http://stchaz.free.fr/mouse.zsh
. ./mouse.zsh
zle-toggle-mouse
работает, но как-то странно. Реальный клик курсора оказывается левее. Хотя, к этому можно приноровиться. Но пропал СКМ и мышиный буфер. И копирование текста прошлой выдачи. Я так понял, это другой режим и их надо менять. Печаль.

netrium
() автор топика
Ответ на: комментарий от netrium

Это в любом софте работает, в том числе графическом. Сразу подскажу другие для терминала именно:

Ctrl+W стереть слово

Ctrl+A в начало строки

Ctrl+E в конец строки

Ctrl+R поиск по истории

Tab автодополнение пути, команды, или ее опции

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

Проще в text editor переслать.

Ну, я погонял немного ConEmu (много настроек, мне это не нравится). Да, тыкнуть можно мышью куда угодно, но в остальном неудобно (по дефолту):

  • мышиного буфера нет (по СКМ).
  • историю после перезапуска не запоминает.
  • если выделить слово в команде и нажать ПКМ (в надежде найти в меню привычный пункт Вырезать, да хотя бы Копировать или Ctrl+X) поведение не как в текстовом редакторе, а вырезается сразу и вставляется куда-то рядом, т.е. нет контекстного меню.
  • да и мышетыкание не всегда срабатывает в нужной позиции, иногда на символ левее или вот в край строки вроде не тыкнуть.

Так что линукс всё равно лучше. Можно отправить в text editor и править как хочешь. Тем более, я иногда так и делаю, только по старинке копипастой. Правда, на 4 клика дольше. Но идеала нет нигде. Никто не написал идеальный (удобный) терминал.

netrium
() автор топика
Ответ на: комментарий от netrium

А ты что под терминалом имеешь в виду, шелл или то, что на экран выводится?

Или если по-другому вопрос поставить, тебе хочется в голой консоли так работать или в эмуляторе терминала? Если второе – то в большинстве линуксовых эмуляторов терминала есть довольно продвинутые средства работы с текстом. Можно, например, ЛКМ с зажатым шифтом выделить произвольный кусок экрана и по Ctrl+Shift+C скопировать его в буфер. Вот например, что я вытащил из связки konsole+mc (это просто текст, который mc выводил в диалоге копирования):

 [ ] Разыменовывать ссылки         [ ] Внутрь подкаталога, если есть
 [x] Сохранять атрибуты            [ ] Изменять относительные ссылки

Сомневаюсь, что в винде какой-то терминал так умеет. :) А по Shift+Ins можно наоборот, в командную строку вставить текст из системного буфера. Это не совсем по теме исходного вопроса, но может пригодиться.

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

в виндовом ConEmu терминале можно мышь (курсор) тыкать в любое место команды

xterm-совместимый (цвета, псевдографика, ncurses) текстовый редактор не подскажу. 9term из plan9port умеет это, но он не xterm-совместимый.

В целом, в девятке принято вместо истории скроллить до старой команды, редактировать её как обычный текст, затем выделить её и кликнуть на send, что отправит её как следующую команду.

Другими словами, редактировать можно не только последнюю строку — и без таких ужасных костылей как $PS2 или вызов текстового редактора для редактирования одной команды.

В общем, поведение как в текстовом редакторе, а не старом терминале.

Эта идея идёт глубже, чем редактирование последней строки. Acme буквально является текстовым редактором, в котором можно запускать шелловские команды. Лучшее из двух миров. Из первого — файлы, навигация, организация, просто привычная работа с текстом. Из второго — традиционный командный интерфейс, а не всякая кривота.

И раз уж вам не нравится сложное управление клавиатурой, то Acme специально заточен под мышь, зачастую удивительным образом. Но, с другой стороны, он не так популярен, поэтому найти online-помощь (и пропаганду) сложнее, чем в случае с Emacs или Vim.

А то что же получается, линукс король терминала, а винда его обскакала.

Командный интерфейс, ориентированный на мышь, был впервые открыт в Xerox Cedar. Затем в Oberon, затем в Plan 9. Линукс с самого рождения живёт в каменном бумажном веке.

kaldeon
()
Последнее исправление: kaldeon (всего исправлений: 4)
Ответ на: комментарий от kaldeon

9term из plan9port умеет это

Выглядит интересно. Действительно, можно редактировать любой текст (кстати, вместо завершения программы по Ctrl+C используется клавиша Del). Но для полноценной замены xterm-based терминалов не хватает поддержки drag and drop, сохранения истории после перезапуска (но я понимаю, что концепция против этого, т.к. сохранять всю выдачу не нужно, а команды неотделены от неё) и почему-то кириллица самолётиками (нужно подключить подходящий шрифт, наверное).

скроллить до старой команды

Оказалось, что пробираться через ответную простыню, чтобы отыскать в ней прошлые команды не очень практично.

затем выделить её и кликнуть на send (СКМ)

Вот это тоже довольно геморненько, вместо простого нажатия Enter. Причём никаких двойных/тройных кликов, мышью надо выделять самому от начала команды до конца.

Но, может, приживётся 9term в некоторых задачах. Если пелена небольшая, например, а прошлые команды надо редактировать сильно, но не часто. Скажем, curl запросы какие-нибудь.

Потестил также ещё раз ConEmu. Он оказался неплох. По сути, мышиный буфер есть (выделение, потом любая клавиша копирование, ПКМ - вставка, можно и по СКМ). Там, конечно, хаки, поэтому иногда на один символ промахивается курсор, но в линуксе нет и такого. Поскольку cmd, то история только до перезапуска. Вырезания нет, но быстрое удаление по словам Ctrl+Backspace. Выделение только от трёх символов работает. И ещё там по мелочам косяки/особенности (следствие хакинга). Но то, что можно мышью кликнуть в любое место команды, конечно, очень расслабляет. Не хватает в линуксе такого.

netrium
() автор топика
Ответ на: комментарий от hobbit

Всё это у меня немного путается. Терминалы, консоли, командные строки. Признаюсь, я в терминологии немного чайник. Как те люди, которые путают контейнер и кодек, например, когда говорят кодировать в mkv.

Мне хочется обычной работы в привычных терминалах, таких как xfce4-terminal, например. Но чтобы в предыдущих командах (которые вернул из истории), да в общем-то и в текущей команде ещё неотправленной, чтобы можно было в любое место в ней тыкнуть мышью для редактирования, дописать там что-то, удалить. В идеале ещё и вырезание/вставка, как в текстовом редакторе. Ведь бывает нужно удалить, скажем URL в такой команде:
curl --http3-only -v -4 "URL"
и дописывать в кавычки своё, ну и подобное. Или там хвост от URL удалить (выделением/удалением). А хвост может быть длинным.

netrium
() автор топика
Ответ на: комментарий от netrium

Но то, что можно мышью кликнуть в любое место команды, конечно, очень расслабляет. Не хватает в линуксе такого.

На мой взгляд, Ctrl+стрелки (при которых курсор бегает не по отдельным символам, а по целым словам) куда быстрее и практичнее, чем кликанье мышью в команду (этой мышью ещё прицелиться надо, и не только по горизонтали, но и по вертикали, чего при работе с клавиатурой делать не надо).

Вот сенсорные экраны – это да. Там пальцем ткнуть во многих случаях действительно быстрее, чем клавой что-то делать.

А традиционный ПК с мышью и НЕсенсорным экраном — ну не надо мышь превращать в универсальное устройство ввода всего.

Мышь очень хороша как указательное устройство: контур в графическом редакторе обвести, большую группу распределённых объектов выбрать/переупорядочить, в текстовом редакторе в произвольное место ткнуть (и то, с последним пунктом вимеры поспорят, но я не вимер). Иногда для навигации в программах (особенно в тех программах, где бестолковые авторы не сделали нормальный Tab Order и нормальные хоткеи). В браузерах без мыши тоскливо, даже несмотря на режим активного курсора (F7).

А собственно команды выдавать и что-то «по месту» редактировать – клавиатура в миллион раз удобнее.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от netrium

сохранения истории после перезапуска

Не знаю почему этого нет. Возможно, предполагается сохранять команды где-либо и потом копипастить. KISS типо.

В Acme есть возможность сохранять состояние (Dump/Load), но на окна с терминалом (win) это не распространяется, увы. Восстанавливает только окно, заново запуская программу, но без старого содержимого. Я думаю, это просто недоработка.

почему-то кириллица самолётиками

Отчасти дело в шрифте. Можно поставить привычный шрифт вот так:

9term -f '/mnt/font/SFPro-Regular/16a/font'

(хотя этого файла не существует в основной системе)

Для получения списка шрифтов:

% fontsrv &
% 9p ls font

При этом запускать сам fontsrv для включения шрифта в 9term не обязательно. Он сам это как-то умеет делать.

К сожалению, шрифт не исправляет ввод кириллицы. По крайне мере, в дефолтном sh на маке у меня так. Если переключиться в dash или rc, то ввод кириллицы работает.

Оказалось, что пробираться через ответную простыню, чтобы отыскать в ней прошлые команды не очень практично.

Возможно. Я редко работаю с терминалами. Но на всякий случай уточню, что не обязательно скроллить колёсиком. ЛКМ и ПКМ на скроллбаре листают вверх/вниз на количество строк, которое идёт от начала видимой зоны до курсора. Таким образом, скроллинг детерминистичный (хотя есть баги 😁) и довольно быстрый.

Иногда я оставляю частые команды в самом верху.

Если я в Acme, то иногда удаляю паттерном всё содержимое, которое не является введённой командой, используя Edit , x v/^%/ d (% – это промпт в rc).

Вот это тоже довольно геморненько, вместо простого нажатия Enter.

Если один раз выбрать send в контекстном меню, то в следующий раз оно будет автоматически выбрано. Поэтому будет достаточно одного клика по средней кнопке мыши.

Enter был бы против концепции. Ввод с клавиатуры заменяет текущее выделение. Этой же практике следует backspace, который не очищает выделение, а заменяет его на удаление одного символа, в результате очищая выделение и один символ слева от него.

Более эффективное управление мышью реализовано в Acme, где вместо контекстных меню используются сочетания кликов мыши.

Причём никаких двойных/тройных кликов, мышью надо выделять самому от начала команды до конца.

Если обернуть команду в скобки или кавычки ((), [], {}, '', "", ``), то можно будет содержимое выделить двойным кликом, если нажать близко к скобке или кавычке.

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

Можешь ещё попробовать http://warp.dev. Это ещё одна попытка переосмысления терминала (1). Но я лично не пользовался им, так что поделиться опытом не могу.

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

в текстовом редакторе в произвольное место ткнуть

Терминал – устаревшее устройство, иногда необходимое из-за своей простоты, но для работы с текстом текстовый редактор более дружелюбный и привычный. Поэтому есть смысл сохранить дух терминала (последовательный ввод команд), но весь остальной UI/UX приблизить к текстовому редактору.

При этом я не скажу, что стрелочки неудобные. Я не знаю, почему в Plan 9 к ним такое пренебрежительное отношение. Скорее, работа с мышью не такая ужасная, как считается.

и то, с последним пунктом вимеры поспорят

Вим и емакс – наглядная демонстрация того, во что превращается попытка использовать клавиатуру для всего.

kaldeon
()
Последнее исправление: kaldeon (всего исправлений: 3)
Ответ на: комментарий от kaldeon

Спасибо за полезные советы.

ЛКМ и ПКМ на скроллбаре листают вверх/вниз на количество строк, которое идёт от начала видимой зоны до курсора

И от того в каком месте кликаешь, ещё зависит скорость прокрутки.

netrium
() автор топика
Ответ на: комментарий от netrium

Терминал на 120 МБ с телеметрией, OpenGL и AVX, без исходного кода.

Попробуй wezterm: ~126 MiB без телеметрии, Rust+Lua+OpenGL, с исходным кодом.
Зная Lua (что само по себе полезно), в нём можно много чего сделать.

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

в текстовом редакторе в произвольное место ткнуть

Команда в терминале, по сути, и есть текст (как в текстовом редакторе). А в текстовом редакторе я пользуюсь клавишами: Ctrl+End, Backspace (для удаления выделенного, кстати, в терминале нет такого), Shift+Insert, F3 (или Ctrl+G в некоторых неудобных), Ctrl+Z, Ctrl+S. Иногда Ctrl+F, Ctrl+X, стрелочками вверх/вниз/влево/вправо (по мелочам, но мышь помогает для грубой ориентировки), и т.д.

Но ведь вы же не пользуетесь Ctrl+стрелочками в текстовых редакторах? Или ещё более экзотическими Alt+B/Alt+F. Я, например, нет. Меня даже Ctrl+G вместо F3 жать ломает. Вот, если бы горячие клавиши навигации были бы одиночными, другое дело. Ведь, навигация нужна довольно часто.

netrium
() автор топика
Ответ на: комментарий от netrium

В общем, если пользоваться только горячими клавишами в текстовом редакторе (ну, мышехейтер, если), он и то будет удобнее терминала. Хотя бы, потому что там есть навигация простыми стрелочками по вертикали (если включен перенос строк). Ctrl+Backspace быстрое удаление оказалось довольно удобным (в терминалах нет такого). Возможность отмены (Ctrl+Z), Home, End, и т.д. Так что, терминал это не только горячие клавиши (вынужденное их использование), но ещё и менее удобные горячие клавиши, к сожалению.

netrium
() автор топика
Ответ на: комментарий от dataman

wezterm выглядит как обычное простое окошко. А вот warp.dev всё-таки потестил на другом компе. То, что я и просил. Запоминает даже вывод терминала и есть полноценное редактирование! Жаль, на моём проце не идёт. Апгрейднусь, буду его использовать, наверное. Напоминает VSCode, но как терминал. Но… проприетарный терминал, до чего мы дожили.

netrium
() автор топика
Ответ на: комментарий от hobbit

Сомневаюсь, что в винде какой-то терминал так умеет. :)

╔══════════════ C:\Program Files\Far Manager ══════════12:
║n           Name            ║            Name
║..                          ║FarRus.lng
║Addons                      ║FarSky.hlf
║Documentation               ║FarSky.lng
║Encyclopedia                ║FarSpa.lng
║Plugins                     ║FarUkr.hlf
║changelog                   ║FarUkr.lng
║Far.exe                     ║File_id.diz
║Far.exe.example.ini         ║lpeg.dll
║Far.map                     ║lua51.dll
║FarBel.lng                  ║luafar3.dll
║FarCze.hlf                  ║luafar3.map
║FarCze.lng                  ║RestoreOldPluginSettings.cmd
║FarEng.hlf                  ║SaveOldPluginSettings.cmd

Если без мышки, то не во всех консольных программах получится

https://learn.microsoft.com/en-us/previous-versions/orphan-topics/ws.11/mt427362(v=ws.11)#selection

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

Наверное, тем, кто может, это не нужно. Для линуксов есть отдельный сторонний порт Фара и есть mc.

Вот в винде без Фара я не знаю, как бы выживал, да.

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

Без Фара просто мышкой выделяется (если не отключено в свойствах) с альтом и без

PS C:\Program Files\Far Manager> dir


    Каталог: C:\Program Files\Far Manager


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        26.07.2022     21:17                Addons
d-----        26.07.2022     21:17                Documentation
d-----        26.07.2022     21:17                Encyclopedia
d-----        26.07.2022     21:17                Plugins
-a----        23.07.2022      3:11        2848180 changelog
-a----        23.07.2022      3:11        5913600 Far.exe
-a----        23.07.2022      3:11           1430 Far.exe.example.ini
-a----        23.07.2022      3:11       10262838 Far.map
vM ★★
()
Ответ на: комментарий от kaldeon

font/fixed/unicode.10x20.font решил проблему с кириллицей у меня (ввод/отображение) в линуксовом bash.

Скажи, можно ли функцию СКМ переназначить на ПКМ? Просто, ПКМ легче жмётся, а всё равно бездействует. Допускаю правку исходников (знать бы где), т.к. plan9 сам компилял.

netrium
() автор топика

Странно, что про Kitty никто так и не написал. Он так умеет.

Ещё так умеет Konsole, но с костылём, который внезапно отключается. Костыль выглядит так:

if [[ ! $PS1 =~ 133 ]] ; then
    PS1='\[\e]133;L\a\]\[\e]133;D;$?\]\[\e]133;A\a\]'$PS1'\[\e]133;B\a\]' ;
    PS2='\[\e]133;A\a\]'$PS2'\[\e]133;B\a\]' ;
    PS0='\[\e]133;C\a\]' ;
fi

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

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

Возможно, это добавили в определённой версии того же Kitty. Сейчас у меня Kitty 0.36.3. Но оно у меня работало и в более старых версиях.

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

Допускаю правку исходников

Возможно, здесь: https://github.com/9fans/plan9port/blob/a2567fca/src/cmd/9term/9term.c#L252

Нужно поправить 2 на 4. Но я не проверял.

В девятке повсюду трёхкнопочная мышь и кнопки ЛКМ СКМ ПКМ называются B1 B2 B3.

Почему-то есть cut, но нет copy.

copy = snarf

В 9term ещё реализованы аккорды Acme для вырезания/копирования: 1.

Остальные опции:

  • plumb - plumber. Если запустить plumber (прям так), нажать на HTTP-адрес и потом нажать plumb, то ссылка будет открыта в браузере. В этом смысл пламбера - выполнять действия исходя из формата входных данных. В составе p9p есть дефолтный набор правил, который можно посмотреть командой 9p read plumb/rules.
  • look - поиск
  • scroll - будет ли терминал скроллиться, если вывод команды большой
  • cook - какой-то хак, специфичный для p9p. Не знаю что он делает, но это описано в man 1 9term.

В целом, если интересует работа с терминалом как с текстовым редактором, есть хорошая демонстрация Acme от бывшего разраба девятки: 2.

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

Действительно. Скачал https://github.com/kovidgoyal/kitty/releases/download/v0.37.0/kitty-0.37.0-x86_64.txz и можно клацать мышью в любое место. Спасибо. У меня в репозитории была старая версия.

Хотя, замечаю, что есть некоторая задержка перед появлением курсора в место тыка. Вырезать выделенный текст нельзя (но и в ConEmu нельзя, только в warp можно). Как альтернатива - быстрое удаление (удаление по словам) слева от курсора по Ctrl+W. Ctrl+W мне не удобно, я переделал на правый Ctrl+Backspace, добавив в .inputrc:
"\C-H": backward-kill-word

Konsole у меня, наверное, тоже старый. Я добавлял хак для него в .bashrc

netrium
() автор топика
Ответ на: комментарий от kaldeon

Спасибо полезную за инфу.

Нужно поправить 2 на 4

Да, это оно. Но этого недостаточно. Контекстное меню открывается, но записи не видны (просто зелёный прямоугольник). Ну, да ладно.

netrium
() автор топика