4 ответов:
remapэто опции что делает отображения работают рекурсивно. По умолчанию он включен и я бы рекомендовал вам оставить все как есть. Остальные команды отображения, описано ниже:
:mapи:noremapare рекурсивные и нерекурсивный версии различных команд отображения. Это означает, что если вы делаете::map j gg :map Q j :noremap W j
jбудет соответствоватьgg.Qбудет и быть сопоставлены сgg, потому чтоjбудет расширен для рекурсивного отображения.Wбудет соответствоватьj(а неgg), посколькуjне будет расширен для нерекурсивного отображения.теперь помните, что Vim-это модальный редактор. Он имеет нормальный режим визуальный режим и другие режимы.
для каждого из этих наборов отображений, есть картография что работает в обычном, визуальном, выберите оператора и режима (
:mapи:noremap), который работает в обычном режиме (:nmapи:nnoremap), в визуальном режиме (:vmapи:vnoremap) и так далее.дополнительные указания см. В разделе:
:help :map :help :noremap :help recursive_mapping :help :map-modes
я думаю, что документация vim должна была объяснить смысл именования этих команд. Просто сказать вам, что они делают, не поможет вам вспомнить имена.
mapявляется "корнем" всех рекурсивных команд отображения. Корневая форма применяется к режимам" normal"," visual+select "и" operator-pending". (Я использую термин "корень" в Лингвистика.)
noremapявляется "корнем" всех нерекурсивных команд отображения. Корневая форма применяется к тем же режимам, что иmap. (Подумайте оnoreпрефикс означает "нерекурсивный".)(обратите внимание, что есть также
!режимами, такими какmap!которые применяются для вставки и командной строки.)смотрите ниже, что означает "рекурсивный" в этом контексте.
добавление буквы режима, как
nизмените режимы, в которых работает отображение. Он может выбрать подмножество списка применимых режимов (например, только "визуальный") или выбрать другие режимы, которыеmapне будет применяться к (например, "вставить").использовать
help map-modesпокажет вам несколько таблиц, которые объясняют, как управлять режимами отображения применяется.режим письма:
n: нормально толькоv: визуальный и выберитеo: оператор-доx: только визуальныйs: выберите толькоiвставитьc: командная строкаl: вставка, командная строка, регулярное выражение-поиск (и другие. Коллективно называется" Lang-Arg " псевдо-режим)"рекурсивные " означает, что отображение расширяется до результата, затем результат расширяется до другого результата и так далее.
расширение останавливается, когда один из них истинен:
- результат больше не отображается ни на что другое.
- нерекурсивное отображение было применяется (т. е. "noremap" [или один из его подобных] является окончательным расширением).
в этот момент применяется/выполняется значение по умолчанию vim для конечного результата.
"нерекурсивный " означает, что отображение расширяется только один раз, и этот результат применяется/выполняется.
пример:
nmap K H nnoremap H G nnoremap G ggвышеуказанные причины
Kрасширить доH, потомHрасширить доGи прекратить. Он останавливается из-заnnoremap, которая расширяется и немедленно останавливается. ЗначениеGбудет выполнен (т. е."перейти к последней строке"). Самое большее одно нерекурсивное отображение будет когда-либо применено в цепочке расширения (это будет последнее расширение).карт
Gдоggприменяется только при нажатииG, но не при нажатииK. Это сопоставление не влияет на нажатиеKнезависимо от того, является лиGбыл отображен рекурсивно или нет, так как это строка 2, что вызывает расширениеKостановить, поэтому строка 3 не будет использоваться.
осторожностью
vnoremapиvmapработа в визуальном и выберите режим. Чтобы иметь отображение только в визуальном режиме, используйтеxmapиxnoremap.
одно отличие в том, что:
:mapтутnvo= = normal + (visual + select) + оператор в ожидании:map!тутic= = вставить + режим командной строкикак заявил
help map-modesтаблицы.так:
mapне сопоставляется со всеми режимами.для отображения на все режимы вам нужно как
:mapи:map!.
Comments