Поиск…


Вступление

Обновление сопоставлений ключей Vim позволяет решить два типа проблем: переустановка команд ключа на более запоминающиеся или доступные буквы и создание ключевых команд для функций, которые не имеют ни одного. Здесь вы узнаете о различных способах [re] map key commands и контексте, к которому они применяются (т.е. vim-режимы)

Основное картографирование

карта Обзор

Последовательность клавиш может быть повторно отображена на другую последовательность клавиш, используя один из вариантов map .

Например, следующая типичная map выйдет из режима Insert, когда вы быстро нажмете j k :

:inoremap jk <Esc>

Оператор карты

Существует несколько вариантов :map для разных режимов.

команды Режимы
:map :noremap :unmap Нормальный, визуальный и режим ожидания от оператора
:map! , :noremap! , :unmap! Вставка и режим командной строки
:nmap :nnoremap :nunmap Нормальный режим
:imap :inoremap :iunmap Вставить и заменить
:vmap :vnoremap :vunmap Режим визуализации и выбора
:xmap :xnoremap :xunmap Визуальный режим
:smap :snoremap :sunmap Выбрать режим
:cmap :cnoremap :cunmap Режим командной строки
:omap :onoremap :ounmap Режим ожидания оператора

Обычно вы должны использовать варианты :noremap ; он делает отображение неустойчивым к переназначению и рекурсии.

команда map

  • Вы можете отображать все сопоставления, используя :map (или один из вариантов выше).
  • Чтобы отобразить текущее сопоставление для определенной последовательности клавиш, используйте :map <key> где <key > - это последовательность ключей
  • Специальные клавиши, такие как Esc , отображаются с использованием специальной нотации <> , например <Esc> . Полный список кодов ключей см. На странице http://vimdoc.sourceforge.net/htmldoc/intro.html#keycodes.
  • :nmapclear - Очистить все карты нормального режима
  • :nunmap - Отменить отображение карты нормального режима
  • Вы можете настроить максимальное время между клавишами последовательности, изменив переменные timeout и ttimeout

Примеры

  • imap jk <Esc> : ввод jk в режиме вставки приведет вас в нормальный режим
  • nnoremap tt :tabnew<CR> : ввод tt в обычном режиме откроет новую вкладку
  • nnoremap <Cj> <Cw>j : ввод <Cj> в нормальном режиме заставит вас перейти к окну внизу и влево
  • vmap <Cc> \cc : ввод <Cc> в визуальном режиме выполнит команду \cc (команда NERDCommenter, чтобы прокомментировать строку). Поскольку это зависит от сопоставления плагинов, вы не можете использовать :vnoremap здесь!

далее здесь

Сочетание клавиш карты

Ключ лидера может использоваться как способ создания сопоставления с привязкой ключа, который может быть переопределен конечным пользователем.

По умолчанию лидером является \ key. Чтобы переопределить его, конечный пользователь должен был бы выполнить :let g:mapleader='somekey(s)' перед определением отображения.

В типичном сценарии, mapleader установлен в .vimrc , а плагины используют <Leader> в ключевой части своих сопоставлений, чтобы настроить их.

В плагине мы будем определять сопоставления с:

:nnoremap <Leader>a somecomplexaction

Это сопоставило бы действие somecomplexaction с комбинацией клавиш \ + a .

Действие без лидера не меняется.

Также возможно использовать <Plug>Mappings чтобы оставить больше места для настройки привязок плагинов.

Иллюстрация основного сопоставления (Handy shortcuts).

В большинстве текстовых редакторов стандартным ярлыком для сохранения текущего документа является Ctrl + S (или Cmd + S на macOS).

У Vim эта функция по умолчанию отсутствует, но ее можно сопоставить, чтобы упростить задачу. Добавление следующих строк в файл .vimrc выполнит задание.

nnoremap <c-s> :w<CR>
inoremap <c-s> <c-o>:w<CR>

Команда nnoremap команду Ctrl + s :w (записать текущее содержимое в файл), тогда как команда inoremap отображает команду Ctrl + S to :w и возвращается в режим вставки ( <co> переходит в обычный режим для одной команды и после этого возвращается в режим вставки, не изменяя позицию курсора, которую не могут обеспечить другие решения, такие как <esc>:w<cr>a ).

Так же,

" This is commented, as Ctrl+Z is used in terminal emulators to suspend the ongoing program/process.
" nnoremap <c-z> :u<CR>

" Thus, Ctrl+Z can be used in Insert mode
inoremap <c-z> <c-o>:u<CR>

" Enable Ctrl+C for copying selected text in Visual mode
vnoremap <c-c> <c-o>:y<CR>

PS: Однако следует отметить, что Ctrl + S может работать не так, как ожидалось при использовании ssh (или PuTTY). Решение этого вопроса не входит в объем этого документа, но можно найти здесь .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow