Я люблю rxvt-unicode. Это делает все те вещи, но не по умолчанию. Это имеет много опций времени компиляции, одна из которых является встроенным жемчугом для расширения его с помощью дополнительной функциональности, такой как вкладки. Это имеет клиент-серверную архитектуру также. Один основной экземпляр работает выполненный несколько терминальных сеансов в различных окнах. Я на самом деле не использую окна с вкладками, я предпочитаю использовать функции менеджера окон для получения того же эффекта.
Получение прозрачности необходимо на самом деле запускать составляющий композит менеджер окон. Приложениям не придется иметь дело с ним. Но urxvt может, если Вы должны. Это использует X свойств. Для получения прозрачности устанавливает это:
urxvt.background: rgba:0000/0000/0000/dddd
Поскольку имя подразумевает, что это - также unicode терминал (может отобразить UTF-8 непосредственно), таким образом, можно также видеть символы и международные буквы в том же терминале
Я думаю, что Вы подняли столкновение культур, вызванное техническим ограничением. Так как Shift+Space генерирует тот же вывод как Пространство, модель терминала Unix рассматривает их тождественно. Для различения эти два Вам нужна среда программирования, которую поддержки настраивают / ключ вниз события. Это возможно в X11 и в эмуляторах терминала то переотображение поддержки ключи. Пример переотображения Shift+Space к PageUp:
# For [u]rxvt, in ~/.Xdefaults:
URxvt.keysym.Shift-space: \033[5~
В эмуляторах терминала эта функция нарушала бы ввод текста в верхнем регистре со вставленными пробелами при удерживании клавиши Shift. Например. если вы хотите ввести «Это название», вам придется отпустить Shift между «А» и «Т». Если удерживать ее нажатой, курсор сдвинется с места, а остальная часть того, что вы набираете, переместится неправильно. Я считаю, что это будет намного больше раздражать, чем то, что вы получаете с функцией прокрутки вверх.
Обычное поведение при вводе текста и прокручивании вверх всякий раз, когда пробел прокручивается вниз, потребовал бы редизайна и тесного сотрудничества со стороны приложений (например, приложение могло бы переключать то, что отправляет Shift + пробел), я почти уверен, что этого не произойдет. произойдет.
Ключевое отличие состоит в том, что приложение с графическим интерфейсом знает «контекст», редактируете ли вы или просматриваете контент, эмуляторы терминала не имеют возможности узнать об этом.
Эмуляторы терминала отправляют один и тот же символ после пробела и Shift + пробела . В противном случае было бы неудобно набирать текст, удерживая клавишу Shift (см. ответ @ egmont , который расширяет этот аргумент).
Однако вы можете обойти это, сопоставив Shift + Space с последовательностью символов, которая в конечном итоге приведет к вставке пробела по умолчанию, и для которой вы можете настроить такие приложения, как меньше
] для прокрутки вверх при таком нажатии клавиши.
Например, такой последовательностью может быть `
DEL
SPC
(измените DEL
на BS
в системах, где BS является удалить
символ).
Для xterm
добавьте ресурс:
XTerm.VT100.translations: #override \
Shift <KeyPress> space: string("`") string(0x7f) string(" ")
И настройте less
с помощью:
printf '%s\n' '#command' '`\177\40 back-screen' | lesskey -
less
в настоящее время не поддерживает это, но определенно можно было бы добавить .
Если программа использует управляющую последовательность xterm для установки modifyOtherKeys
к 2 письменно \e[>4;2m
на терминал, затем xterm
аннотирует клавиши дополнительной информацией о том, какие клавиши-модификаторы активны. В частности, для клавиши Пробел с активным modifyOtherKeys
в xterm Shift + Пробел превращается в \e[27;2;32~
. less
должен правильно интерпретировать это как Shift + Пробел , а затем запустить прокрутку вверх.
Хотя это определенно будет работать в xterm, это будет работать не во всех терминальных приложениях. Но те терминалы, которые не распознают эту escape-последовательность для включения modifyOtherKeys
, просто проигнорируют эту escape-последовательность и продолжат посылать программам обычный символ пробела, когда вы нажимаете Shift + Пробел .
На веб-сайте xterm есть довольно подробная страница, объясняющая, как рассчитываются коды modifyOtherKeys
:https://invisible-island.net/xterm/modified-keys.html
xterm -xrm 'XTerm.VT100.translations: #override Shift <KeyPress> space: string(0x2)'
в xterm, например, или Вы отправляете ту же последовательность, как отправлено на<PageUp>
). Конечно, это сделало бы вводящий текст при содержании неловкой клавиши Shift. – Stéphane Chazelas 28.08.2013, 23:21