Определите, связан ли ключ с чем-то в vim - PullRequest
78 голосов
/ 20 марта 2010

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

Например, у меня всегда было CTRL - W , чтобы закрыть вкладку, потому что я думал, что она не использовалась. Через полгода я обнаружил, что есть некоторые последовательности, которые его используют, например CTRL - W CTRL - S для разделения окно, и это был кошмар, чтобы переобучиться.

Ответы [ 6 ]

71 голосов
/ 20 марта 2010

Если вы посмотрите предложенный ответ Рэнди Морриса, вы обнаружите, что

:help index 

даст вам список, который вы хотите.

35 голосов
/ 20 апреля 2013

Чтобы проверить отображение по умолчанию:

:help index

Для другого сопоставления, которое выполняется пользователями или плагином:

:map
:map!

С http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-Tutorial(Part_1):

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

Обычно вывод вышеприведенных команд будет занимать несколько страниц. Вы можете использовать следующий набор команд для перенаправления вывода на файл vim_maps.txt:

:redir! > vim_maps.txt
:map
:map!
:redir END
30 голосов
/ 20 марта 2010

Не полный ответ, но вы можете проверить :help map-which-keys для списка ключей, которые vim рекомендует использовать в ваших пользовательских картах.

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

16 голосов
/ 18 января 2011

Используйте :map! и :map для установки ключей вручную и :help 'char(-combination)', чтобы узнать, какие ключи уже сопоставлены в vim из коробки (/ из ваших конкретных опций компиляции). (Немного не по теме, но все же респектабельно (я думаю): используйте :scriptnames, чтобы увидеть, какие файлы были получены в каком порядке.)

14 голосов
/ 06 февраля 2016

Я пролистал :help index и составил список некоторых неиспользованных nmap клавиш:

  • Q (переключение в режим «Ex»)
  • Z кроме ZZ, ZQ
  • \
  • <Space> (аналогично l в обычном режиме; самая большая и наиболее неиспользуемая клавиша в обычном режиме)
  • gb, gc, gl, gx, gy, gz
  • GS (сон)
  • зп, зк, зу, зу
  • кд, см, кп, кп, кк, кр, сс, кр, сх, кс
  • dc, dm, do, dp, dq, dr, ds, du, dx, dy
  • gA, gB, gC, gG, gK, gL, gM, gO, gS, gX, gY, gZ
  • zB, zI, zJ, zK, zP, zQ, zP, zS, zT, zU, zV, zY, zZ
  • ] a,] b,] e,] g,] h,] j,] k,] l,] n,] o,] q,] r,] t,] u,] v,] w ,] х,] у
  • [a, [b, [e, [g, [h, [j, [k, [l, [n, [o, [q, [r, [t, [u, [v, [w] , [х, [у
  • CTRL-G, CTRL-K
  • CTRL- \ a - z (зарезервировано для расширений)
  • CTRL- \ A - Z (не используется)

Пожалуйста, обновите / прокомментируйте.

9 голосов
/ 01 ноября 2013

Вы можете использовать mapcheck.: -

Например, я хотел сопоставить <CR> ,i с gg=G с отступом в файле. Чтобы проверить, существует ли сопоставление для <CR> , i

if mapcheck("\<CR>", "I") == "" |echo "no mapping"

... но это не определит, является ли отображение частью последовательности.

...