Подтвердить что ты не робот

Карта shift-tab в vim для обратной вкладки в Vim

Я сделал несколько поисков и нашел множество информации о привязке ключей в vim, но я не могу точно узнать, как сопоставить shift-tab. Или какую команду мне нужно сопоставить, чтобы он "переместил назад".

Это то, что у меня есть на данный момент:

map <S-tab> <S-,><S-,>

Возможно релевантная информация: Я запускаю Debian с Terminal 2.22.3. с VIM-Vi IMproved 7.1

4b9b3361

Ответ 1

У Vim уже есть встроенные команды клавиш для режима вставки, чтобы сдвинуть текущую строку влево или вправо &shiftwidth. Они (в режиме вставки):

Ctrl-t: shift right (мнемоническая вкладка)

Ctrl-d: сдвиг влево (мнемонический "de-tab" )

Если вы все еще хотите использовать shift-tab, вот как вы это делаете:

" for command mode
nnoremap <S-Tab> <<
" for insert mode
inoremap <S-Tab> <C-d>

Ответ 2

Отладка, почему shift-tab в vim не выполняет обратную вкладку в Vim

Если вы поместили код inoremap <S-Tab> <Cd> в ваш .vimrc а vim по-прежнему не отвечает в режиме вставки, то это означает, что ваша Shift-tab перехватывается, сожрается и игнорируется где-то в опасной поездке из 4 частей. между вашей клавиатурой и VIM. Оставайтесь морозными, чтобы выяснить, где ваша Shift-Tab становится бесшумной.

Четыре этапа Shift + Tab между клавиатурой и vim

Клавиатура → Операционная система

Первым шагом на пути нажатия клавиш является операционная система, которая перехватывает все ключи и останавливает некоторые из них для выполнения действий для операционной системы. Например, Alt+Tab что часто означает "изменить фокус текущего окна на следующее". Если вы отправите Alt+Tab в vim, vim не ответит, потому что операционная система его поглотила. Вы должны найти эту область сопоставления клавиш в вашей операционной системе. Windows, Mac и Linux отличаются друг от друга, и у них есть разные программы, которые управляют тем, какие ключи перехвачены, а какие - приложениям. Найдите эту область и убедитесь, что ваша Shift+tab настроена на пропуск через терминал, который вы используете.

Операционная система → Терминальное приложение

Шаг 2 предполагает, что ОС позволила вашей Shift+Tab пройти через ваше терминальное приложение, которое имеет фокус. Ваше терминальное приложение должно иметь опцию меню конфигурации (большинство из них имеют более одного, которые сражаются друг с другом) в меню "Настройки" → "Ярлыки" или "Настройки → раскладки клавиш". Существуют сотни терминальных приложений, и у каждого есть разные идеологии, для которых нажатия клавиш можно перехватывать и поглощать и выполнять какие-то действия, встроенные в приложение, или которые передаются в оболочку. Найдите эту область и убедитесь, что вашей Shift+tab разрешено проходить.

Терминальное приложение → ваша оболочка

Шаг 3 предполагает, что ваше приложение Terminal разрешило Shift+Tab проходить в оболочку. Существует область, которая определяет, какие комбинации клавиш перехватываются для выполнения действий над оболочкой, которые передаются приложению, находящемуся спереди. Для меня это inputrc но Mac и Windows имеют разные области. Вам нужно будет найти этот файл и очистить все, что может сожрать вашу Shift+Tab и стереть это, или добавить правило, которое говорит, что пройти.

Shell → vim

Теперь мы находимся на уровне Vim, где .vimrc может слышать, перехватывать или ретранслировать Shift+Tab на следующий шаг в цепочке команд и делать все, что угодно, пока он это делает. Vim имеет ключевое слово map которое контролирует это.

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

Отладка инструкций цепочки, чтобы изолировать, где находится ваша Shift+Tab:

  1. Убедитесь, что ваша ОС не поглощает вкладку Shift + и не выполняет никаких действий. Попробуйте другое приложение, такое как Eclipse, Browser или Notepad, и посмотрите, выполняет ли Shift + Tab какое-либо действие. Если это так, то ОС, вероятно, проходит через вашу Shift+tab без изменений для приложений.

  2. Убедитесь, что ваше терминальное приложение может получать и получает Shift+Tab. Проверьте это, перейдя в настройки → Ярлыки и сотрите любую раскладку клавиш, имеющую Shift или Tab в имени, затем создайте новую раскладку клавиш, которая перехватывает Shift+tab и выполняет некоторые простые действия, например, new tab не имеет значения. Сохраните его, поместите фокус в терминал и нажмите его, если появляется новая вкладка, то терминал может слышать и отвечать.

  3. Убедитесь, что ваш терминал проходит через Shift + Tab для оболочки. Удалите все, что пахнет Tab или Shift в Настройках → раскладки клавиш и Настройки → Ярлыки. Действие по умолчанию (должно быть) ничего не делать и пройти.

  4. Откройте любую другую программу оболочки, такую как nano, ed или emacs. Если какой-либо из них выполняет какое-либо действие, когда вы нажимаете Shift + Tab, то вполне вероятно, что терминал проходит через Shift + Tab для vim.

  5. На данный момент мы знаем, что vi/vim получает Shift + Tab, но не отвечает на него. Чтобы изолировать проблему, .vim все ваши файлы конфигурации vim, такие как .vimrc, .profile и все, что находится в .vim. Проблема может быть даже с vim или в /etc Вы запускаете vanilla vim с помощью vim -u NONE и убедитесь, что вы используете vim. Поведение Vim по умолчанию - прямой проход. Так что, если Shift + Tab ничего не делает, то ошибка в vi.

  6. Удалите vim с пустыми конфигурационными файлами/каталогами и переустановите. Если это не работает, то ваша операционная система прослушивается. Переустановите операционную систему. Если это не работает, выбросьте компьютер в мусорное ведро.

Ответ 3

С вкладками Vim можно использовать следующие параметры:

map <TAB> <ESC>gt<CR> 
map <S-TAB> <ESC>gT<CR>