Связывание клавиш Vimperator, требуется дополнительное нажатие

261
mellowmaroon

Я действительно новичок в Vim / Vimscript, и я пытаюсь настроить мой .vimperatorrc для выполнения так же, как при запуске :open google search-term.

Из чтения, похоже, мне нужно nnoremap g :open google<Space>. Это почти работает, но окно не появляется, пока я не нажму другую клавишу.

Есть ли что-то еще, что мне нужно сделать? Чтобы быть ясным, я хотел бы, чтобы это в основном делало то же самое, но не требовало дополнительного нажатия клавиш для открытия окна поиска.

0

1 ответ на вопрос

1
trailing slash

Когда вы пытаетесь использовать сопоставление, и перед тем, как что-то отобразится в командной строке, возникает нерешительность, это может указывать на то, что у Vimperator есть больше опций, чем вы нажимали до сих пор. Он ожидает большего количества нажатий клавиш, чтобы увидеть, разрешена ли неоднозначность либо A), сопоставляющим сопоставление с большим количеством символов (где не существует остающейся неоднозначности), либо B), не сопоставляющим что-либо еще, и тем самым перейдя к более короткому сопоставлению, которое соответствовало. Сначала я продемонстрирую, используя примеры с ключом лидера, а затем вернусь к вашему конкретному вопросу.

Допустим, у вас есть следующее в вашем .vimperatorrcфайле (и предположим, что ваш ключ лидера используется по умолчанию \(см. :h mapleader)):

nnoremap <leader>g :open google<space> 

Как только вы закончите печатать \g, :open googleпоявится, как вы ожидаете. Однако, допустим, у вас есть это в вашем .vimperatorrc:

nnoremap <leader>g :open google<space> nnoremap <leader>gw :open google wiki<space> 

Теперь, после того, как вы \gнаберете текст, ничего не произойдет (если вы не посмотрите очень внимательно слева от текущего URL, который показывает ваши нажатия клавиш в командном режиме по мере их ввода). Это связано с тем, что Vimperator не уверен, хотите ли вы, чтобы это \gсопоставление или вы намерены также нажать a, wчтобы завершить \gwсопоставление. В этом сценарии вы можете ввести команду :nmap \g(пока не нажимайте <enter>), и вы увидите эти два сопоставления.

Однако в вашем сценарии вы отображаете персонажа g. Vimperator имеет много действий, связанных с комбинациями клавиш, которые начинаются с буквы g. Например, gt& gTявляются «перейти к следующей / предыдущей вкладке». (Так как это привязки клавиш по умолчанию, они не будут отображаться для вас при вводе команды :nmap g.) Возможно, можно отобразить все g[another character]сопоставления по умолчанию, но это будет неортодоксально и, вероятно, вредно для здоровья. Чтобы предотвратить конфликты с привязками клавиш по умолчанию, соглашение будет поощрять вас использовать ключ-лидер с вашими пользовательскими сопоставлениями, как показано выше.