Получите подходящие инструменты под пальцы.

(alldrops.info - это ИСТИНА и НАВСЕГДА БЕСПЛАТНО для ранее использовавшейся публикации medium.com/vim-drops. На alldrops.info вы всегда найдете все сообщения без ограничений Medium.com.

Когда вы начинаете использовать vim, вы быстро обнаруживаете, что ищете небольшие улучшения в командах клавиатуры. Может быть, вы хотите, чтобы <Esc> функциональность была немного ближе к вашим пальцам, или, может быть, вы хотите создать ярлык для последовательности команд, которую вы используете очень часто.

Есть хорошие шансы, что вы проверили stackoverflow в поисках самого простого способа сбросить выделение последнего поиска и обнаружили, что вам нужно ввести команду :nohlsearch или :noh, а затем, прочитав больше, вы получите несколько советов по включению сопоставления (ярлык!) в вашем .vimrc файле, чтобы ярлык ,<space> всегда был у вас под рукой.

( от :help mapping)

Сопоставление клавиш используется для изменения значения вводимых клавиш. Чаще всего используется для определения последовательности команд для функциональной клавиши.

Легко начать, прочитать сопоставление, которое вы только что вставили nnoremap ,<space> :nohlsearch<CR>, и попытаться изменить его на что-нибудь другое ... Приятно немного поиграть и выяснить это самому, и вы должны это сделать, но отображение есть что-то очень важное в vim, и это важно понимать.

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

Понимание структуры сопоставления клавиш

Структура проста:

… И можно использовать специальные аргументы:

Изучение структуры:

| map-command |

Это первое, и неявно map-command определяет:

  • добавляете ли вы новую / удаляете / перечисляете карту
  • будет ли сопоставление рекурсивным / нерекурсивным
  • режим, в котором будет применяться сопоставление

Из примера:

nnoremap определяет, что это добавление нового сопоставления, которое будет применяться в NORMAL режиме, и это нерекурсивное.

| map-arguments |

Это необязательно и должно появиться сразу после map-command. Вы можете использовать один или несколько аргументов вместе, и их можно использовать в любом порядке.

Из примера:

<silent> определяет, что когда вы выполняете это сопоставление, нажимая ,<space>, команда :nohlsearch не будет отображаться в командной строке.

| {lhs} левая сторона |

Здесь вы определяете сочетание клавиш или клавиши, которые собираетесь использовать. Это может быть один ключ, например ,, или последовательность ключей, например ,<space>.

Из примера:

,<space> - это ярлык, это последовательность клавиш, которая вызывает то, что вы определили на {rhs}.

| {rhs} правая сторона |

Здесь вы определяете, что будет заменять / выполнять ваш ярлык при нажатии клавиши (клавиш), определенной в {lhs}. Он может заменять ключ или выполнять последовательность клавиш, он может вызывать собственные команды vim (как в предыдущем примере) или функции, созданные вами на языке vimscript, все может быть настолько сложным, насколько вы хотите.

Из примера:

:nohlsearch<CR> - это то, что будет выполнено, vim наберет :nohlsearch, за которым следует <Enter> ключ, который определяется <CR> .

А теперь… Все вместе!

… В основном сообщает vim:

Каждый раз, когда я нажимаю ,, затем <Space> в нормальном режиме, введите следующую команду :nohlsearch и завершите нажатием <Enter> (<CR>), чтобы выполнить команду. Но эй! Внимание! Я не хочу, чтобы команда отображалась эхом в командной строке! ... и многое другое ... Я не хочу, чтобы она была рекурсивной, поэтому, если я сохраню другое сопоставление клавиш в будущем, и я напишу последовательность ,<space> на {rhs} , он не должен вызывать :nohlsearch снова, он должен относиться к исходному поведению клавиш ,, затем <space>.

Понимание основных команд и аргументов.

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

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

Команды карты

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

Основные команды:

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

Особые аргументы

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

Они есть:

<buffer>

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

Этот аргумент также можно использовать с командой для удаления сопоставления из текущего буфера.

<nowait>

Он в основном сообщает vim, если вы вводите символы, определенные в {lhs}, vim не должен ждать, пока будут набраны другие символы, и должен немедленно выполнить это сопоставление!

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

<silent>

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

<special>

Он используется, чтобы указать, что вы будете использовать нотацию <> для определения сопоставления для специальных ключей (пример :map <special> <F12> /Header<CR>)

<script>

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

<expr>

Он определяет, что {lhs} будет выражением, и это выражение будет вычислено для получения {rhs}.

<unique>

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

Теперь вы знаете большую часть основ, которые улучшат ваши навыки картографирования, но, если вы столкнетесь с неожиданным поведением или если вы чувствуете, что какое-то отображение выглядит не так хорошо, потратьте час, чтобы прочитать :help mapping и попробовать примеры, есть еще несколько волшебных !

Внимание! Несколько советов перед тем, как вы начнете создавать свои собственные сопоставления:

  • Имеет смысл создать свои сопоставления и сохранить их в вашем .vimrc файле, чтобы они всегда были под рукой.
  • Рекомендуется всегда использовать нерекурсивные сопоставления, за исключением особых случаев, когда вам требуется рекурсивное поведение.
  • В Vim есть команды почти для каждой клавиши, поэтому при создании сопоставлений вы должны делать правильный выбор. Избегайте изменения поведения наиболее важных клавиш / команд vim. Получите лучшую ориентацию на :help map-which-keys.
  • Если вам нужна помощь в использовании определенных ключей в {lhs} или {rhs}, отметьте :help key-notation и :help map-special-chars.
  • Улучшите свой рабочий процесс, но не преувеличивайте! Во-первых, создавайте сопоставления только для команд, которые замедляют ваш рабочий процесс, или для этой клавиши, которая вам нужна очень часто и которую трудно дотянуть на вашей модели клавиатуры. Привыкнув к этому и / или когда вы начнете создавать сценарии / плагины vim, вы, вероятно, немного углубитесь в сопоставления.

Не пропустите!

Получите другие полезные советы, подобные этому 👇, на своей временной шкале в Twitter:

Полезные ссылки и ссылки:

  • Документация Vim (:help)
  • Вы можете попрактиковаться в сопоставлении от самых простых до более сложных, следуя упражнениям в главах 3, 4, 5 и 6 из бесплатной электронной книги Learn Vimscript the Hard Way (by Стив Лош).
  • Книга (и скринкасты) Освоение Vim быстро Йовицы Илич. Это потрясающая книга, не забудьте подписаться на информационный бюллетень, чтобы получать бесплатные советы по Vim и отрывки из книг по электронной почте.

(👆 Это партнерская ссылка. Если вам понравился этот пост и вы также заинтересованы в покупке книги / скринкастов MVQ, пожалуйста, посетите партнерскую ссылку, и вы подарите мне кофе ☕ или пиво 🍺.)

Сноски:

  • alldrops.info - это ИСТИНА и НАВСЕГДА БЕСПЛАТНО для ранее использовавшейся публикации medium.com/vim-drops. На alldrops.info вы всегда найдете все сообщения без ограничений Medium.com.
  • Если у вас есть какие-либо сомнения или советы по поводу этой статьи, я был бы признателен, если бы вы узнали и обсудили их в разделе комментариев.
  • Есть ли у вас другие советы по работе с vim? Вы бы хотели опубликовать это в этом блоге? Отправьте электронное письмо.
  • Так как английский не мой родной язык, прошу прощения за ошибки. Исправления приветствуются.
  • Контакт: vim [@] alldrops [.] информация.