- VSCodeVim
Эмуляция Vim для кода Visual Studio
VSCodeVim — это эмулятор Vim для кода Visual Studio.
🚚 -emoji> Полный список поддерживаемых функций Vim можно найти в нашей дорожной карте.
📃 В нашем журнале изменений описаны критические/основные/незначительные обновления между выпусками.
❓ Если вам нужно задать какие-либо вопросы, присоединяйтесь к нам в Slack.
Сообщайте о недостающих функциях/ошибках на GitHub.
Содержание (щелкните, чтобы развернуть)
Установка
Настройка Mac
Настройка Windows
Настройка Linux
Настройки
Настройки VSCodeVim
Интеграция Neovim
Переназначение клавиш
Настройки Vim
Режим нескольких курсоров
Эмулированные плагины
vim-Airlines
vim-easymotion
vim-Surround
vim-commentary
vim-indent-object
vim-sneak
CamelCaseMotion
Метод ввода
ReplaceWithRegister
vim-textobj-whole
Уловки VSCodeVim
FAQ/Устранение неполадок
Содействие
💾 Установка
VSCodeVim автоматически включается после установки и перезагрузки VS Code.
Mac
Чтобы включить повторение клавиш выполните в Терминале следующее и перезапустите VS Code:
$ defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false # Для VS Code $ defaults напишите com.microsoft.VSCodeInsiders ApplePressAndHoldEnabled -bool false # Для VS Code Insider $ по умолчанию напишите com.visualstudio.code.oss ApplePressAndHo ldEnabled -bool false # Для значений по умолчанию VS Codium $ delete -g ApplePressAndHoldEnabled # При необходимости сбросить глобальное значение по умолчанию
Мы также рекомендуем увеличить настройки Key Repeat и Delay until Repeat в Системные настройки -> Клавиатура.
Windows
Как и в реальном vim, VSCodeVim возьмет на себя ваши клавиши управления . Это поведение можно изменить с помощью настроек useCtrlKeys и handleKeys.
⚙️ Настройки
Задокументированные здесь настройки являются подмножеством поддерживаемых настроек; полный список описан на вкладке Contributions страницы сведений о расширении VSCodeVim, которую можно найти в представлении расширений VS Code.
Быстрый пример
Ниже приведен пример файла settings.json с настройками, относящимися к VSCodeVim:
{"vim.easymotion ": правда", vim. incsearch ": true,« vim.useSystemClipboard »: true,« vim.useCtrlKeys »: true,« vim.hlsearch »: true,« vim.insertModeKeyBindings »: [{« до »: [« j »,« j »] , "после": [""]}], "vim.normalModeKeyBindingsNonRecursive": [{"до": ["", "d"], "после": ["d", "d "]}, {" до ": [" "]," commands ": [": nohl "]}]," vim.leader ":" "," vim.handleKeys ": {" ": false," ": false}}
Настройки VSCodeVim
Эти настройки относятся к VSCodeVim.
Настройка
Описание
Тип
Значение по умолчанию
vim.changeWordIncludesWhitespace
Включать завершающие пробелы при изменении слова. Это настраивает действие cw, чтобы оно действовало последовательно как его братья и сестры (yw и dw ) вместо того, чтобы действовать как ce.
Boolean
false
vim.cursorStylePerMode. {Mode}
Conf Настройте определенный стиль курсора для {Mode}. В опущенных режимах будет использоваться тип курсора по умолчанию. Поддерживаемые курсоры: линия, блок, подчеркивание, тонкая линия, контур блока и тонкое подчеркивание.
String
Нет
vim.digraphs.{shorthand}
Устанавливает собственные сокращения орграфа, которые могут переопределить по умолчанию. Записи должны сопоставлять двухсимвольное сокращение с описательной строкой и одной или несколькими кодовыми точками UTF16. Пример: "R!": ["🚀", [55357, 56960]]
Object
{"R!": ["🚀", [0xD83D, 0xDE80]]
vim.debug.silent
Логическое значение, указывающее, будут ли подавляться сообщения журнала.
Boolean
false
vim.debug.loggingLevelForConsole
Максимальный уровень сообщений для регистрации в консоли. Журналы видны в инструментах разработчика. Поддерживаемые значения: ‘error’, ‘warn’, ‘info’, ‘verbose’, ‘debug’).
String
error
vim.debug.loggingLevelForAlert
Максимальный уровень сообщений для представления в виде информационного окна VS Code. Поддерживаемые значения: ‘error’, ‘warn’, ‘info’, ‘verbose’, ‘debug’).
String
error
vim.disableExtension
Отключить расширение VSCodeVim. Этот параметр также можно переключить с помощью команды toggleVim в палитре команд
Boolean
false
vim.handleKeys
Делегировать сконфигурированные ключи, которые будут обрабатываться VS Code, а не расширением VSCodeVim. Любая клавиша в разделе keybindings файла package.json, имеющего vim.use в аргументе when можно передать обратно в VS Code, установив "": false. Пример: использование ctrl + f для поиска (поведение собственного кода VS): "vim.handleKeys": {"": false}.
String
"": true
vim.overrideCopy
Заменить команду копирования VS Code нашей собственной, которая корректно работает с VSCodeVim. Если cmd-c/ctrl-c вызывает проблемы, установите для него значение false и пожаловаться здесь.
Boolean
false
vim.searchHighlightColor
Установить цвет выделения при поиске
String
findMatchHighlightBackground ThemeColor
vim.startInInsertMode
Запускать в режиме вставки вместо обычного режима
Boolean
false
vim.useCtrlKeys
Включить переопределение клавиш Ctrl + Vim общие операции VS Code, такие как копирование, вставка, поиск и т. д.
Boolean
true
vim.visualstar
В визуальном режиме начните поиск с * или #, используя текущий выбор
Логическое
false
vim.highlightedyank.enable
Включить выделение при дергании
Boolean
false
vim.highlightedyank.color
Установить цвет выделенных участков
String
rgba (250, 240, 170, 0.5)
vim.highlightedyank.duration
Установить продолжительность выделений при резке
Number
200
Интеграция Neovim
⚠️ Экспериментальная функция. Пожалуйста, оставьте отзыв об интеграции neovim здесь.
Чтобы использовать neovim для Ex-команд,
Установите neovim
Измените следующие конфигурации:
Настройка
Описание
Тип
Значение по умолчанию
vim.enableNeovim
Включить Neovim
Boolean
false
vim. neovimPath
Полный путь к исполняемому файлу neovim. Если оставить пустым, переменная среды PATH будет автоматически проверяться на наличие пути neovim.
String
Вот несколько идей о том, что вы можете сделать с интеграцией neovim:
Возможности g
Команда: normal
Более быстрый поиск и замена!
Переназначение клавиш
Пользовательские переназначения определяются на в зависимости от режима.
"vim.insertModeKeyBindings"/"vim.normalModeKeyBindings"/"vim.visualModeKeyBindings"/"vim. operatorPendingModeKeyBindings "
Переопределения привязки клавиш для использования в режимах вставки, нормальном, operatorPending и визуальном.
Bind jj в в режиме вставки:
"vim.insertModeKeyBindings": [{"before" : ["j", "j"], "after": [""]}]
Привязать £ для перехода к предыдущему целому слову под курсором
"vim.normalModeKeyBindings": [{"before": ["£"], "after": ["#"]}]
Привязать : для отображения палитры команд:
"vim.normalModeKeyBindings": [{"before": [":"], "commands": ["workbench.action.showCommands",]}]
Свяжите m, чтобы добавить закладку, и b, чтобы открыть список всех закладки (с использованием расширения Bookmarks):
"vim.normalModeKeyBindings": [{"before": ["", "m"], "commands": ["bookmarks.toggle"]}, {"до": [" "," b "]," commands ": [" bookmarks.list "]}]
Привязать ZZ к команде vim : wq (сохранить и закрыть текущий файл):
"vim.normalModeKeyBindings": [ {"before": ["Z", "Z"], "commands": [": wq"]}]
Привязать ctrl + n для отключения выделения при поиске и w для сохранения текущего файла:
"vim.normalModeKeyBindings": [{"before": [""], "commands": [": nohl",]}, {"before": ["лидер", "w"], " commands ": [" workbench.action.files.save ",]}]
Привязать { к w в режиме ожидания оператора заставляет y { и d { работать как yw и dw соответственно.
"vim.operatorPendingModeKeyBindings": [{"before": ["{"], "after": ["w"]}]
Привязать L к $ и H на ^ ode> в режиме ожидания оператора заставляет
yL и dH работать как y $ и d ^ соответственно.
"vim.operatorPendingModeKeyBindings": [{"before": ["L"], "after": ["$"] }, {"до": ["H"], "после": ["^"]}] Привязать > и в визуальном режиме для отступа/выдвижения строк (повторяемый) "vim. visualModeKeyBindings ": [{" before ": ["> "]," commands ": [" editor.action.indentLines "]}, {" before ": [" Привязать vim, чтобы клонировать этот репозиторий в выбранное место. "vim.visualModeKeyBindings": [{"before": ["", "v", "i", "m"], "команды ": [{" команда ":" git.clone "," args ": [" https://github.com/VSCodeVim/Vim.git "]}]}] "vim.insertModeKeyBindingsNonRecursive"/"normalModeKeyBindingsNonRecursive"/"visualModeKeyBindingsNonRecursive"/"operatorPendingModeKeyBindingsNonRecursive" Нерекурсивные переопределения привязки клавиш для использования в режимах вставки, нормальном и визуальном Пример: Замените значение двух ключей, например j, на k и k на j для замены курсора вверх и вниз командой с. Обратите внимание, что если вы попытаетесь выполнить эту привязку в обычном режиме, j будет заменен на k, а k будет заменен на j, бесконечно. Когда это происходит «maxmapdepth» раз (по умолчанию 1000), будет выдано сообщение об ошибке «Рекурсивное отображение E223». Остановите это рекурсивное раскрытие, используя NonRecursive вариант сочетания клавиш. "vim.normalModeKeyBindingsNonRecursive": [{"before": ["j"], "after ": [" k "]}, {" до ": [" k "]," после ": [" j "]}] Привязать ( до ‘i (‘ в режиме ожидания оператора делает ‘y (‘ и ‘c (‘) такими же, как ‘yi (‘ и ‘ci (‘ соответственно. ) "vim.operatorPendingModeKeyBindingsNonRecursive": [{"before": ["("], "after": ["i ("]}] Привязать p в визуальном режиме для вставки без перезаписи текущего регистра "vim. visualModeKeyBindingsNonRecursive ": [{" до ": [" p ",]," после ": [" p "," g "," v "," y "]}], Переназначения отладки Правильны ли ваши конфигурации? Настройте расширение уровень ведения журнала до «отладки», перезапустите VS Code. После загрузки каждой переназначенной конфигурации она выводится на консоль. В консоли Developer Tools выполните y Вы видите какие-либо ошибки? debug: Remapper: normalModeKeyBindingsNonRecursive. перед = 0. after = ^. debug: Remapper: insertModeKeyBindings. перед = j, j. after = .error: Remapper: insertModeKeyBindings. Неверная конфигурация. Отсутствует "после" клавиши или "команды". before = j, k. Неверно настроенные конфигурации игнорируются. Обрабатывает ли расширение те ключи, которые вы используете пытаетесь переназначить? VSCodeVim явно указывает VS Code, какие ключевые события нам важны, через package.json. Если ключ, который вы пытаетесь переназначить, является ключом, с которым vim/vscodevim обычно не обрабатывается, то, скорее всего, это расширение не получает эти ключевые события от VS Code. Когда уровень ведения журнала настроен на «отладка», при нажатии клавиш вы должны увидеть результат, аналогичный: debug: ModeHandler: handle key = A.debug: ModeHandler: handle key = l.debug: ModeHandler: handle key = .debug: ModeHandler: handle key = . При нажатии клавиши, которую вы пытаетесь переназначить, вы видите это здесь? Если нет, это означает, что мы не подписываемся на эти ключевые события. Настройки Vim Параметры конфигурации, скопированные из vim. Настройки Vim загружаются в следующей последовательности: : set {setting} vim. {setting} из настроек пользователя/рабочей области. Настройки VS Code Значения по умолчанию VSCodeVim Параметр Описание Тип Значение по умолчанию vim.autoindent Копировать отступ от текущей строки при запуске новой строки Boolean true vim.gdefault Когда on, по умолчанию установлен флаг : substitute g. Это означает, что все совпадения в строке заменяются вместо одного. Когда флаг g присваивается команде : substitute, это переключает замену всего или одного совпадения. Логическое false vim.hlsearch Подсвечивает весь текст, соответствующий текущему поиску Boolean false vim.ignorecase Игнорировать регистр в шаблоны поиска Boolean true vim.incsearch Показывать следующее совпадение при вводе поиска Boolean true vim. лидер Определяет ключ для , который будет использоваться при повторном назначении клавиш String vim.showcmd Показать (частичную) команду в строке состояния Boolean true vim.showmodename Показать имя текущего режима в строке состояния Boolean true vim.smartcase Отменить настройку ‘ignorecase’ при поиске шаблон содержит символы верхнего регистра Boolean true vim.textwidth Ширина переноса слов при использовании gq Number 80 vim. таймаут Тайм-аут в миллисекундах для переназначенных команд Number 1000 vim.maxmapdepth Максимальное количество раз, когда выполняется сопоставление без использования символа. Обычно это захватывает бесконечные сопоставления, например «: map x y» с «: map y x». Он по-прежнему не ловит «: map g wg», потому что ‘w’ используется перед выполнением следующего сопоставления. Number 1000 vim.whichwrap Управляет переносом в начало и конец строки. Разделенный запятыми набор ключей, который должен переноситься на следующую/предыдущую строку. Клавиши со стрелками представлены [ и ] в режиме вставки, и> в обычном и визуальном режиме. Чтобы обернуть «все», установите это в h, l, , [,].
String ` ` vim.report Порог для сообщения количества строк изменен. Number 2 .vimrc support ⚠️ .vimrc в настоящее время поддерживается экспериментально. Поддерживаются только переназначения, и вы можете столкнуться с ошибками. Сообщите о них! Установите для vim.vimrc.enable значение true и установите vim.vimrc.path соответственно. 🖱️ Multi-Cursor Mode ⚠️ Режим нескольких курсоров является экспериментальным. Сообщайте о проблемах в нашей ветке отзывов. Войдите в режим с несколькими курсорами: В OSX, cmd-d. В Windows: ctrl-d. gb, мы добавили новый ярлык, который эквивалентен cmd-d (OSX) или ctrl-d (Windows). Он добавляет еще один курсор к следующему слову, совпадающему со словом, на котором в данный момент находится курсор. Запуск команды «Добавить курсор выше/ниже» или ярлыка на любой платформе. Если у вас есть несколько курсоров, вы сможете использовать команды Vim по своему усмотрению. Большинство должно работать; некоторые из них не поддерживаются (ref PR # 587). Каждый курсор имеет свой собственный буфер обмена. Нажатие Escape в визуальном режиме с несколькими курсорами приведет к в нормальный режим с несколькими курсорами. Повторное нажатие вернет вас в нормальный режим. 🔌 Эмулированные плагины vim-Airlines ⚠️ Использование этого плагин. Чтобы изменить строку состояния, мы переопределяем конфигурации в вашем рабочем пространстве settings.json, что приводит к увеличению задержки и постоянному изменению различий в вашем рабочем каталоге (см. Проблему № 2124). Измените цвет строки состояния в зависимости от текущего режима. После включения настройте "vim.statusBarColors". Цвета могут быть определены для каждого режима либо как string (только фон), либо как string [] (фон, передний план). "vim.statusBarColorControl": true, "vim.statusBarColors.normal": ["# 8FBCBB", "# 434C5E"], "vim.statusBarColors.insert": "# BF616A", "vim .statusBarColors.visual ":" # B48EAD "," vim.statusBarColors.visualline ":" # B48EAD "," vim.statusBarColors.visualblock ":" # A3BE8C "," vim.statusBarColors.replace ":" # D D "vim.statusBarColors.commandlineinprogress": "# 007ACC", "vim.statusBarColors.searchinprogressmode": "# 007ACC", "vim.statusBarColors.easymotionmode": "# 007ACC", "vim.status7.easymotionmode": "# 007ACC": "," vim.statusBarColors.surroundinputmode ":" # 007ACC ", vim-easymotion На основе на vim-easymotion и настраивается с помощью следующих параметров: Настройка Описание Тип Значение по умолчанию vim.e asymotion Включить/отключить плагин easymotion Boolean false vim.easymotionMarkerBackgroundColor Цвет фона поля маркера. String ‘# 0000’ vim.easymotionMarkerForegroundColorOneChar Цвет шрифта для односимвольных маркеров. String ‘# ff0000’ vim.easymotionMarkerForegroundColorTwoCharFirst Цвет шрифта для первого из двухсимвольных маркеров, используется для отличия от односимвольных маркеров. String ‘# ffb400’ vim.easymotionMarkerForegroundColorTwoCharSecond Цвет шрифта для второго из двухсимвольных маркеров, используемый для различения последовательных маркеров. String ‘ # b98300 ‘ vim.easymotionIncSearchForegroundColor Цвет шрифта для n-символьной команды поиска, используемой для выделения совпадений. Строка ‘# 7fbf00 ‘ vim.easymotionDimColor Цвет шрифта для затемненных символов, используемый, когда #vim. easymotionDimBackground # имеет значение true. String ‘# 777777’ vim.easymotionDimBackground Следует ли затемнять другой текст, пока маркеры видны. Boolean true vim.easymotionMarkerFontWeight Толщина шрифта, используемого для текста маркера. String ‘bold’ vim.easymotionKeys Символы, используемые для имени маркера перехода Строка ‘hklyuiopnm, qwertzxcvbasdgjf;’ vim. easymotionJumpToAnywhereRegex Пользовательское регулярное выражение, соответствующее движению JumpToAnywhere (аналогично Easymotion_re_anywhere). Пример настройки (который также соответствует началу и концу строки, а также комментариям Javascript в дополнение к обычному поведению (обратите внимание на необходимость двойного экранирования): ^ s *. b [A- Za-z0-9] [A-Za-z0-9] b После того, как easymotion станет активны, инициируйте движения с помощью следующих команд. После того, как вы инициируете движение, отобразятся текстовые декораторы/маркеры, и вы можете нажать отображаемые клавиши, чтобы перейти в это положение. лидер настраивается и является по умолчанию. Команда движения Описание s Символ поиска f Поиск символа вперед F Найти символ назад t Til переадресация символа r> T До символа назад w Начало слова вперед b Начало слова в обратном направлении l Соответствует началу и концу слова, camelCase, после _ , а после # вперед h Соответствует началу и концу слова, camelCase, после _ и после # в обратном направлении e Конец слова вперед ge Конец слова назад j Вперед на начало строки k Начало строки назад / … Поиск n-символьного bdt символ Til bdw Начало слова bde Конец слова bdjk Начало строки j код> JumpToAnywhere motion; поведение по умолчанию соответствует началу и концу слова, camelCase, после _ и после # (2s | 2f | 2F | 2t | 2T) и bd2t char>. Разница заключается в количестве символов, необходимом для поиска. Например, 2s требуется два символа и поиск по двум символам. Это сопоставление не является стандартным, поэтому рекомендуется использовать ваше настраиваемое сопоставление. vim-Surround На основе Surround.vim этот плагин используется для работы с окружающими символами, такими как круглые скобки, скобки, кавычки и теги XML. Параметр Описание Тип Значение по умолчанию vim.surround Включить/выключить vim-surround Boolean true t или asили выполнит теги и войдет в режим ввода тега. Использование вместо > для завершения изменения тега сохранит все существующие атрибуты.
Команда окружения Описание ds Удалить существующее окружение cs Изменить существующее окружение на желаемое ys Окружите что-либо чем-нибудь, используя движение (например, «вы окружаете») S Окружать в визуальных режимах (окружает полный выбор) Некоторые примеры: "test" с курсором внутри кавычек введите cs "', чтобы получить 'test' " test " с курсором внутри кавычек введите ds ", чтобы получить test " test " с курсором внутри кавычек, введите cs "t и введите 123>, чтобы получить test 123> vim-commentary Похож на vim-commentary, но использует собственный код VS Переключить комментарий к строке и Переключить комментарий к блоку. Примеры использования: gc — переключает комментарий строки. Например, gcc для переключения комментария строки для текущей строки и gc2j для переключения комментариев строки для текущей строки и следующих двух строк. gC — переключает комментарий блока. Например, gCi), чтобы закомментировать все в скобках. vim-indent-object Основанный на vim-indent-object, он позволяет обрабатывать блоки кода на текущем уровне отступа как текстовые объекты. Полезно в языках, в которых не используются фигурные скобки вокруг операторов (например, Python). Если есть новая строка между открывающей и закрывающей фигурными скобками/тегом, это можно считать агностиком cib/ci {/ci [/cit. Команда Описание ii Этот уровень отступа ai Этот уровень отступа и строка выше (подумайте о операторах if в Python) aI Этот уровень отступа, строка выше и строка после (подумайте if в C/C ++/Java/и т. д.) vim-sneak На основе vim-sneak, он позволяет переходить в любое место, указанное двумя символами. Параметр Описание Тип По умолчанию V alue vim. sneak Включить/отключить vim-sneak Boolean false vim.sneakUseIgnorecaseAndSmartcase Уважайте vim.ignorecase и vim.smartcase при подкрадывании Boolean false После активации скрытности инициируйте движения с помощью следующих команд. Для операторов sneak использует z вместо s, поскольку s уже используется подключаемым модулем объемного звучания. Команда движения Описание s Перейти к первому вхождению S Переместить назад до первого вхождения z Выполнить вперед до первого вхождения Z Выполнить назад к первому вхождению CamelCaseMotion На основе CamelCaseMotion, но не точной эмуляции. Этот плагин предоставляет более простой способ перемещаться по словам camelCase и snake_case. Setting Описание Тип Значение по умолчанию vim.camelCaseMotion .enable Включить/отключить CamelCaseMotion Boolean false После включения CamelCaseMotion доступны следующие движения: Команда движения Описание w Перейти к началу следующего сегмента слова camelCase или snake_case e Перейти к следующему концу сегмента слова camelCase или snake_case b Вернуться к предыдущему началу сегмента слова camelCase или snake_case i w Выбрать/изменить/удалить/и т. д. текущий сегмент слова camelCase или snake_case По умолчанию сопоставляется с , поэтому, например, d2i w удалит текущий и следующий сегменты слова из верблюжьего регистра. Метод ввода Отключить метод ввода при выходе из режима вставки. Настройка Описание vim.autoSwitchInputMethod. enable Логическое значение, обозначающее, включен/выключен autoSwitchInputMethod. vim.autoSwitchInputMethod. defaultIM Метод ввода по умолчанию. vim.autoSwitchInputMethod.obtainIMCmd Полный путь к команде для получения ключа текущего метода ввода. vim.autoSwitchInputMethod.switchIMCmd Полный путь к команде для переключения метода ввода с {im} заполнителем для ключа метода ввода. Для переключения методов ввода можно использовать любую стороннюю программу. Ниже приведено пошаговое руководство по настройке с использованием im-select. Установите im-select (см. Руководство по установке) Найдите ключ метода ввода по умолчанию Mac: Переключите метод ввода на английский, и запустите в своем терминале следующее: //im-select, чтобы вывести метод ввода по умолчанию. В таблице ниже перечислены распространенные раскладки английских клавиш для MacOS. Key Описание com.apple.keylayout.US США com.apple.keylayout.ABC ABC com.apple.keylayout. Британский Британский com.apple.keylayout.Irish Irish com.apple.keylayout.Australian Australian com .apple.keylayout.Dvorak Dvorak com.apple.keylayout.Colemak Colemak Windows: См. Руководство по im-select на как узнать ключ метода ввода. Как правило, если ваша раскладка клавиатуры en_US, ключ метода ввода — 1033 (идентификатор локали en_US). Вы также можете найти свой идентификатор языка на этой странице, где столбец LCID Decimal — это идентификатор языкового стандарта. Настроить vim.autoSwitchInputMethod. MacOS: Учитывая ключ метода ввода com.apple.keylayout.US и im-select, расположенный в /usr/local/bin код>. Конфигурация: "vim.autoSwitchInputMethod.enable": true, "vim.autoSwitchInputMethod.defaultIM": "com.apple.keylayout.US", "vim.autoSwitchInputMethod .obtainIMCmd ":"/usr/local/bin/im-select","vim.autoSwitchInputMethod.switchIMCmd ":"/usr/local/bin/im-select {im} " Windows: Учитывая ключ метода ввода 1033 (en_US) и im- select.exe, расположенный в D:/bin. Конфигурация: "vim.autoSwitchInputMethod.enable": true, "vim.autoSwitchInputMethod.defaultIM": "1033", "vim.autoSwitchInputMethod.obtainIMCmd": "D : \ bin \ im-select.exe "," vim.autoSwitchInputMethod. switchIMCmd ":" D: \ bin \ im-select.exe {im} " Аргумент {im} выше — это параметр командной строки, который будет передан в im-select, обозначающий метод ввода, на который нужно переключиться. При использовании альтернативной программы для переключения методов ввода необходимо добавить аналогичную опцию в конфигурацию. Например, если программа использует my-program -s imKey для переключения метода ввода, vim .autoSwitchInputMethod.switchIMCmd должен быть /path/to/my-program -s {im}. ReplaceWithRegister На основе ReplaceWithRegister — простой способ заменить существующий текст содержимым регистра. Параметр Описание Тип Значение по умолчанию vim.replaceWithRegister Включить/отключить ReplaceWithRegister Boolean false После активации введите gr (скажем, «иди заменить»), за которым следует движение, описывающее текст, который вы хотите заменить, содержимым регистра. Команда движения Описание [count] ["a] gr Заменить текст, описанный движением, содержимым указанного регистра [count] ["a] grr Заменить строки [count] или текущую строку содержимым указанного регистра {Visual} ["a] gr Заменить выделение содержимым указанный регистр vim-textobj-whole Аналогично vim- textobj-whole. Добавляет два полезных текстовых объекта: ae, который представляет все содержимое буфер. т.е., который представляет все содержимое буфера без начальных и конечных пробелов. Usag Примеры: dae — удалить все содержимое буфера. yie — будет извлекать содержимое буфера, кроме начальных и конечных пустых строк. gUae — преобразует весь буфер в верхний регистр. 🎩 Уловки VSCodeVim! В VS Code есть много изящных уловок, и мы стараемся чтобы сохранить некоторые из них: gd — перейти к определению. gq — при визуальном изменении расположения выделенного фрагмента и переносе слов по блокам текста с сохранением стиля комментирования. Отлично подходит для форматирования комментариев к документации. gb — добавляет еще один курсор к следующему найденному слову, которое совпадает со словом под курсором. af — команда визуального режима, которая выделяет все более крупные блоки текста. Например, если у вас есть «blah (foo [bar ‘ba | z’])», тогда сначала будет выбрано «baz». Если вы снова нажмете af, тогда он выберет [bar ‘baz’], а если вы сделаете это в третий раз, он выберет «(foo [bar ‘baz’])». gh — эквивалент наведению указателя мыши на место, где находится курсор. Удобно для просмотра типов и сообщений об ошибках, не дотрагиваясь до мыши! 📚 FAQ Ни один из встроенного кода Visual Studio ctrl (например, ctrl + f, ctrl + v) работают Установите для параметра useCtrlKeys значение false. Перемещение j/k по сгибам открывает сгибы Попробуйте установить для vim.foldfix значение true. Это взлом; он работает нормально, но есть побочные эффекты (см. проблему № 22276). Повторение клавиш не работает Есть ты на Mac? Вы выполнили наши инструкции по настройке для Mac? Есть раздражающие intellisense/уведомления/всплывающие окна, которые я не могу закрыть с помощью ! Или я нахожусь во фрагменте и хочу закрыть intellisense Нажмите shift+, чтобы закрыть все эти поля. Как я могу использовать командную строку в режиме Zen или когда строка состояния отключена? Это расширение предоставляет переназначаемую команду для отображения стиля VS Code версия командной строки быстрого выбора с более ограниченной функциональностью. Это можно переназначить следующим образом в файле настроек VS Code keybindings.json. {"key": "shift +;", "command": "vim.showQuickpickCmdLine", " когда ":" editorTextFocus && vim.mode! = 'Insert' "} Или только для режима Дзен: { "key": "shift +;", "command": "vim.showQuickpickCmdLine", "when": "inZenMode && vim.mode! = 'Insert'"} Как мне переместить курсор по каждой строке дисплея с переносом слов? Если у вас включен перенос слов и вы хотите, чтобы курсор вводил каждую строку с переносом при использовании j, k, ↓ или ↑, установите следующие комбинации клавиш VS Code .json файл настроек. {"key": "up", "command": "cursorUp", "when": "editorTextFocus && vim.active &&! inDebugRepl && ! offerWidgetMultipleSuggestions &&! offerWidgetVisible "}, {" key ":" down "," command ":" cursorDown "," when ":" editorTextFocus && vim.active &&! inDebugRepl &&! offerWidgetMultipleSuggestions &&! sugge stWidgetVisible "}, {" ключ ":" k "," command ":" cursorUp "," when ":" editorTextFocus && vim.active &&! inDebugRepl && vim. mode == 'Нормальный' &&! offerWidgetMultipleSuggestions &&! adviceWidgetVisible "}, {" key ":" j "," command ":" cursorDown "," when ":" editorTextFocus && vim.active &&! inDebugRepl && vim.mode = = 'Нормальный' &&! OfferWidgetMultipleSuggestions &&! SuggWidgetVisible "} Предостережения: Это решение восстанавливает поведение VS Code по умолчанию для j и k, поэтому движения типа 10j не будут работать. Если вам нужно, чтобы эти движения работали, существуют другие, менее эффективные варианты. . Я поменял местами Escape и Caps Lock на setxkbmap, а VSCodeVim не соблюдает обмен Это известный проблема в VS Code, в качестве обходного пути вы можете установить "keyboard.dispatch": "keyCode" и перезапустить VS Code. ❤️ Содействие Этот проект поддерживается группой замечательных людей, и их вклад очень приветствуется ❤️ . Чтобы узнать, как справку, см. наше руководство для участников. Особые пожелания: Спасибо @xconverge за более 100 коммитов в репо. Если вам интересно, почему ваш наименее любимый жук собрался и ушел, вероятно, это был он. Спасибо @Metamist за реализацию EasyMotion! Спасибо @sectioneight за реализацию текстовых объектов! Особые благодарности Кевину Коулману, создавшему наш потрясающий логотип! Приветствуем @chillee aka Horace He за его вклад и тяжелую работу. - 💾 Установка
- Mac
- Windows
- ⚙️ Настройки
- Быстрый пример
- Настройки VSCodeVim
- Интеграция Neovim
- Переназначение клавиш
- "vim.insertModeKeyBindings"/"vim.normalModeKeyBindings"/"vim.visualModeKeyBindings"/"vim. operatorPendingModeKeyBindings "
- "vim.insertModeKeyBindingsNonRecursive"/"normalModeKeyBindingsNonRecursive"/"visualModeKeyBindingsNonRecursive"/"operatorPendingModeKeyBindingsNonRecursive"
- Переназначения отладки
- Настройки Vim
- .vimrc support
- 🖱️ Multi-Cursor Mode
- 🔌 Эмулированные плагины
- vim-Airlines
- vim-easymotion
- vim-Surround
- vim-commentary
- vim-indent-object
- vim-sneak
- CamelCaseMotion
- Метод ввода
- ReplaceWithRegister
- vim-textobj-whole
- 🎩 Уловки VSCodeVim!
- 📚 FAQ
- ❤️ Содействие
- Особые пожелания:
VSCodeVim
Эмуляция Vim для кода Visual Studio
VSCodeVim — это эмулятор Vim для кода Visual Studio.
- 🚚 -emoji> Полный список поддерживаемых функций Vim можно найти в нашей дорожной карте.
- 📃 В нашем журнале изменений описаны критические/основные/незначительные обновления между выпусками.
- ❓ Если вам нужно задать какие-либо вопросы, присоединяйтесь к нам в Slack.
- Сообщайте о недостающих функциях/ошибках на GitHub.
Содержание (щелкните, чтобы развернуть)
- Установка
- Настройка Mac
- Настройка Windows
- Настройка Linux
- Настройки
- Настройки VSCodeVim
- Интеграция Neovim
- Переназначение клавиш
- Настройки Vim
- Режим нескольких курсоров
- Эмулированные плагины
- vim-Airlines
- vim-easymotion
- vim-Surround
- vim-commentary
- vim-indent-object
- vim-sneak
- CamelCaseMotion
- Метод ввода
- ReplaceWithRegister
- vim-textobj-whole
- Уловки VSCodeVim
- FAQ/Устранение неполадок
- Содействие
💾 Установка
VSCodeVim автоматически включается после установки и перезагрузки VS Code.
Mac
Чтобы включить повторение клавиш выполните в Терминале следующее и перезапустите VS Code:
$ defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false # Для VS Code $ defaults напишите com.microsoft.VSCodeInsiders ApplePressAndHoldEnabled -bool false # Для VS Code Insider $ по умолчанию напишите com.visualstudio.code.oss ApplePressAndHo ldEnabled -bool false # Для значений по умолчанию VS Codium $ delete -g ApplePressAndHoldEnabled # При необходимости сбросить глобальное значение по умолчанию
Мы также рекомендуем увеличить настройки Key Repeat и Delay until Repeat в Системные настройки -> Клавиатура .
Windows
Как и в реальном vim, VSCodeVim возьмет на себя ваши клавиши управления . Это поведение можно изменить с помощью настроек useCtrlKeys
и handleKeys
.
⚙️ Настройки
Задокументированные здесь настройки являются подмножеством поддерживаемых настроек; полный список описан на вкладке Contributions
страницы сведений о расширении VSCodeVim, которую можно найти в представлении расширений VS Code.
Быстрый пример
Ниже приведен пример файла settings.json с настройками, относящимися к VSCodeVim:
{"vim.easymotion ": правда", vim. incsearch ": true,« vim.useSystemClipboard »: true,« vim.useCtrlKeys »: true,« vim.hlsearch »: true,« vim.insertModeKeyBindings »: [{« до »: [« j »,« j »] , "после": [""]}], "vim.normalModeKeyBindingsNonRecursive": [{"до": ["", "d"], "после": ["d", "d "]}, {" до ": [" "]," commands ": [": nohl "]}]," vim.leader ":" "," vim.handleKeys ": {" ": false," ": false}}
Настройки VSCodeVim
Эти настройки относятся к VSCodeVim.
Настройка | Описание | Тип | Значение по умолчанию |
---|---|---|---|
vim.changeWordIncludesWhitespace | Включать завершающие пробелы при изменении слова. Это настраивает действие cw , чтобы оно действовало последовательно как его братья и сестры ( yw и dw ) вместо того, чтобы действовать как ce. | Boolean | false |
vim.cursorStylePerMode. {Mode} | Conf Настройте определенный стиль курсора для {Mode} . В опущенных режимах будет использоваться тип курсора по умолчанию. Поддерживаемые курсоры: линия, блок, подчеркивание, тонкая линия, контур блока и тонкое подчеркивание. | String | Нет |
vim.digraphs.{shorthand} | Устанавливает собственные сокращения орграфа, которые могут переопределить по умолчанию. Записи должны сопоставлять двухсимвольное сокращение с описательной строкой и одной или несколькими кодовыми точками UTF16. Пример: "R!": ["🚀", [55357, 56960]] |
Object | {"R!": ["🚀", [0xD83D, 0xDE80]] |
vim.debug.silent | Логическое значение, указывающее, будут ли подавляться сообщения журнала. | Boolean | false |
vim.debug.loggingLevelForConsole | Максимальный уровень сообщений для регистрации в консоли. Журналы видны в инструментах разработчика. Поддерживаемые значения: ‘error’, ‘warn’, ‘info’, ‘verbose’, ‘debug’). | String | error |
vim.debug.loggingLevelForAlert | Максимальный уровень сообщений для представления в виде информационного окна VS Code. Поддерживаемые значения: ‘error’, ‘warn’, ‘info’, ‘verbose’, ‘debug’). | String | error |
vim.disableExtension | Отключить расширение VSCodeVim. Этот параметр также можно переключить с помощью команды toggleVim в палитре команд |
Boolean | false |
vim.handleKeys | Делегировать сконфигурированные ключи, которые будут обрабатываться VS Code, а не расширением VSCodeVim. Любая клавиша в разделе keybindings файла package.json, имеющего vim.use в аргументе when можно передать обратно в VS Code, установив "": false . Пример: использование ctrl + f для поиска (поведение собственного кода VS): "vim.handleKeys": {"": false} . |
String | "": true |
vim.overrideCopy | Заменить команду копирования VS Code нашей собственной, которая корректно работает с VSCodeVim. Если cmd-c/ctrl-c вызывает проблемы, установите для него значение false и пожаловаться здесь. | Boolean | false |
vim.searchHighlightColor | Установить цвет выделения при поиске | String | findMatchHighlightBackground ThemeColor |
vim.startInInsertMode | Запускать в режиме вставки вместо обычного режима | Boolean | false |
vim.useCtrlKeys | Включить переопределение клавиш Ctrl + Vim общие операции VS Code, такие как копирование, вставка, поиск и т. д. | Boolean | true |
vim.visualstar | В визуальном режиме начните поиск с * или # , используя текущий выбор |
Логическое | false |
vim.highlightedyank.enable | Включить выделение при дергании | Boolean | false |
vim.highlightedyank.color | Установить цвет выделенных участков | String | rgba (250, 240, 170, 0.5) |
vim.highlightedyank.duration | Установить продолжительность выделений при резке | Number | 200 |
Интеграция Neovim
⚠️ Экспериментальная функция. Пожалуйста, оставьте отзыв об интеграции neovim здесь.
Чтобы использовать neovim для Ex-команд,
- Установите neovim
- Измените следующие конфигурации:
Настройка | Описание | Тип | Значение по умолчанию |
---|---|---|---|
vim.enableNeovim | Включить Neovim | Boolean | false |
vim. neovimPath | Полный путь к исполняемому файлу neovim. Если оставить пустым, переменная среды PATH будет автоматически проверяться на наличие пути neovim. | String |
Вот несколько идей о том, что вы можете сделать с интеграцией neovim:
- Возможности g
- Команда: normal
- Более быстрый поиск и замена!
Переназначение клавиш
Пользовательские переназначения определяются на в зависимости от режима.
"vim.insertModeKeyBindings"
/ "vim.normalModeKeyBindings"
/"vim.visualModeKeyBindings"
/"vim. operatorPendingModeKeyBindings "
- Переопределения привязки клавиш для использования в режимах вставки, нормальном, operatorPending и визуальном.
- Bind
jj
в
"vim.insertModeKeyBindings": [{"before" : ["j", "j"], "after": [""]}]
- Привязать
£
для перехода к предыдущему целому слову под курсором
"vim.normalModeKeyBindings": [{"before": ["£"], "after": ["#"]}]
- Привязать
:
для отображения палитры команд:
"vim.normalModeKeyBindings": [{"before": [":"], "commands": ["workbench.action.showCommands",]}]
- Свяжите
m
, чтобы добавить закладку, иb
, чтобы открыть список всех закладки (с использованием расширения Bookmarks):
"vim.normalModeKeyBindings": [{"before": ["", "m"], "commands": ["bookmarks.toggle"]}, {"до": [" "," b "]," commands ": [" bookmarks.list "]}]
- Привязать
ZZ
к команде vim: wq
(сохранить и закрыть текущий файл):
"vim.normalModeKeyBindings": [ {"before": ["Z", "Z"], "commands": [": wq"]}]
- Привязать
ctrl + n
для отключения выделения при поиске иw
для сохранения текущего файла:
"vim.normalModeKeyBindings": [{"before": [""], "commands": [": nohl",]}, {"before": ["лидер", "w"], " commands ": [" workbench.action.files.save ",]}]
- Привязать
{
кw
в режиме ожидания оператора заставляетy {
иd {
работать какyw
иdw
соответственно.
"vim.operatorPendingModeKeyBindings": [{"before": ["{"], "after": ["w"]}]
- Привязать
L
к$
иH
на^ ode> в режиме ожидания оператора заставляет
yL
иdH
работать какy $
иd ^
соответственно.
"vim.operatorPendingModeKeyBindings": [{"before": ["L"], "after": ["$"] }, {"до": ["H"], "после": ["^"]}]
- Привязать
>
ив визуальном режиме для отступа/выдвижения строк (повторяемый)
"vim. visualModeKeyBindings ": [{" before ": ["> "]," commands ": [" editor.action.indentLines "]}, {" before ": ["
- Привязать
vim
, чтобы клонировать этот репозиторий в выбранное место.
"vim.visualModeKeyBindings": [{"before": ["", "v", "i", "m"], "команды ": [{" команда ":" git.clone "," args ": [" https://github.com/VSCodeVim/Vim.git "]}]}]
"vim.insertModeKeyBindingsNonRecursive"
/ "normalModeKeyBindingsNonRecursive"
/ "visualModeKeyBindingsNonRecursive"
/ "operatorPendingModeKeyBindingsNonRecursive"
- Нерекурсивные переопределения привязки клавиш для использования в режимах вставки, нормальном и визуальном
- Пример: Замените значение двух ключей, например
j
, наk
иk
наj
для замены курсора вверх и вниз командой с. Обратите внимание, что если вы попытаетесь выполнить эту привязку в обычном режиме,j
будет заменен наk
, аk
будет заменен наj
, бесконечно. Когда это происходит «maxmapdepth» раз (по умолчанию 1000), будет выдано сообщение об ошибке «Рекурсивное отображение E223». Остановите это рекурсивное раскрытие, используя NonRecursive вариант сочетания клавиш.
"vim.normalModeKeyBindingsNonRecursive": [{"before": ["j"], "after ": [" k "]}, {" до ": [" k "]," после ": [" j "]}]
- Привязать
(
до ‘i (‘ в режиме ожидания оператора делает ‘y (‘ и ‘c (‘) такими же, как ‘yi (‘ и ‘ci (‘ соответственно.
)
"vim.operatorPendingModeKeyBindingsNonRecursive": [{"before": ["("], "after": ["i ("]}]
- Привязать
p
в визуальном режиме для вставки без перезаписи текущего регистра
"vim. visualModeKeyBindingsNonRecursive ": [{" до ": [" p ",]," после ": [" p "," g "," v "," y "]}],
Переназначения отладки
-
Правильны ли ваши конфигурации?
Настройте расширение уровень ведения журнала до «отладки», перезапустите VS Code. После загрузки каждой переназначенной конфигурации она выводится на консоль. В консоли Developer Tools выполните y Вы видите какие-либо ошибки?
debug: Remapper: normalModeKeyBindingsNonRecursive. перед = 0. after = ^. debug: Remapper: insertModeKeyBindings. перед = j, j. after = .error: Remapper: insertModeKeyBindings. Неверная конфигурация. Отсутствует "после" клавиши или "команды". before = j, k.
Неверно настроенные конфигурации игнорируются.
-
Обрабатывает ли расширение те ключи, которые вы используете пытаетесь переназначить?
VSCodeVim явно указывает VS Code, какие ключевые события нам важны, через package.json. Если ключ, который вы пытаетесь переназначить, является ключом, с которым vim/vscodevim обычно не обрабатывается, то, скорее всего, это расширение не получает эти ключевые события от VS Code. Когда уровень ведения журнала настроен на «отладка», при нажатии клавиш вы должны увидеть результат, аналогичный:
debug: ModeHandler: handle key = A.debug: ModeHandler: handle key = l.debug: ModeHandler: handle key = .debug: ModeHandler: handle key = .
При нажатии клавиши, которую вы пытаетесь переназначить, вы видите это здесь? Если нет, это означает, что мы не подписываемся на эти ключевые события.
Настройки Vim
Параметры конфигурации, скопированные из vim. Настройки Vim загружаются в следующей последовательности:
-
: set {setting}
-
vim. {setting}
из настроек пользователя/рабочей области. - Настройки VS Code
- Значения по умолчанию VSCodeVim
Параметр | Описание | Тип | Значение по умолчанию |
---|---|---|---|
vim.autoindent | Копировать отступ от текущей строки при запуске новой строки | Boolean | true |
vim.gdefault | Когда on, по умолчанию установлен флаг : substitute g . Это означает, что все совпадения в строке заменяются вместо одного. Когда флаг g присваивается команде : substitute , это переключает замену всего или одного совпадения. |
Логическое | false |
vim.hlsearch | Подсвечивает весь текст, соответствующий текущему поиску | Boolean | false |
vim.ignorecase | Игнорировать регистр в шаблоны поиска | Boolean | true |
vim.incsearch | Показывать следующее совпадение при вводе поиска | Boolean | true |
vim. лидер | Определяет ключ для , который будет использоваться при повторном назначении клавиш |
String |
|
vim.showcmd | Показать (частичную) команду в строке состояния | Boolean | true |
vim.showmodename | Показать имя текущего режима в строке состояния | Boolean | true |
vim.smartcase | Отменить настройку ‘ignorecase’ при поиске шаблон содержит символы верхнего регистра | Boolean | true |
vim.textwidth | Ширина переноса слов при использовании gq |
Number | 80 |
vim. таймаут | Тайм-аут в миллисекундах для переназначенных команд | Number | 1000 |
vim.maxmapdepth | Максимальное количество раз, когда выполняется сопоставление без использования символа. Обычно это захватывает бесконечные сопоставления, например «: map x y» с «: map y x». Он по-прежнему не ловит «: map g wg», потому что ‘w’ используется перед выполнением следующего сопоставления. | Number | 1000 |
vim.whichwrap | Управляет переносом в начало и конец строки. Разделенный запятыми набор ключей, который должен переноситься на следующую/предыдущую строку. Клавиши со стрелками представлены [ и ] в режиме вставки, и |
String | ` ` |
vim.report | Порог для сообщения количества строк изменен. | Number | 2 |
.vimrc support
⚠️ .vimrc в настоящее время поддерживается экспериментально. Поддерживаются только переназначения, и вы можете столкнуться с ошибками. Сообщите о них!
Установите для vim.vimrc.enable
значение true
и установите vim.vimrc.path
соответственно.
🖱️ Multi-Cursor Mode
⚠️ Режим нескольких курсоров является экспериментальным. Сообщайте о проблемах в нашей ветке отзывов.
Войдите в режим с несколькими курсорами:
- В OSX,
cmd-d
. В Windows:ctrl-d
. -
gb
, мы добавили новый ярлык, который эквивалентенcmd-d
(OSX) илиctrl-d
(Windows). Он добавляет еще один курсор к следующему слову, совпадающему со словом, на котором в данный момент находится курсор. - Запуск команды «Добавить курсор выше/ниже» или ярлыка на любой платформе.
Если у вас есть несколько курсоров, вы сможете использовать команды Vim по своему усмотрению. Большинство должно работать; некоторые из них не поддерживаются (ref PR # 587).
- Каждый курсор имеет свой собственный буфер обмена.
- Нажатие Escape в визуальном режиме с несколькими курсорами приведет к в нормальный режим с несколькими курсорами. Повторное нажатие вернет вас в нормальный режим.
🔌 Эмулированные плагины
vim-Airlines
⚠️ Использование этого плагин. Чтобы изменить строку состояния, мы переопределяем конфигурации в вашем рабочем пространстве settings.json, что приводит к увеличению задержки и постоянному изменению различий в вашем рабочем каталоге (см. Проблему № 2124).
Измените цвет строки состояния в зависимости от текущего режима. После включения настройте "vim.statusBarColors"
. Цвета могут быть определены для каждого режима либо как string
(только фон), либо как string []
(фон, передний план).
"vim.statusBarColorControl": true, "vim.statusBarColors.normal": ["# 8FBCBB", "# 434C5E"], "vim.statusBarColors.insert": "# BF616A", "vim .statusBarColors.visual ":" # B48EAD "," vim.statusBarColors.visualline ":" # B48EAD "," vim.statusBarColors.visualblock ":" # A3BE8C "," vim.statusBarColors.replace ":" # D D "vim.statusBarColors.commandlineinprogress": "# 007ACC", "vim.statusBarColors.searchinprogressmode": "# 007ACC", "vim.statusBarColors.easymotionmode": "# 007ACC", "vim.status7.easymotionmode": "# 007ACC": "," vim.statusBarColors.surroundinputmode ":" # 007ACC ",
vim-easymotion
На основе на vim-easymotion и настраивается с помощью следующих параметров:
Настройка | Описание | Тип | Значение по умолчанию |
---|---|---|---|
vim.e asymotion | Включить/отключить плагин easymotion | Boolean | false |
vim.easymotionMarkerBackgroundColor | Цвет фона поля маркера. | String | ‘# 0000’ |
vim.easymotionMarkerForegroundColorOneChar | Цвет шрифта для односимвольных маркеров. | String | ‘# ff0000’ |
vim.easymotionMarkerForegroundColorTwoCharFirst | Цвет шрифта для первого из двухсимвольных маркеров, используется для отличия от односимвольных маркеров. | String | ‘# ffb400’ |
vim.easymotionMarkerForegroundColorTwoCharSecond | Цвет шрифта для второго из двухсимвольных маркеров, используемый для различения последовательных маркеров. | String | ‘ # b98300 ‘ |
vim.easymotionIncSearchForegroundColor | Цвет шрифта для n-символьной команды поиска, используемой для выделения совпадений. | Строка | ‘# 7fbf00 ‘ |
vim.easymotionDimColor | Цвет шрифта для затемненных символов, используемый, когда #vim. easymotionDimBackground # имеет значение true. |
String | ‘# 777777’ |
vim.easymotionDimBackground | Следует ли затемнять другой текст, пока маркеры видны. | Boolean | true |
vim.easymotionMarkerFontWeight | Толщина шрифта, используемого для текста маркера. | String | ‘bold’ |
vim.easymotionKeys | Символы, используемые для имени маркера перехода | Строка | ‘hklyuiopnm, qwertzxcvbasdgjf;’ |
vim. easymotionJumpToAnywhereRegex | Пользовательское регулярное выражение, соответствующее движению JumpToAnywhere (аналогично Easymotion_re_anywhere ). Пример настройки (который также соответствует началу и концу строки, а также комментариям Javascript в дополнение к обычному поведению (обратите внимание на необходимость двойного экранирования): ^ s *. |
b [A- Za-z0-9] | [A-Za-z0-9] b |
После того, как easymotion станет активны, инициируйте движения с помощью следующих команд. После того, как вы инициируете движение, отобразятся текстовые декораторы/маркеры, и вы можете нажать отображаемые клавиши, чтобы перейти в это положение. лидер
настраивается и является
по умолчанию.
Команда движения | Описание |
---|---|
s |
Символ поиска |
f |
Поиск символа вперед |
F |
Найти символ назад |
t |
Til переадресация символа |
T |
До символа назад |
w |
Начало слова вперед |
b |
Начало слова в обратном направлении |
l |
Соответствует началу и концу слова, camelCase, после _ , а после # вперед |
h |
Соответствует началу и концу слова, camelCase, после _ и после # в обратном направлении |
e |
Конец слова вперед |
ge |
Конец слова назад |
j |
Вперед на начало строки |
k |
Начало строки назад |
/ … | Поиск n-символьного |
bdt |
символ Til |
bdw |
Начало слова |
bde |
Конец слова |
bdjk |
Начало строки |
j код> |
JumpToAnywhere motion; поведение по умолчанию соответствует началу и концу слова, camelCase, после _ и после # |
(2s | 2f | 2F | 2t | 2T)
и bd2t char>
. Разница заключается в количестве символов, необходимом для поиска. Например, 2s
требуется два символа и поиск по двум символам. Это сопоставление не является стандартным, поэтому рекомендуется использовать ваше настраиваемое сопоставление.
vim-Surround
На основе Surround.vim этот плагин используется для работы с окружающими символами, такими как круглые скобки, скобки, кавычки и теги XML.
Параметр | Описание | Тип | Значение по умолчанию |
---|---|---|---|
vim.surround | Включить/выключить vim-surround | Boolean | true |
t
или as
или
выполнит теги и войдет в режим ввода тега. Использование
вместо >
для завершения изменения тега сохранит все существующие атрибуты.
Команда окружения | Описание |
---|---|
ds |
Удалить существующее окружение |
cs |
Изменить существующее окружение на желаемое |
ys |
Окружите что-либо чем-нибудь, используя движение (например, «вы окружаете») |
S |
Окружать в визуальных режимах (окружает полный выбор) |
Некоторые примеры:
-
"test"
с курсором внутри кавычек введитеcs "'
, чтобы получить'test'
-
" test "
с курсором внутри кавычек введитеds "
, чтобы получитьtest
-
" test "
с курсором внутри кавычек, введитеcs "t
и введите123>
, чтобы получитьtest 123>
vim-commentary
Похож на vim-commentary, но использует собственный код VS Переключить комментарий к строке и Переключить комментарий к блоку .
Примеры использования:
-
gc
— переключает комментарий строки. Например,gcc
для переключения комментария строки для текущей строки иgc2j
для переключения комментариев строки для текущей строки и следующих двух строк. -
gC
— переключает комментарий блока. Например,gCi)
, чтобы закомментировать все в скобках.
vim-indent-object
Основанный на vim-indent-object, он позволяет обрабатывать блоки кода на текущем уровне отступа как текстовые объекты. Полезно в языках, в которых не используются фигурные скобки вокруг операторов (например, Python).
Если есть новая строка между открывающей и закрывающей фигурными скобками/тегом, это можно считать агностиком cib
/ ci {
/ ci [
/ cit
.
Команда | Описание |
---|---|
ii |
Этот уровень отступа |
ai |
Этот уровень отступа и строка выше (подумайте о операторах if в Python) |
aI |
Этот уровень отступа, строка выше и строка после (подумайте if в C/C ++/Java/и т. д.) |
vim-sneak
На основе vim-sneak, он позволяет переходить в любое место, указанное двумя символами.
Параметр | Описание | Тип | По умолчанию V alue |
---|---|---|---|
vim. sneak | Включить/отключить vim-sneak | Boolean | false |
vim.sneakUseIgnorecaseAndSmartcase | Уважайте vim.ignorecase и vim.smartcase при подкрадывании |
Boolean | false |
После активации скрытности инициируйте движения с помощью следующих команд. Для операторов sneak использует z
вместо s
, поскольку s
уже используется подключаемым модулем объемного звучания.
Команда движения | Описание |
---|---|
s |
Перейти к первому вхождению |
S |
Переместить назад до первого вхождения
|
z |
Выполнить вперед до первого вхождения |
Z |
Выполнить назад к первому вхождению
|
CamelCaseMotion
На основе CamelCaseMotion, но не точной эмуляции. Этот плагин предоставляет более простой способ перемещаться по словам camelCase и snake_case.
Setting | Описание | Тип | Значение по умолчанию |
---|---|---|---|
vim.camelCaseMotion .enable | Включить/отключить CamelCaseMotion | Boolean | false |
После включения CamelCaseMotion доступны следующие движения:
Команда движения | Описание |
---|---|
w |
Перейти к началу следующего сегмента слова camelCase или snake_case |
e |
Перейти к следующему концу сегмента слова camelCase или snake_case |
b |
Вернуться к предыдущему началу сегмента слова camelCase или snake_case |
i w |
Выбрать/изменить/удалить/и т. д. текущий сегмент слова camelCase или snake_case |
По умолчанию
сопоставляется с
, поэтому, например, d2i w
удалит текущий и следующий сегменты слова из верблюжьего регистра.
Метод ввода
Отключить метод ввода при выходе из режима вставки.
Настройка | Описание |
---|---|
vim.autoSwitchInputMethod. enable |
Логическое значение, обозначающее, включен/выключен autoSwitchInputMethod. |
vim.autoSwitchInputMethod. defaultIM |
Метод ввода по умолчанию. |
vim.autoSwitchInputMethod.obtainIMCmd |
Полный путь к команде для получения ключа текущего метода ввода. |
vim.autoSwitchInputMethod.switchIMCmd |
Полный путь к команде для переключения метода ввода с {im} заполнителем для ключа метода ввода. |
Для переключения методов ввода можно использовать любую стороннюю программу. Ниже приведено пошаговое руководство по настройке с использованием im-select.
-
Установите im-select (см. Руководство по установке)
-
Найдите ключ метода ввода по умолчанию
-
Mac:
Переключите метод ввода на английский, и запустите в своем терминале следующее:
//im-select
, чтобы вывести метод ввода по умолчанию. В таблице ниже перечислены распространенные раскладки английских клавиш для MacOS.Key Описание com.apple.keylayout.US США com.apple.keylayout.ABC ABC com.apple.keylayout. Британский Британский com.apple.keylayout.Irish Irish com.apple.keylayout.Australian Australian com .apple.keylayout.Dvorak Dvorak com.apple.keylayout.Colemak Colemak -
Windows:
См. Руководство по im-select на как узнать ключ метода ввода. Как правило, если ваша раскладка клавиатуры en_US, ключ метода ввода — 1033 (идентификатор локали en_US). Вы также можете найти свой идентификатор языка на этой странице, где столбец
LCID Decimal
— это идентификатор языкового стандарта.
-
-
Настроить
vim.autoSwitchInputMethod
.-
MacOS:
Учитывая ключ метода ввода
com.apple.keylayout.US
иim-select
, расположенный в/usr/local/bin код>. Конфигурация:
"vim.autoSwitchInputMethod.enable": true, "vim.autoSwitchInputMethod.defaultIM": "com.apple.keylayout.US", "vim.autoSwitchInputMethod .obtainIMCmd ":"/usr/local/bin/im-select","vim.autoSwitchInputMethod.switchIMCmd ":"/usr/local/bin/im-select {im} "
-
Windows:
Учитывая ключ метода ввода
1033
(en_US) иim- select.exe
, расположенный вD:/bin
. Конфигурация:"vim.autoSwitchInputMethod.enable": true, "vim.autoSwitchInputMethod.defaultIM": "1033", "vim.autoSwitchInputMethod.obtainIMCmd": "D : \ bin \ im-select.exe "," vim.autoSwitchInputMethod. switchIMCmd ":" D: \ bin \ im-select.exe {im} "
-
Аргумент {im}
выше — это параметр командной строки, который будет передан в im-select
, обозначающий метод ввода, на который нужно переключиться. При использовании альтернативной программы для переключения методов ввода необходимо добавить аналогичную опцию в конфигурацию. Например, если программа использует my-program -s imKey
для переключения метода ввода, vim .autoSwitchInputMethod.switchIMCmd
должен быть /path/to/my-program -s {im}
.
ReplaceWithRegister
На основе ReplaceWithRegister — простой способ заменить существующий текст содержимым регистра.
Параметр | Описание | Тип | Значение по умолчанию |
---|---|---|---|
vim.replaceWithRegister | Включить/отключить ReplaceWithRegister | Boolean | false |
После активации введите gr (скажем, «иди заменить»), за которым следует движение, описывающее текст, который вы хотите заменить, содержимым регистра.
Команда движения | Описание |
---|---|
[count] ["a] gr |
Заменить текст, описанный движением, содержимым указанного регистра |
[count] ["a] grr |
Заменить строки [count] или текущую строку содержимым указанного регистра |
{Visual} ["a] gr |
Заменить выделение содержимым указанный регистр |
vim-textobj-whole
Аналогично vim- textobj-whole.
Добавляет два полезных текстовых объекта:
-
ae
, который представляет все содержимое буфер. -
т.е.
, который представляет все содержимое буфера без начальных и конечных пробелов.
Usag Примеры:
-
dae
— удалить все содержимое буфера. -
yie
— будет извлекать содержимое буфера, кроме начальных и конечных пустых строк. -
gUae
— преобразует весь буфер в верхний регистр.
🎩 Уловки VSCodeVim!
В VS Code есть много изящных уловок, и мы стараемся чтобы сохранить некоторые из них:
-
gd
— перейти к определению. -
gq
— при визуальном изменении расположения выделенного фрагмента и переносе слов по блокам текста с сохранением стиля комментирования. Отлично подходит для форматирования комментариев к документации. -
gb
— добавляет еще один курсор к следующему найденному слову, которое совпадает со словом под курсором. -
af
— команда визуального режима, которая выделяет все более крупные блоки текста. Например, если у вас есть «blah (foo [bar ‘ba | z’])», тогда сначала будет выбрано «baz». Если вы снова нажметеaf
, тогда он выберет [bar ‘baz’], а если вы сделаете это в третий раз, он выберет «(foo [bar ‘baz’])». -
gh
— эквивалент наведению указателя мыши на место, где находится курсор. Удобно для просмотра типов и сообщений об ошибках, не дотрагиваясь до мыши!
📚 FAQ
-
Ни один из встроенного кода Visual Studio
ctrl
(например,ctrl + f
,ctrl + v
) работаютУстановите для параметра
useCtrlKeys
значениеfalse
. -
Перемещение
j
/k
по сгибам открывает сгибыПопробуйте установить для
vim.foldfix
значениеtrue
. Это взлом; он работает нормально, но есть побочные эффекты (см. проблему № 22276). -
Повторение клавиш не работает
Есть ты на Mac? Вы выполнили наши инструкции по настройке для Mac?
-
Есть раздражающие intellisense/уведомления/всплывающие окна, которые я не могу закрыть с помощью
Нажмите
shift+
, чтобы закрыть все эти поля. -
Как я могу использовать командную строку в режиме Zen или когда строка состояния отключена?
Это расширение предоставляет переназначаемую команду для отображения стиля VS Code версия командной строки быстрого выбора с более ограниченной функциональностью. Это можно переназначить следующим образом в файле настроек VS Code keybindings.json.
{"key": "shift +;", "command": "vim.showQuickpickCmdLine", " когда ":" editorTextFocus && vim.mode! = 'Insert' "}
Или только для режима Дзен:
{ "key": "shift +;", "command": "vim.showQuickpickCmdLine", "when": "inZenMode && vim.mode! = 'Insert'"}
-
Как мне переместить курсор по каждой строке дисплея с переносом слов?
Если у вас включен перенос слов и вы хотите, чтобы курсор вводил каждую строку с переносом при использовании j , k , ↓ или ↑ , установите следующие комбинации клавиш VS Code .json файл настроек.
{"key": "up", "command": "cursorUp", "when": "editorTextFocus && vim.active &&! inDebugRepl && ! offerWidgetMultipleSuggestions &&! offerWidgetVisible "}, {" key ":" down "," command ":" cursorDown "," when ":" editorTextFocus && vim.active &&! inDebugRepl &&! offerWidgetMultipleSuggestions &&! sugge stWidgetVisible "}, {" ключ ":" k "," command ":" cursorUp "," when ":" editorTextFocus && vim.active &&! inDebugRepl && vim. mode == 'Нормальный' &&! offerWidgetMultipleSuggestions &&! adviceWidgetVisible "}, {" key ":" j "," command ":" cursorDown "," when ":" editorTextFocus && vim.active &&! inDebugRepl && vim.mode = = 'Нормальный' &&! OfferWidgetMultipleSuggestions &&! SuggWidgetVisible "}
Предостережения: Это решение восстанавливает поведение VS Code по умолчанию для j и k , поэтому движения типа
10j
не будут работать. Если вам нужно, чтобы эти движения работали, существуют другие, менее эффективные варианты. . -
Я поменял местами Escape и Caps Lock на setxkbmap, а VSCodeVim не соблюдает обмен
Это известный проблема в VS Code, в качестве обходного пути вы можете установить
"keyboard.dispatch": "keyCode"
и перезапустить VS Code.
❤️ Содействие
Этот проект поддерживается группой замечательных людей, и их вклад очень приветствуется ❤️ . Чтобы узнать, как справку, см. наше руководство для участников.
Особые пожелания:
- Спасибо @xconverge за более 100 коммитов в репо. Если вам интересно, почему ваш наименее любимый жук собрался и ушел, вероятно, это был он.
- Спасибо @Metamist за реализацию EasyMotion!
- Спасибо @sectioneight за реализацию текстовых объектов!
- Особые благодарности Кевину Коулману, создавшему наш потрясающий логотип!
- Приветствуем @chillee aka Horace He за его вклад и тяжелую работу.