Редактор Nano: являются ли KTRL Keybindings на самом деле радужки?

Я рекомендую pushd и popd .

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

Они эффективно реализуют структуру стека / LIFO, где вы PUSH каталог ( pushd ), а следующая команда каталога POP ( popd ) извлекает его.

Итак, находясь внутри каталога, вы должны:

pushd .

И когда вам нужно его получить, вы делаете

popd

Вы можете выполнить несколько pushd (s) и выполнить соответствующие popd (s) позже, чтобы вернуться в каталоги.

Я оставлю здесь ссылку.

http://www.eriwen.com/bash/pushd-and-popd/

1
28.09.2018, 12:46
2 ответа

Виртуальный терминал, на котором вы используете nano, создан по образцу физических последовательных терминалов прошлых десятилетий. По соглашению, эти терминалы выдавали управляющие коды ASCII, когда буквенная клавиша или одна из клавиш с метками @, [, \, ], ^, _нажимались вместе с клавишей Ctrl. ключ. Выданный управляющий код имеет код ASCII кода буквы, вычтенный из 64. Таким образом, нажатие Ctrl-Mдает код ASCII M (0x53 ), вычтенный из 0x40 = 0x13, который является кодом возврата каретки. Клавиша возврата также производит возврат каретки, потому что это функция клавиши.

1
27.01.2020, 23:31

Это не виртуальные коды клавиш.

Вы используете терминал.

Терминалы работают с простым 8 -битным, иногда даже 7 -битовым потоком символов. Для всего, что знает приложение TUI, такое как nano, есть последовательный порт, два модема, PSTN и честный от -до -DEC VT525 между вами и этим. Все , что он видит, это этот поток символов, файловый дескриптор терминального устройства, TERMпеременная окружения и запись в базе данных terminfo.

В этом потоке символов нет такой вещи, как модификатор управляющей клавиши для буквенной клавиши. Когда вы пишете bind ^Mпрограммное обеспечение на самом деле понимает, что в качестве привязки символ номер 13 . Именно так программное обеспечение должно работать внутри, потому что это фактическая модель ввода-вывода терминала, с которой оно должно работать. ^M— это артефакт программного синтаксического анализатора команд, способ обозначать символ номер 13 в командах конфигурации, которые вы вводите.

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

% printf '\x08\x0d' | vis -w ; echo
\^H\^M
%

Кроме того, здесь нет кодов виртуальных клавиш. Все переводы, вызванные и #x2388; Клавиша-модификатор Control происходит в вашем терминале или эмуляторе терминала до того, как символы будут переданы по виртуальному или реальному )проводу (.

Так уж получилось, что ваш терминал выдает символы #8 (& #x2408;)для и #x2388; Управление + H и & #x232b; Backspace и символ 13 (и #x240D; )для и #x2388; Управление + M и Введите . Это полностью зависит от терминала/эмулятора терминала. Во многих эмуляторах есть какая-то карта клавиатуры, где это можно изменить. Для добросовестных ТН DEC на самом деле существует последовательность управления выходом, DECBKM, которая переключает и #x232b; Backspace между символом отправки #8 и символом отправки #127 (DEL ).

Дальнейшее чтение

1
27.01.2020, 23:31

Теги

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