1

Иногда при переключении между режимами в Vim я забываю убрать палец с клавиши Shift . Эта невинная ошибка, вероятно, является частью багажа, перенесенного с других терминалов, но я никогда не видел, чтобы мой вклад рассматривался таким образом.

После перехода из командного режима в режим ввода, если я нажму клавишу Esc, когда клавиша Shift нажата, Vim будет отображать <9b> (Control Sequence Introducer) вместо переключения в командный режим.

По крайней мере, два обходных пути для этого предполагаемого поведения доступны на мятном сайте (часто задаваемые вопросы, проблема).

" Avoiding escape timeout issues in vim
:let &t_ti.="\e[?7727h"
:let &t_te.="\e[?7727l"
:noremap <Esc>O[ <Esc>
:noremap! <Esc>O[ <Esc>

" Remap escape
:imap <special> <CSI> <ESC>

Мой вопрос о синтаксисе и значении первого решения. Судя по всему, t_ti присваивается литеральное значение, но я не уверен, зачем нужен оператор "c address-of". Я также не уверен, почему есть два оператора noremap .

1 ответ1

3

t_ti и t_te - оба варианта Vim. Значения , как правило , возложенные на них, :set команды, :set t_ti=abcde где правая часть abcde в данном примере) является символьной строкой. Команда :let более гибкая, чем :set и ее можно использовать для установки значений других типов переменных, кроме параметров. Чтобы отличать параметры от других типов переменных в этом контексте, Vim добавляет префиксы к именам параметров с помощью & . Увидеть

:help options
:help :let-&

Из второй ссылки вы также можете видеть, что оператор .= Добавляет строку аргумента к переменной слева.

Команда :noremap применяется к сопоставлениям в режимах Normal, Visual и Operator-pending. The :noremap! Команда применяется к сопоставлениям во всех других режимах: Вставка и Командная строка. Увидеть

:help :map
:help :map!
:help mapmode-nvo
:help mapmode-ic

Вся документация Vim по отображению находится в файле map.txt, который можно найти по :help map.txt . Хотя документация Vim в целом очень хорошая, я нахожу этот конкретный раздел трудным для понимания. Эти разделы могут быть более понятными:

:help 05.3
:help 40.1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .