Екран Bash vs. Gnu: Замініть Ctrl-A на Ctrl-Shift-A


44

Я новий користувач GNU Screen. Я використовую Bash дуже давно, і хочу спробувати GNU Screen.

Як відомо, GNU Screen використовує "Ca" (Control-A) як командний символ. Проблема полягає в тому, що це заважає функції редагування рядків у Bash (та GNU Readline), оскільки Control-A на Bash переміститься до початку рядка ".

Я знаю, що я можу встановити символ команди на іншу послідовність клавіш , наприклад "^ Q" або "` `" (Backtick), але у мене виникли проблеми з пошуку іншої послідовності ключів, яка ще не використовується (^ Q використовується терміналом , backtick використовується при написанні скриптів оболонки). Здається, що символом команди може бути довжина лише одного або двох символів. Чи можна встановити символ керування екраном GNU таким, як "Control-Shift-A"?

(Я ще не можу використовувати більше одного гіперпосилання, тому я не можу посилатися на документацію Bash)


5
Для того, щоб не дезорієнтуватись під час використання screenв інших системах, вам, можливо, краще буде дотримуватися типових вкладень клавіатури або принаймні вивчити їх спочатку. ^A aза замовчуванням надсилатиме звичайне ^Aкомбінацію клавіш. Це трохи незручно, якщо ви багато використовуєте комбо; Зазвичай я використовую HOMEключ замість цього. Але тоді це також не завжди працює.
інтуїтивно

Тут немає любові до Ctrl-простору. Чудово працює.
Wildcard

Відповіді:


18

Проблема з Control- Shift- Aполягає в тому, що більшість програм емуляції терміналів не надсилають інший код для цього, ніж той, який надсилає Control- A, тому екран не міг би визначити різницю.

Ви можете використовувати Cq, якщо stty -ixonвідключити "управління потоком програмного забезпечення" на tty. Я зазвичай роблю це, щоб я міг використовувати Cs для пошуку в командному рядку.

Ви можете розглянути C- ^, оскільки, здається, це зазвичай незв'язане. На клавіатурах США це Control- Shift- 6, але на інших макетів це може бути важко.

Більшість людей ніколи не використовують контрольний символ Tty C- \ для надсилання SIGQUIT. Щоб скористатися ним, відключіть функцію tty за допомогою stty quit undefі зв’яжіть її як свій префікс-ключ. Це трохи ризиковано, оскільки якщо ви натиснете C- \ на tty, де клавіша виходу не була відключена із stty , ви можете вбити процес переднього плану замість активації екрана .

Я перейшов на tmux деякий час тому. За замовчуванням - Cb, оскільки він був розроблений під екраном і не заважав екрану за замовчуванням . Я виявив, що Cb працює досить добре для мене (я зазвичай використовую клавіші зі стрілками для руху одного символу в командному рядку оболонки - хоча я використовую Mb та Mf для переміщення словами).

До речі, автор tmux використовує Ca у своїх первинних сесіях і завжди набирає Ca двічі (будь то в сесії tmux чи ні). Якщо ви готові прийняти цю звичку, це здається пристойним компромісом, оскільки другий Са повинен бути неоперативним у більшості редакторів, подібних до редагування Emacs. Це не вийде, якщо ви часто використовуєте програми / контексти поза екраном, де другий Ca не був би неоперативним.

За замовчуванням Ca Ca прив’язаний до іншої команди (переключення на останній останній екран) на екрані . Щоб Ca Ca надсилав фактичний Ca і перемикав вікна Ca o, поставте у своєму .screenrc:

escape ^A^A
bind o other

2
Це добре звучить, тоді я зрозумів, що на екрані GNU введення Ca двічі переключиться на вікно, що відображалося раніше. Можливо, я можу зіставити "Ca Ca" на щось інше, хоча я не дуже впевнений, як це зробити (Схоже, для цього потрібно вказати "escape xy" або "meta"). Див. Gnu.org/software/screen/ manual / screen.html # Other-Window
Стефан Ласєвський

1
@Stefan Lasiewski: На жаль, я забув, що Ca Ca за замовчуванням не надсилає Ca. Дивіться додаток в кінці відповіді щодо трохи конфігурації, яка змушує Ca Ca надсилати Ca і Ca o перемикатися на попереднє вікно.
Кріс Джонсен

Чудово працює! Ca Ca надішле фактичний Са до базової оболонки, а Ca o 'перейде у вікно' other '. Щоб надіслати "Ca" до Bash, натисніть "Ca" двічі. Це повинно бути без використання екрана, і не повинно створювати проблем.
Стефан Ласєвський

41

Немає потреби у вирішенні проблем.
Щоб перейти до початку рядка під час використання екрана в bash, використовуйте

Control- A(відпустіть і потім)A


Загалом, якщо символ керування екраном конфліктує з ярликом bash, спочатку ярлик bash Controlбуде замінено на Control-A

Так само і для інших ярликів редагування рядків.


дякую, я цього не зробив зараз, хоча це так просто. насправді нічого не потрібно переналаштовувати. мені найкраще подобається ваша відповідь.
Харальд

+1 ty - це, безумовно, найкращий варіант. Смішна річ, намагаючись це виправити, я потрапив у Ca Ca випадково і знайшов ще одне чудове комбо.
kfmfe04

3

Я використовую C- \ для екрана, і не можу його рекомендувати достатньо. Ви можете потрапити на будь-яке інше ключове визначення про аварію, але, як правило, C- \. Ось що мені подобається в цьому.


3

Я цим користуюся.screenrc

escape ^bb

Приклад: для від'єднання введеного тексту ctrl-b d


0

Я використовую ctrl-_ (який також може бути створений ctrl + 7 і, як правило, ctrl + /) з екраном / tmux.


0

Я використовую ctrl-z більшу частину часу, але також використовую ctrl-x для деяких. Я не використовую переривання "стоп" настільки сильно, але коли це потрібно, я можу набрати ^ zz. Це також дозволяє мені запускати вторинні екранні сеанси на віддалених серверах, які використовують ctrl-a за замовчуванням. І якщо я запускаю третій сеанс (на третьому сервері), то я можу використовувати ctrl-x. Ctrl-x - це функція блокування екрана, яка у багатьох середовищах не є звичайною (оскільки екран часто працює всередині емулятора терміналу).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.