#visual-studio-code #vim #vscode-settings
#vim #visual-studio-code
Вопрос:
Я настроил vim-расширение в vscode, и для большинства режимов оно выполняет команды правильно. Однако, если я попытаюсь записать фактические символы (которые, таким образом, больше не являются командами), этого не произойдет. Почему это?
Пример:
"vim.insertModeKeyBindingsNonRecursive": [
{
"before": [
"<leader>",
"o"
],
"after": [
"<Esc>",
"i",
"Abcd"
]
},
]
Это должно быть записано только Abcd
, потому что перед этим последовательность i
переключается в режим вставки. (Таким образом, <Esc>
-> i
, является избыточным, это здесь просто в качестве примера). Расширение vscode vim выполняет <Esc>
а также i
(потому что я знаю, что после этой команды я вернусь в режим вставки), но не будет печатать Abcd
. Почему? Настроено ли расширение только для выполнения команд, а не для фактической печати чего-либо? Как это включить?
Комментарии:
1. может быть, глупый вопрос. но вы пробовали удалять
"<Esc>", "i"
часть из сопоставления?2. @DoktorOSwaldo Я сделал — тот же результат. Но это было просто в качестве примера. В любом случае в обоих случаях Vscode-vim не будет выводить его
3. хм github.com/VSCodeVim/Vim#vscodevim-settings смотрите параметры отладки там. это также должно допускать отладочные сопоставления. К сожалению, я больше не могу вам помочь, поскольку я не использую vscode. У меня просто была одна идея о том, в чем может быть проблема, и ваш комментарий не указывает в этом направлении
4. Можете ли вы уточнить, чего вы пытаетесь достичь? Похоже, что в режиме вставки
<leader>o
записывается Abcd в файл в текущем местоположении курсора?5. @dwrecked да, так и должно быть. Но это не так. Я пытаюсь просто «распечатать» (написать
Abcd
, например, с помощью ярлыка), но с расширением vim, похоже, я не могу так «печатать»
Ответ №1:
Похоже, вам просто нужно разделить каждый символ "Abcd"
на отдельную строку:
"vim.insertModeKeyBindingsNonRecursive": [
{
"before": [
"<leader>",
"o"
],
"after": [
"<Esc>",
"i",
"A",
"b",
"c",
"d"
]
},
]
Комментарии:
1. ни то, ни другое не помогло.
2. Хм, за исключением того, что мой настроен как явный «\» вместо <лидер>, то, что указано выше, в настоящее время работает для меня нормально. К сожалению, я не уверен, что еще могло бы внести свой вклад — извините за это!
3. @milanHrabos Еще один вопрос — вы видите, что
<leader>o
вставлено вашим набором текста, а затем удалено? Когда у меня это работает, эти символы вставляются, затем удаляются и заменяются наAbcd
. Если исходные символы не удалены, то это говорит о том, что команда никогда не запускается.
Ответ №2:
Как упоминалось в документации проекта, предполагается, что вы передаете один ключевой символ (один символ для обычной клавиши и несколько символов для специальных клавиш, таких как клавиши со стрелками или escape-клавиши).
Обновление после значения решит проблему:
"after": [
"<Esc>",
"i",
"A", "b", "c", "d"
]
Вы можете взглянуть на внутренности плагина, чтобы понять, почему он не работает с несколькими символами, передаваемыми здесь, в частности, с функцией NormalizeKey, которая обертывает любую строку с несколькими символами с помощью <>.