/ Vim

Содержание
  1. 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 за его вклад и тяжелую работу.
  2. 💾 Установка
  3. Mac
  4. Windows
  5. ⚙️ Настройки
  6. Быстрый пример
  7. Настройки VSCodeVim
  8. Интеграция Neovim
  9. Переназначение клавиш
  10. "vim.insertModeKeyBindings"/"vim.normalModeKeyBindings"/"vim.visualModeKeyBindings"/"vim. operatorPendingModeKeyBindings "
  11. "vim.insertModeKeyBindingsNonRecursive"/"normalModeKeyBindingsNonRecursive"/"visualModeKeyBindingsNonRecursive"/"operatorPendingModeKeyBindingsNonRecursive"
  12. Переназначения отладки
  13. Настройки Vim
  14. .vimrc support
  15. 🖱️ Multi-Cursor Mode
  16. 🔌 Эмулированные плагины
  17. vim-Airlines
  18. vim-easymotion
  19. vim-Surround
  20. vim-commentary
  21. vim-indent-object
  22. vim-sneak
  23. CamelCaseMotion
  24. Метод ввода
  25. ReplaceWithRegister
  26. vim-textobj-whole
  27. 🎩 Уловки VSCodeVim!
  28. 📚 FAQ
  29. ❤️ Содействие
  30. Особые пожелания:


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-команд,

  1. Установите neovim
  2. Измените следующие конфигурации:
Настройка Описание Тип Значение по умолчанию
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 "]}], 

Переназначения отладки

  1. Правильны ли ваши конфигурации?

    Настройте расширение уровень ведения журнала до «отладки», перезапустите VS Code. После загрузки каждой переназначенной конфигурации она выводится на консоль. В консоли Developer Tools выполните y Вы видите какие-либо ошибки?

     debug: Remapper: normalModeKeyBindingsNonRecursive.  перед = 0.  after = ^. debug: Remapper: insertModeKeyBindings.  перед = j, j.  after =  .error: Remapper: insertModeKeyBindings.  Неверная конфигурация. Отсутствует "после" клавиши или "команды".  before = j, k. 

    Неверно настроенные конфигурации игнорируются.

  2. Обрабатывает ли расширение те ключи, которые вы используете пытаетесь переназначить?

    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 загружаются в следующей последовательности:

  1. : set {setting}
  2. vim. {setting} из настроек пользователя/рабочей области.
  3. Настройки VS Code
  4. Значения по умолчанию 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 станет активны, инициируйте движения с помощью следующих команд. После того, как вы инициируете движение, отобразятся текстовые декораторы/маркеры, и вы можете нажать отображаемые клавиши, чтобы перейти в это положение. лидер настраивается и является по умолчанию.

r>

Команда движения Описание
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.

  1. Установите im-select (см. Руководство по установке)

  2. Найдите ключ метода ввода по умолчанию

    • 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 — это идентификатор языкового стандарта.

  3. Настроить 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 за его вклад и тяжелую работу.
Оцените статью
Botgadget.ru
Добавить комментарий