Действительно ли возможно выбрать вкладки как вкладки с мышью в urxvt?

$ set globstar
$ cp /source/dir/**/* /destination/dir/

Первая строка включает рекурсивное ** globbing в Bash (не необходимый в Zsh).

3
26.08.2017, 04:18
2 ответа

Я не знаю ни о каком терминале, который делает, и я просто скажу, почему я не думаю, что любой терминал делает:

tab один из многих символов, которые когда-то отобразили выводы больше чем один символ на экране или перемещают курсор. CR (перемещаются в начало строки), LF (вниз), возвращаются (слева) и все escape-последовательности, которые перемещают курсор или изменяют атрибуты символов и/или ничего не отображают...

urxvt даже не добирается точно что выводы приложения. Когда приложение отправит LF (\n) ведомой стороне псевдотерминала, Вы заметите, что большую часть времени это только спускает курсор, как LF обычно делает, это также кладет обратно его к запуску строки. Поэтому драйвер имущества переводит "\n" в "\r\n" прежде, чем сделать это доступным для чтения из основной стороны терминала urxvt (можно использовать stty для изменения того поведения).

Также обратите внимание, что выбор не получит конечные пробелы.

X выборов выбирают символы, которые отображены, не те, которые были отправлены приложением (приложениями) для генерации того дисплея (полагайте, что любой символ в любой данной позиции по экрану, возможно, несколько раз переопределялся одним или несколькими приложение (приложения)).

Некоторые терминалы, хотя позволяют получать все символы, которые они получают на основной стороне псевдотерминала, и если они не делают, можно использовать "сценарий" или "экранировать", чтобы сделать это вместо этого. Но получить вывод приложения в X выборов, можно также просто сделать:

the-command | xsel
1
27.01.2020, 21:32

Das Thema ist gelegentlich mit verschiedenen Terminalemulatoren aufgekommen. Die Diskussion in Debian #259828 xterm: Leerzeichen nach Tabulatoren, die als Leerzeichen in Auswahlen dargestellt werden (für xterm) hatte diesen Kommentar vom Entwickler von urxvt:

Ich dachte darüber nach, dies in rxvt-unicode zu implementieren: Tabs könnten dargestellt werden trivial in der Datenstruktur von rxvt-unicode. Es gibt jedoch semantische Probleme:

Tabs sind keine Zeichen, sondern Cursorbewegungen. Daher gibt es keinen guten Weg um sie als Tabulatorzeichen darzustellen, genau wie "Cursor nach oben" oder "Zu 5",6" будет не быть представленным в выделенном тексте.

и продолжил (по сути), что urxvt поддерживает эту функцию:

Если кого-то это волнует, вот как rxvt-unicode-3.8 реализует символы HT теперь, плюс некоторый первоначальный опыт по эффектам.

Когда rxvt-unicode-3.8 получает HT, он сначала вычисляет движение табуляции (что является относительным движением курсора). Iff все символы пропущены являются пробелами с теми же атрибутами, что и первый пробел, он заменит Эти пробелы (очень) широким символом табуляции (что легко сделать в способ, которым rxvt-unicode обрабатывает широкие символы, поэтому изменения кода были ограничены до менее 15 строк в рамках метода scr_tab). Если какой-либо из символов не являются пробелами, или, если есть изменения атрибутов (например, цвет), это будет только переместите курсор.

Конечно, urxvt 3.8 давно вернулся. Но рассмотрим проблемы application, которые мешать:

  • только сам терминал должен поддерживать эту функцию (хранить вкладки-как-и позволяют выбирать их),
  • терминал должен делать правильные вещи, когда вкладка попадает в нужное поле (этот отчет об ошибке отмечает случаи, которые этого не сделали),
  • терминал должен быть настроен на использование жестких вкладок (см. stty настройку для этого),
  • приложения (и библиотеки, такие как ncurses) должны быть настроены на использование жестких вкладок, и
  • приложения, такие как screen/tmux, должны (снова) управлять вкладками как вкладками, чтобы при рисовании и перекрашивании экрана они отправлялись в терминал в виде вкладок.

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

Быстрая проверка с urxvt 9.15 показывает мне, что функция по-прежнему работает (в простейшей конфигурации, конечно):

$ /tmp/foo
hello   .   world
00000000  68 65 6c 6c 6f 09 2e 09  77 6f 72 6c 64 0a        |hello...world.|
0000000e
$ cat /tmp/foo
printf 'hello\t.\tworld\n' |xclip
hd

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

0
27.01.2020, 21:32

Теги

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