Как сопоставить ключи в Vim

Kak Sopostavit Kluci V Vim



В Vim сопоставление клавиш — это процесс назначения набора клавиш или команд определенной клавише для выполнения определенной задачи. Например, чтобы выбрать все строки в файле, вы используете команду ggVG команда, и для этого вам нужно нажать четыре клавиши. А как насчет того, чтобы сделать это одним нажатием клавиши? Вот тут-то и пригодится сопоставление клавиш Vim. Сопоставление клавиш — это способ автоматизации многих часто выполняемых задач в Vim. И вы, должно быть, слышали об этом; если вы делаете что-то более двух раз, автоматизируйте это!

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

Синтаксис

Для сопоставления ключа в Vim используется следующий синтаксис:







<режим>карта <аргументы> <левая сторона> <правая сторона>



В приведенном выше синтаксисе:



<режим>карта nmap, imap, vmap, xmap, cmap или omap
<аргументы>* <тихий>, <буфер>, <скрипт>, <специальный>, <выражение> и <уникальный>
<слева> Левая часть содержит ключ или набор ключей, которые нужно сопоставить.
<правая сторона> Правая часть содержит набор клавиш или команд, которые будут выполняться левыми клавишами.

По сути, — это ключ или набор ключей, которые будут выполнять команды или операции с .





*В приведенном выше синтаксисе раздел является необязательным.

Специальные аргументы Vim

Специальные аргументы Vim — это теги, используемые для придания дополнительных функций раскладкам клавиатуры. Эти аргументы появляются после команды :map и перед {rhs} и {lhs}.



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

:карта < буфер > < С-а > ggVG
<молчит> Чтобы подавить отраженные сообщения из раскладки клавиатуры
<буфер> Чтобы сделать карту специфичной для буфера (уникальной для текущего буфера)
<скрипт> Чтобы указать, что карта является частью скрипта или плагина.
<специальный> *Он используется для определения специальных клавиш для сопоставления с использованием обозначения <> (функциональные клавиши, клавиши управления, сдвига и другие неалфавитные клавиши).
<выражение> Это указывает на то, что левая часть отображения является выражением и его необходимо вычислить, чтобы получить правую часть.
<уникальный> Сделать карту уникальной среди локальных и глобальных карт.
<ноуэй> Чтобы пропустить ожидание следующего командного символа на карте

Специальные обозначения клавиш Vim указаны на следующем изображении.

Например, если вы хотите использовать клавишу пробела при сопоставлении клавиш, будет использоваться нотация <Пробел>.

Создание базовой раскладки клавиатуры в Vim

Давайте разберемся с сопоставлением клавиш Vim на простом примере. Я хочу сопоставить команду выбора всех строк ( ggVG ) к Ctrl+А ключи. Чтобы сопоставить клавиши Ctrl+A, я запустил в Vim следующую команду.

:карта < С-а > ggVG

Здесь, <С-а> означает Ctrl и а ключи, в то время как ggVG — команда выбора всех строк в файле. :карта Ключевое слово по умолчанию предназначено для отображения в обычном режиме, однако :nmap также может быть использован явно для нормальный режим.

Аналогично, чтобы сопоставить функциональность переключения номеров строк с помощью Ф1 ключевое использование:

:карта < Ф1 > :установить номер !

Теперь при нажатии клавиши F1 номер строки будет включен, а повторное нажатие отключает его.

Обратите внимание, что этот метод сопоставляет только ключи в текущем буфере и будет удален после закрытия буфера.

Перечисление раскладок клавиш

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

:карта

Чтобы просмотреть сопоставление клавиш вставлять и командная строка режимах используйте :map! Команда.

:карта !

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

:nmap Для отображения карт обычного режима
:изображение Отображение карт режима вставки
:vmap Для отображения карт визуального элемента и выбора режима
:smap Для отображения карт выбранного режима
:xmap Для отображения карт визуального режима
:cmap Для отображения карт режима командной строки
:омап Для отображения карт режима ожидания оператора

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

: подробная карта

Для конкретного ключа просто укажите ключ в команде ( :verbose карта <ключ> ).

Создание постоянных раскладок клавиш

Раскладки клавиш, упомянутые в разделе выше, будут отображать клавиши только в текущем буфере. Чтобы сделать сопоставления клавиш Vim постоянными, их необходимо поместить в файл vimrc.

Обратите внимание, что при размещении раскладки клавиатуры в вимрк файл, не ставьте двоеточие (:) перед карта команда.

После размещения раскладки клавиатуры в вимрк файл, сохраните и закройте его с помощью команды :wq или клавиш Shift+zz. Раскладки клавиш, размещенные в вимрк файл будет глобальным и может использоваться во всех сеансах Vim. Однако некоторые раскладки клавиш можно временно отключить, если они влияют на работу в текущем сеансе, см. раздел «Как удалить раскладку клавиатуры в Vim» ниже.

вимрк — это файл настроек Vim, содержащий различные команды и настройки. Он присутствует в /usr/доля/vim/ каталог на macOS и /etc/вим на Линуксе. Важно отметить, что вимрк файлы в упомянутых каталогах являются системными файлами. Вы также можете редактировать эти файлы для сопоставления клавиш, но я бы рекомендовал создать пользовательский файл. вимрк файл в домашнем каталоге.

Как избежать рекурсии

Прежде чем двигаться дальше, важно узнать о рекурсии в сопоставлении клавиш Vim. Его недостатки и как их предотвратить. Это можно понять на примере.

:карта дд 3jdd

В приведенном выше примере я сопоставил дд клавиши для перемещения вниз на 3 строки и удаления строки под курсором. Теперь, когда я нажимаю кнопку дд , он попытается выполнить карту 3jdd . Вим интерпретирует дд команду в виде карты и повторно выполните карту, как показано на следующем изображении.

Примечание : Рекурсия может заморозить редактор Vim. Чтобы разморозить его, нажмите Ctrl+C ключи.

Чтобы избежать рекурсии, замените карта ключевое слово с нормальная карта , где ' нет ' означает нерекурсивный . Я заменю карта ключевое слово с нормальная карта чтобы исправить рекурсию в приведенной выше раскладке клавиш.

:noremap дд 3jdd

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

Создание раскладок клавиш для конкретного режима

Vim сделал раскладку клавиш настолько универсальной, что даже раскладку клавиш для определенного режима можно создать довольно легко. Например, если вы создали раскладку клавиатуры для режима вставки, используя Ф1 ключ, то вы можете сопоставить то же самое Ф1 ключ в другом режиме для совершенно новой операции.

В следующем примере я сопоставил Ф1 клавиша для удаления 3 строк в нормальный режим и дернуть 3 строки в вставлять режим.

:nmap < Ф1 > 3дд
:изображение < Ф1 > < К-т >

Первая карта удаляет три строки в обычном режиме при нажатии клавиши F1, а вторая карта добавляет один отступ в текущей строке в режиме вставки с использованием той же клавиши. Теперь давайте разберемся с отображением в каждом режиме.

Сопоставление нормального режима

Чтобы применить карту в обычном режиме, используйте только Nmap ключевое слово. Например, чтобы скопировать все строки файла, используя Ctrl+C ключи, я буду использовать следующую команду.

:nmap < С-с > ggVGy

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

:nremap < С-с > ggVGy

Поместите его без двоеточия (:) в вимрк файл, чтобы сделать его постоянной раскладкой клавиш.

я буду использовать нормальная карта вместо карта в следующем примере.

Вставка сопоставления режимов

Чтобы сопоставить клавиши для режима вставки, просто используйте я вместо н . Например, в режиме вставки Ctrl+P и Ctrl+N клавиши используются для автозаполнения слова на основе обратного и прямого совпадения соответственно. Чтобы отобразить Ctrl+P клавиши с помощью клавиши табуляции, я буду использовать следующую команду.

:inoremap < Вкладка > < С-р >

Что еще более важно, если вы хотите составить карту режим ожидания оператора команды в режим вставки , то вам нужно вставить клавишу с правой стороны, чтобы выйти из режима вставки и выполнить эти команды. Например, в следующей раскладке клавиш я хочу удалить 3 строки, используя Ctrl+X клавиши и снова войдите в режим вставки.

:inoremap < С-х > 3дди

Теперь, когда я нажимаю кнопку Ctrl+X ключи, он напечатает 3дди команду вместо ее выполнения.

Чтобы это исправить, я вставлю перед 3дди команда.

:inoremap < С-х > < Esc > 3дди

Теперь команда выполнит сохранение меня в режиме вставки.

Многим мини-ноутбукам не хватает Esc клавиша, которая важна для выхода из текущего режима. Итак, чтобы составить карту Esc клавиша для выхода из режима вставки, можно использовать сопоставление клавиш. В следующем примере я использую бывший клавиши для выхода в обычный режим.

:inoremap бывший < Esc >

Если вы быстро нажмете кнопку бывший клавиши, режим вставки выйдет из режима и перейдет в обычный режим.

Сопоставление визуальных режимов

Визуальный режим — очень важный режим выделения текста в редакторе Vim. Помимо основного выбора, визуальный режим имеет другие различные режимы, такие как режимы визуальной линии и визуального блока.

В визуальном режиме тильда (~) используется для переключения регистра. Чтобы использовать тильду (~), вам нужно нажать две клавиши (шифт+~) . В следующем примере я сопоставляю клавишу c в визуальный режим чтобы выбрать слово под курсором и изменить его регистр.

:vnoremap c iw~

Теперь нажмите v, чтобы войти в визуальный режим, и нажмите клавишу c, чтобы переключить слово под курсором, как показано на следующем GIF-изображении.

Сопоставление режимов командной строки

Многие важные команды Vim работают только в режиме командной строки. Например, чтобы сохранить файл команда используется аналогичным образом для сохранения и выхода :wq используется команда. Все операции табуляции и разделения также выполняются в режиме командной строки. Например, чтобы создать новую вкладку, : подчиненный используется команда. Ну а чтобы быстро создать вкладку, Ctrl+T ключей достаточно.

:cnoremap < К-т > предмет < ЧР >

Теперь нажмите двоеточие (:), чтобы войти в режим командной строки, а затем Ctrl+T открыть новую вкладку; это намного быстрее, чем набирать весь текст предмет команда и Возвращаться ключ.

Создание пользовательских команд Vim
Вход в командный режим для выполнения карты кажется менее полезным. Но вы можете создавать свои собственные команды в Vim, используя :команда вариант. Эта функция очень напоминает сопоставление клавиш Vim. Например, чтобы создать быструю команду для установки номера строки и ширины текста равными 80, используйте следующую команду.

:команда Mycmd :установить номер ширина текста '=' 80

Теперь войдите в командный режим и выполните команду :Mycmd команда.

Сопоставление режима ожидания оператора

Режим ожидания оператора — это режим, в котором Vim ожидает команды движения после нажатия клавиши оператора. Распространенными операторами являются y, d и c. Например, чтобы удалить текущую строку и три последующие строки, вы будете использовать оператор d с 3дж движение (d3j). Вы не можете нажать эти клавиши одновременно для выполнения желаемой операции.

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

:onoremap < Ф2 > 3дж

Теперь, чтобы извлечь текущую строку и три строки, за которыми следуют, используйте theF2 клавиши, таким же образом, д Также можно применить оператор.

Еще одна важная вещь, о которой следует помнить: если вы добавите счетчик к вышеупомянутому отображенному движению, скажем, 2 , карта примет его как 23j, а не 6j. Чтобы это исправить, можно использовать регистр выражений «=». Приведенную выше карту можно изменить как @=’3j’ .

:onoremap < Ф2 > @ =’3j’ < ЧР >

Как сопоставить события мыши

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

:noremap < 2 -Правая мышь > ] `
:noremap < 2 -Левая кнопка мыши > [ `

Другие события мыши, которые можно сопоставить, приведены в следующей таблице.

<Левая мышь> <Лефтрелиз> <Перетаскивание влево> <2-левая мышь>
<Правая мышь> <РайтРелиз> <2-Правая мышь>
<СредняяМышь> <Миддлрелиз> <МиддлДраг> <3-левая мышь>
<3-Правая мышь>
<4-левая мышь>
<4-Правая мышь>

Как сопоставить с помощью ключа лидера в Vim

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

Для тех, кто не знаком, с ключом лидера Vim. Это ключ, которому предшествует другой ключ или набор ключей для сопоставления команд или операций. Ключевой клавишей Vim по умолчанию является обратная косая черта (\), но ее можно настроить.

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

:noremap < Лидер > дд ggVGd

Теперь всякий раз, когда вы нажимаете кнопку \дд ключ, все строки в файле будут удалены. Вы можете назначить ведущую клавишу Vim управляющей клавишей в Windows или командной клавишей в macOS.

Как сопоставить функцию Vimscript

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

функция Мои настройки ( )
набор число
набор мышь
набор ширина текста '=' 80
конечная функция

Поместите эту функцию в файл vimrc.

Давайте сопоставим эту функцию с клавишами «лидер» и «s». я буду использовать

:noremap < Лидер > s :вызовите MySettings ( ) < ЧР >

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

Примечание : при создании пользовательской функции в Vim первая буква имени функции всегда должна быть заглавной.

Как сопоставить внешние команды в Vim

Внешние команды также могут быть отображены в Vim. Внешние команды относятся к командам Linux или Unix. Например, если вы хотите сопоставить внешний Сортировать команда для сортировки всех строк в текущем буфере по Ф1 ключ, используйте следующую команду.

:noremap < Ф1 > : %! Сортировать < ЧР >

Таким же образом, если вы пишете файл сценария и делаете его исполняемым, не выходя из сеанса Vim, вы можете использовать команду chmod командовать внутри. Например, чтобы сделать текущий файл исполняемым, вы можете выполнить команду :!chmod +x % в Виме. Если вы часто выполняете эту задачу, просто сопоставьте с ней клавишу.

:noremap < Ф1 > : ! chmod %

В Vim любую внешнюю команду можно использовать с восклицательным знаком (!).

Как удалить раскладку клавиатуры в Vim

Чтобы удалить раскладки клавиш в Vim, сначала определите, где они определены. Как обсуждалось ранее, раскладки клавиш могут быть локальными в буфере и постоянными. Если карта ключей является постоянной и помещена в файл vimrc, то простое удаление их из файла приведет к отмене сопоставления ключей.

Если отображение выполняется в текущем буфере, то их можно удалить с помощью команды :отменить карту или :отменить карту! команды.

  • :отменить карту для очистки раскладок клавиш обычного, визуального, режима выбора или режима ожидания оператора
  • :отменить карту! очистить раскладки клавиш в режимах вставки и командной строки

Например, чтобы удалить ключ, используйте :отменить отображение . Более того, удаление клавиш может зависеть от режима. Если вы хотите удалить карту обычного режима, используйте команду :nunmap <ключ> . Другие команды для удаления раскладки клавиатуры, специфичные для режима, упомянуты ниже:

:nunmap Чтобы удалить карты нормальный режим
:iunmap Чтобы удалить карты вставлять режим
:vunmap Чтобы удалить карты визуальный и выбирать режим
:солнечная карта Чтобы удалить карты выбирать режим
:xunmap Чтобы удалить карты визуальный режим
:cunmap Чтобы удалить карты командная строка режим
:ounmap Чтобы удалить карты оператор ожидает режим

Чтобы удалить все карты в текущем буфере, используйте команду :mapclear команда.

:mapclear

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

Чтобы очистить все раскладки клавиш в режимах вставки и командной строки, используйте:

:mapclear !

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

:отменить карту дд < Нет >

dd больше не будет работать в текущем буфере. Используя этот метод, любую раскладку клавиатуры можно отключить для текущего сеанса.

Шпаргалка по сопоставлению клавиш Vim

На следующем изображении для справки представлен список всех команд и их конкретных режимов.

Заключение

Сопоставление клавиш Vim — это удобный способ автоматизировать ваши задачи, часто используемые привязки клавиш, команды и другие операции. Это разнообразная тема, и в этом руководстве я рассмотрел все основные аспекты, связанные с сопоставлением клавиш в Vim. От общего синтаксиса до создания базовой раскладки клавиш и вплоть до сопоставления расширенных функций Vimscript и внешних команд. Чтобы узнать больше о сопоставлении клавиш Vim, используйте :помогите раскладку клавиш команда в Vim.