Аналог vim в windows

Обновлено: 03.07.2024

Эмуляция Vim для кода Visual Studio

VSCodeVim — это эмулятор Vim для Visual Studio Code.

  • 🚚 Полный список поддерживаемых функций Vim см. в нашей дорожной карте.
  • 📃 В нашем журнале изменений указаны критические/основные/незначительные обновления между выпусками.
  • ❓ Если вам нужно задать какие-либо вопросы, присоединяйтесь к нам в Slack.
  • Сообщите об отсутствующих функциях/ошибках на GitHub.

💾 Установка

VSCodeVim автоматически включается после установки и перезагрузки VS Code.

Чтобы включить повторение клавиш, выполните в терминале следующее, выйдите из системы и войдите снова, а затем перезапустите VS Code:

Мы также рекомендуем увеличить параметры повтора клавиш и задержки до повтора в Системные настройки -> Клавиатура.

Окна

Как и настоящий vim, VSCodeVim возьмет на себя ваши клавиши управления. Это поведение можно настроить с помощью параметров useCtrlKeys и handleKeys.

⚙️ Настройки

Задокументированные здесь настройки являются подмножеством поддерживаемых настроек; полный список описан на вкладке Contributions на странице сведений о расширении VSCodeVim, которую можно найти в представлении расширений VS Code.

Быстрый пример

Ниже приведен пример файла settings.json с настройками, относящимися к VSCodeVim:

Настройки VSCodeVim

Эти настройки относятся к VSCodeVim.

Интеграция Neovim

:предупреждение: экспериментальная функция. Пожалуйста, оставьте отзыв об интеграции neovim здесь.

Чтобы использовать neovim для Ex-команд,

  1. Установить неовим
  2. Измените следующие конфигурации:

Вот несколько идей о том, что можно сделать с интеграцией neovim:

Переназначение клавиш

Пользовательские переназначения определяются для каждого режима отдельно.

"vim.insertModeKeyBindings" / "vim.normalModeKeyBindings" / "vim.visualModeKeyBindings" / "vim.operatorPendingModeKeyBindings"

  • Переопределение привязки клавиш для использования в режимах вставки, нормальном режиме, режиме operatorPending и визуальном режиме.
  • Ключевые переопределения могут включать «до», «после», «команды» и «без звука».
  • Привязать jj к в режиме вставки:
  • Привяжите £ для перехода к предыдущему целому слову под курсором:
  • Привязать : чтобы показать палитру команд и не показывать сообщение в строке состояния:
  • Свяжите m, чтобы добавить закладку, и b, чтобы открыть список всех закладок (используя расширение «Закладки»):
  • Свяжите Ctrl+n, чтобы отключить подсветку поиска, и w, чтобы сохранить текущий файл:
  • Привязка < к w в режиме ожидания оператора заставляет y< и d< работать как yw и dw соответственно:
  • Привязка L к $ и H к ^ в режиме ожидания оператора заставляет yL и dH работать как y$ и d^ соответственно:
  • Привязать > и в визуальном режиме к линиям отступа/выступа (повторяется):
  • Привяжите vim для клонирования этого репозитория в выбранное место:

"vim.insertModeKeyBindingsNonRecursive" / "normalModeKeyBindingsNonRecursive" / "visualModeKeyBindingsNonRecursive" / "operatorPendingModeKeyBindingsNonRecursive"

  • Нерекурсивные переопределения привязки клавиш для использования в режимах вставки, обычном и визуальном режимах.
  • Пример. Поменяйте значения двух клавиш, таких как j на k и k на j, чтобы поменять местами команды перемещения курсора вверх и вниз. Обратите внимание, что если вы попытаетесь выполнить эту привязку в обычном режиме, j будет заменен на k, а k будет заменен на j, снова и снова. Когда это происходит 'maxmapdepth' раз (по умолчанию 1000), будет выдано сообщение об ошибке 'E223 Recursive Mapping'. Остановите это рекурсивное расширение, используя нерекурсивную вариацию сочетаний клавиш:
  • Привязка ( к 'i(' в режиме ожидания оператора заставляет 'y(' и 'c(' работать как 'yi(' и 'ci(' соответственно):
  • Привяжите p в визуальном режиме к вставке без переопределения текущего регистра:

Отладка переназначений

Ваши настройки верны?

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

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

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

VSCodeVim явно указывает VS Code, какие ключевые события нам нужны, через package.json. Если ключ, который вы пытаетесь переназначить, является ключом, который vim/vscodevim обычно не обрабатывает, то, скорее всего, это расширение не получает эти ключевые события от VS Code. С уровнем ведения журнала, установленным на «отладка», при нажатии клавиш вы должны увидеть вывод, похожий на:

Когда вы нажимаете клавишу, которую пытаетесь переназначить, вы видите ее здесь? Если нет, значит, мы не подписываемся на эти ключевые события. Эти клавиши по-прежнему можно переназначить, используя привязки клавиш VSCode.json (см. следующий раздел: Переназначение более сложных комбинаций клавиш).

Переназначение более сложных комбинаций клавиш

Настоятельно рекомендуется переназначать клавиши с помощью команд vim, таких как "vim.normalModeKeyBindings" (см. здесь). Но иногда обычных команд переназначения недостаточно, так как они не поддерживают все возможные комбинации клавиш (например, Alt+key или Ctrl+Shift+key ). В этом случае можно создать новые привязки клавиш внутри keybindings.json. Для этого откройте keybindings.json в VSCode с помощью CTRL+SHIFT+P и выберите Открыть сочетания клавиш (JSON) .

Затем вы можете добавить новую запись в сочетания клавиш следующим образом:

Например, чтобы повторно привязать Ctrl+Shift+Y к yy (линия рывка) VSCodeVim в обычном режиме, добавьте это в свой keybindings.json:

Если keybindings.json пуст при первом открытии, обязательно добавьте в файл открывающие [ и закрывающие ] квадратные скобки, так как привязки клавиш должны находиться внутри массива JSON.

Режимы Vim

Вот все режимы, используемые VSCodeVim:

< /tr>
Режим
Нормальный
Вставка
Visual
VisualBlock
VisualLine
SearchInProgressMode
CommandlineInProgress
Заменить
EasyMotionMode
EasyMotionInputMode
SurroundInputMode
OperatorPendingMode
Отключено

При перепривязке ключей в keybindings.json с использованием контекста предложения when полезно знать, в каком режиме сейчас находится vim. Например, чтобы написать «предложение when», которое проверяет, находится ли vim в настоящее время в обычном или визуальном режиме, можно написать следующее:

Настройки Vim

Параметры конфигурации, скопированные из vim. Настройки Vim загружаются в следующей последовательности:

  1. :установить
  2. вим. в настройках пользователя/рабочей области.
  3. Настройки кода VS
  4. Значения VSCodeVim по умолчанию

Поддержка .vimrc

:предупреждение: поддержка .vimrc в настоящее время является экспериментальной. Поддерживаются только переназначения, и вы можете столкнуться с ошибками. Пожалуйста, сообщите о них!

Установите для vim.vimrc.enable значение true и задайте соответствующим образом vim.vimrc.path.

🖱️ Мультикурсорный режим

:предупреждение: Мультикурсорный режим является экспериментальным. Пожалуйста, сообщайте о проблемах в нашей ветке обратной связи.

Войти в мультикурсорный режим можно следующим образом:

  • В OS X cmd-d . В Windows нажмите ctrl-d .
  • gb , новое сочетание клавиш, которое мы добавили и которое эквивалентно cmd-d (OSX) или ctrl-d (Windows). Он добавляет еще один курсор к следующему слову, совпадающему со словом, на котором в данный момент находится курсор.
  • Запуск «Добавить курсор выше/ниже» или ярлык на любой платформе.
  • Каждый курсор имеет собственный буфер обмена.
  • Нажатие Escape в многокурсорном визуальном режиме приведет вас к обычному мультикурсорному режиму. Повторное нажатие вернет вас в обычный режим.

🔌 Эмулируемые плагины

вим-авиакомпания

Изменить цвет строки состояния в зависимости от текущего режима. После включения настройте «vim.statusBarColors». Цвета могут быть определены для каждого режима либо как строка (только фон), либо как строка [] (фон, передний план).

vim-легкое движение

На основе vim-easymotion и настраивается с помощью следующих параметров:

После активации easymotion инициируйте движения, используя следующие команды. После того, как вы инициируете движение, будут отображаться текстовые декораторы/маркеры, и вы можете нажимать отображаемые клавиши, чтобы перейти к этой позиции. лидер настраивается и по умолчанию \.

(2s|2f|2F|2t|2T) и bd2t char> также доступны. Разница заключается в количестве символов, необходимом для поиска. Например, для 2s требуется два символа, а для поиска по двум символам. Это сопоставление не является стандартным сопоставлением, поэтому рекомендуется использовать собственное сопоставление.

объемный звук

Подключаемый модуль, основанный на Surround.vim, используется для работы с окружающими символами, такими как скобки, квадратные скобки, кавычки и XML-теги.

< /tbody>
Настройка Описание Тип Значение по умолчанию
vim.surround Включить/отключить vim-surround Boolean true

t или as или перейдет в режим ввода тега. Использование вместо > для завершения изменения тега сохранит все существующие атрибуты.

Команда Surround Описание
ys Добавить желаемое окружение вокруг текста, определяемое
ds Удалить существующее окружение
cs Изменить существующий объемный звук на желаемый
S Объемный звук в визуальных режимах (окружает полный выбор)

  • "test" с курсором в кавычках, введите cs"', чтобы в итоге получилось "test"
  • "test" с курсором в кавычках, введите ds", чтобы закончить с test
  • "test" с курсором в кавычках, введите cs"t и введите 123>, чтобы завершить тест

vim-комментарий

Аналогичен vim-commentary, но использует собственные функции VS Code Переключить строчный комментарий и Переключить блочный комментарий.

  • gc — включение/выключение комментария к строке. Например, gcc для переключения строкового комментария для текущей строки и gc2j для переключения строковых комментариев для текущей строки и следующих двух строк.
  • gC – блокировка комментариев. Например, gCi), чтобы закомментировать все, что находится в скобках.

vim-отступ-объект

Основываясь на vim-indent-object, он позволяет обрабатывать блоки кода с текущим уровнем отступа как текстовые объекты. Полезно в языках, в которых операторы не заключаются в фигурные скобки (например, в Python).

Если между открывающей и закрывающей фигурными скобками / тегом есть новая строка, ее можно считать независимой cib / ci< / ci[ / cit .

вим-подкрасться

На основе vim-sneak он позволяет прыгать в любое место, указанное двумя символами.

Команда Описание
ii Этот уровень отступа
ai Этот уровень отступа и строка выше (подумайте об операторах if в Python)
aI Этот уровень отступа, строка выше и строка после (представьте операторы if в C/C++/Java/и т. д.)
< tr> < /tbody>
Настройка Описание Тип Значение по умолчанию
vim.sneak Включить/отключить vim-sneak Boolean false
vim.sneakUseIgnorecaseAndSmartcase Учитывать vim.ignorecase и vim.smartcase при скрытии Boolean false

После того, как скрытность активна, инициируйте движения, используя следующие команды. Для операторов Sneak использует z вместо s, потому что s уже используется подключаемым модулем объемного звучания.

< /tr>
Команда движения Описание
s Перейти к первому вхождению
S Перейти назад к первому вхождению
z Выполнить вперед до первого вхождения
Z Выполнить в обратном направлении до первого вхождения

Верблюжье дело

На основе CamelCaseMotion, хотя и не является точной эмуляцией. Этот подключаемый модуль обеспечивает более простой способ перемещения между словами в CamelCase и Snake_Case.

< /tbody>
Настройка Описание Тип Значение по умолчанию
vim.camelCaseMotion.enable Включить/отключить CamelCaseMotion Boolean false

После включения CamelCaseMotion становятся доступными следующие движения:

Команда движения Описание
w Перейти к началу следующего сегмента слова в верблюжьем или змеином регистре
e Перейти к следующему концу сегмента слова в верблюжьем или змеином регистре< /td>
b Вернуться к предыдущему началу сегмента слова в CamelCase или Snake_Case
iw< /td> Выбрать/изменить/удалить/и т.д. текущий сегмент слова в CamelCase или Snake_Case

По умолчанию сопоставляется с \ , поэтому, например, d2i\w удалит текущий и следующий сегмент слова в верблюжьем регистре.

Метод ввода

Отключить метод ввода при выходе из режима вставки.

Настройка Описание
vim.autoSwitchInputMethod.enable Логическое значение, указывающее, включен или выключен autoSwitchInputMethod.
vim.autoSwitchInputMethod.defaultIM Метод ввода по умолчанию.
vim.autoSwitchInputMethod.obtainIMCmd Полный путь к команде для получения ключа текущего метода ввода.
vim.autoSwitchInputMethod. switchIMCmd Полный путь к команде для переключения метода ввода с заполнителем для ключа метода ввода.

Для переключения методов ввода можно использовать любую стороннюю программу. Далее будет рассмотрена настройка с использованием im-select.

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

Переключите способ ввода на английский и выполните в терминале следующее: /

/im-select для вывода метода ввода по умолчанию. В таблице ниже перечислены распространенные раскладки клавиш английского языка для MacOS.

См. руководство im-select, чтобы узнать, как определить ключ метода ввода. Как правило, если ваша раскладка клавиатуры en_US, клавиша метода ввода — 1033 (идентификатор локали en_US). Вы также можете найти свой идентификатор локали на этой странице, где столбец LCID Decimal — это идентификатор локали.

Учитывая ключ метода ввода 1033 (en_US) и im-select.exe, расположенный по адресу D:/bin. Конфигурация:

Аргумент выше — это параметр командной строки, который будет передан в im-select, обозначающий метод ввода, на который нужно переключиться. Если вы используете альтернативную программу для переключения методов ввода, вы должны добавить аналогичную опцию в конфигурацию. Например, если программа использует my-program -s imKey для переключения метода ввода, vim.autoSwitchInputMethod.switchIMCmd должен быть /path/to/my-program -s .

Заменитьрегистром

Основанный на ReplaceWithRegister простой способ заменить существующий текст содержимым регистра.

После активации введите gr (скажите "перейти к замене"), а затем движением, чтобы описать текст, который вы хотите заменить содержимым регистра.

Настройка Описание Тип Значение по умолчанию
vim.replaceWithRegister Включить/отключить ReplaceWithRegister Boolean false
Команда движения Описание
[count]["a] gr Заменить текст, описываемый движением, содержимым указанного регистра
[count]["a]grr Заменить [количество] строк или текущую строку содержимым указанного регистра
["a]gr Заменить выделение содержимым указанный регистр

vim-textobj-весь

Добавляет два полезных текстовых объекта:

  • ae, представляющий все содержимое буфера.
  • то есть представляет все содержимое буфера без начальных и конечных пробелов.
  • dae — удалить все содержимое буфера.
  • yie — извлечет содержимое буфера, за исключением начальных и конечных пустых строк.
  • gUae — преобразовать весь буфер в верхний регистр.

vim-textobj-аргументы

Аналогично текстовому объекту аргумента в target.vim. Это простой способ работы с аргументами внутри функций в большинстве языков программирования.

Команда движения Описание
ia Аргумент без разделителей.
aa Аргумент, включая разделители.
< /p>
  • cia — изменить аргумент под курсором, сохранив при этом разделители, такие как запятая, .
  • daa — удалит весь аргумент под курсором и разделители, если они есть.

🎩 Трюки VSCodeVim!

В VS Code есть много отличных приемов, и мы стараемся сохранить некоторые из них:

  • gd — перейти к определению.
  • gq — визуальное выделение блоков текста с перекомпоновкой и переносом слов с сохранением стиля комментирования. Отлично подходит для форматирования комментариев к документации.
  • gb — добавляет еще один курсор к следующему найденному слову, совпадающему со словом под курсором.
  • af - команда визуального режима, которая выбирает все более крупные блоки текста. Например, если у вас есть «blah (foo [bar 'ba|z'])», то сначала будет выбрано «baz». Если вы снова нажмете af, он выберет [bar 'baz'], а если вы нажмете его в третий раз, он выберет "(foo [bar 'baz'])".
  • gh — эквивалентно наведению указателя мыши на то место, где находится курсор. Удобно для просмотра типов и сообщений об ошибках без использования мыши!

Ни одна из встроенных команд Visual Studio Code ctrl (например, ctrl+f , ctrl+v ) не работает

Перемещение j / k по сгибам открывает складки

Повтор клавиш не работает

У вас Mac? Вы ознакомились с нашими инструкциями по настройке Mac?

Есть раздражающие intellisense/уведомления/всплывающие окна, которые я не могу закрыть! Или я нахожусь во фрагменте и хочу закрыть intellisense

Нажмите Shift+, чтобы закрыть все эти поля.

Как я могу использовать командную строку в режиме Zen или когда строка состояния отключена?

Это расширение предоставляет переназначаемую команду для отображения версии командной строки быстрого выбора в стиле VS Code с более ограниченной функциональностью. Это можно переназначить следующим образом в файле настроек keybindings.json VS Code.

Или только для режима Zen:

Как перемещать курсор по каждой строке дисплея с помощью переноса слов?

Если у вас включен перенос слов и вы хотите, чтобы курсор вводил каждую строку с переносом при использовании j, k, ↓ или ↑, установите следующее в файле настроек VS Code keybindings.json.

Предостережения: это решение восстанавливает поведение VS Code по умолчанию для клавиш j и k, поэтому движения, подобные 10j, не будут работать. Если вам нужно, чтобы эти движения работали, существуют другие, менее эффективные варианты.

Я поменял Escape и Caps Lock на setxkbmap, и VSCodeVim не соблюдает обмен

Это известная проблема в VS Code. В качестве обходного пути вы можете установить "keyboard.dispatch": "keyCode" и перезапустить VS Code.

❤️ Участие

Этот проект поддерживается группой замечательных людей, и участие в нем приветствуется :heart:.Краткое руководство о том, как вы можете помочь, см. в нашем руководстве.

Меня раздражает использование Блокнота на моем компьютере с Windows XP, когда я хочу выполнять более сложные манипуляции с текстом. После использования VI в различных версиях UNIX я хотел бы получить что-то с его мощью на моем компьютере с Windows без необходимости полной установки Cygwin. Кто-нибудь может порекомендовать программу, которая это делает?

смеется @ шарлатан. Сам никогда не пользовался emacs, но поскольку VI поставляется с каждой установкой UNIX, было рекомендовано изучить это, и у меня никогда не будет проблем, когда я доберусь до машины UNIX

5 ответов 5

gvim — это версия vim с графическим интерфейсом (улучшенный vi). Также доступен vim для командной строки Windows.

У меня даже нет командной строки vi в моей установке cygwin, вместо этого я использую ее. он построен так, что не нуждается в cygwin, поэтому это не самая чистая интеграция, но она работает.

Конечно. Есть Vim - vi улучшенный. Он предлагает порт Windows. Настоятельно рекомендуется.

Я использую WinVI. Он легкий, и вы можете легко заменить им обычный блокнот. Хорошо работает в Windows 7 как в 32-разрядной, так и в 64-разрядной версии.

С такими вещами, как vi (и его различными вариантами), всегда есть несколько церквей. Из личного опыта я предпочитаю gvim для Windows.

Однако вас также может заинтересовать Vimperator, бесплатный подключаемый модуль Firefox, обеспечивающий управление Firefox в стиле vim, и ViEmu (коммерческий), который предоставляет аналогичные возможности для офиса, визуальной студии и SQL Server.

Кроме того, что упоминают другие, есть также Cream. Это вариант gvim, настроенный таким образом, чтобы попытаться имитировать более новые современные редакторы, менее ориентированные на клавиатуру.

Я привык к gvim, но должен признать, что это интересный небольшой проект.

Вы можете использовать его способом Cream или способом gvim (подробнее см. на странице).

Я не думаю, что сливки хороши для тех, кто хочет бодрости. Он может использовать vim в качестве серверной части, но если вы используете конфигурацию по умолчанию, вы не сможете выйти из режима вставки!

Ну, в таком случае даже vim вряд ли можно считать эквивалентом vi. Поскольку для тех, кто знает оба, очевидно, что разница между ними огромна. Да, у обоих есть режим i и n, но на этом сходство заканчивается. IMO, Cream — довольно мощный редактор для тех, кто хочет научиться им пользоваться и иметь что-то среднее между редакторами vi/vim/ и windows. Вы также можете использовать его в чистом режиме vim, если хотите (где-то на панели инструментов есть опция). Так что я действительно не вижу проблемы.

 Куинси Ларсон

Куинси Ларсон

Руководство по установке Vim для Windows — Как запустить текстовый редактор Vim в PowerShell на вашем ПК

Vim — мощный редактор кода. Настолько мощный, что он установлен по умолчанию как в Linux, так и в Mac.

Но если вы используете Windows в качестве операционной системы, вам нужно будет установить Vim отдельно.

К счастью, Microsoft упрощает установку Vim и его запуск на вашем ПК.

Как скачать Vim

Они создали специальный самозапускающийся установщик, который проведет вас через процесс установки Vim в нужное место на вашем жестком диске.

Как установить Vim

Обратите внимание, что для Windows вы технически загрузите что-то под названием gVim, которое представляет собой версию Vim с базовым графическим интерфейсом пользователя (GUI). Вы можете установить его, загрузив этот исполняемый установщик.

signal-attachment-2020-05-07-144326_005-1

Скриншот того, что вы увидите при попытке открыть файл. Поскольку это файл .exe, Windows сначала запросит ваше разрешение.

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

signal-attachment-2020-05-07-144326_004

Скриншот мастера, который вы увидите при первом запуске установщика Vim

У них есть рекомендуемая "типичная" установка. но если у вас достаточно большой жесткий диск, нет ничего плохого в том, чтобы продолжить установку всего, выбрав «полный» вариант:

signal-attachment-2020-05-07-144326_003

Скриншот программы установки Vim, где вы можете выбрать, какие части Vim вы хотите установить.

Как запустить Vim в PowerShell

После того как вы установили Vim, вы сможете запустить его из командной строки Windows.

Обратите внимание, что по состоянию на 2020 год PowerShell имеет все те же функции, что и CMD, а также многое другое. Я рекомендую использовать PowerShell для всего.

Вы можете открыть PowerShell из строки меню Windows, введя "powershell" в поле поиска на панели запуска.

Windows откроет PowerShell, и вы получите командную строку, которая выглядит примерно так:

signal-attachment-2020-05-07-144326_001

Скриншот командной строки Windows PowerShell.

Когда вы окажетесь в PowerShell, вот как запустить сам Vim. Все, что вам нужно сделать, это ввести «vim» и нажать Enter. Это откроет Vim. Когда Vim откроется, вы должны увидеть следующее:

signal-attachment-2020-05-07-144326_002

Скриншот Vim при первом открытии.

Поздравляем! Теперь у вас установлен Vim.

Как запустить Vim внутри VS Code

Если вы уже используете VS Code и хотите получить большую скорость Vim без потери функциональности VS Code, у меня есть хорошие новости. Можно запустить Vim-подобный интерфейс прямо в VS Code.

В этом вам поможет подключаемый модуль Vim для VS Code. На момент написания этой статьи этот плагин был установлен почти 2 миллиона раз.

Как научиться правильно использовать Vim

Vim — мощный редактор кода, и вам потребуется много практики, чтобы освоиться с ним.

Вот несколько руководств по Vim, которые действительно помогут вам быстро освоить основы и быстро освоить работу.

Начнем с того, что Vim отличается от других редакторов кода наличием "режимов". Здесь описаны все режимы Vim с примерами.

Вим может быть пугающим. Есть чему поучиться. Но это руководство покажет вам, как больше не бояться Vim.

Если вы уже используете VS Code и хотите полностью перейти на Vim, в этой статье объясняется, как это сделать.

Вим: Изучай, живи, люби.

За 30 лет, прошедших с тех пор, как Брэм Муленаар впервые создал Vim, его влияние распространилось повсюду. И даже сегодня проект Vim активно поддерживается и постоянно совершенствуется.

За многие годы я встретил так много разработчиков, которые клянутся в Vim.

Я надеюсь, что это руководство помогло вам запустить Vim на ПК с Windows. И я надеюсь, что другие уроки, которыми я поделился с вами здесь, помогут вам перейти от нуля к шестидесяти в ближайшие месяцы.

Суть в том, чтобы продолжать практиковаться и не разочаровываться в том, как много сочетаний клавиш Vim нужно запомнить. В конце концов, все это превратится в мышечную память, и вы будете летать от одного файла к другому, набрасывая код, как терминатор.

Нет ничего лучше, чем возможность заглянуть в базу кода и сразу начать вносить изменения, даже не хватаясь за мышь или трекпад. Это мощь, которую Vim обещает и предоставляет в избытке.

 Куинси Ларсон

Куинси Ларсон

Если вы дочитали до этого места, отправьте твит автору, чтобы показать, что вам не все равно. Твитнуть спасибо

Научитесь программировать бесплатно. Учебная программа freeCodeCamp с открытым исходным кодом помогла более чем 40 000 человек получить работу в качестве разработчиков. Начать

freeCodeCamp – это поддерживаемая донорами некоммерческая организация, освобожденная от налогов в соответствии со статьей 501(c)(3) (идентификационный номер федерального налогоплательщика США: 82-0779546)

Наша миссия: помочь людям научиться программировать бесплатно. Мы достигаем этого, создавая тысячи видеороликов, статей и интерактивных уроков по кодированию — все они находятся в свободном доступе. У нас также есть тысячи учебных групп freeCodeCamp по всему миру.

Пожертвования в пользу freeCodeCamp идут на наши образовательные инициативы и помогают оплачивать серверы, услуги и персонал.

Это третья и последняя запись в этой серии статей о Vim. Возможно, вам будет интересно прочитать мои предыдущие сообщения, прежде чем продолжить чтение (особенно если вы новичок):

В этом посте мы поговорим о буферах, вкладках, окнах и различных режимах, которые вы можете найти в Vim. Присоединяйтесь!

Буферы, окна и вкладки

Если вы переходите на Vim из другого редактора, такого как SublimeText или Atom, вы привыкли работать с вкладками определенным образом. В частности, вкладка представляет собой открытый файл, и как только вы ее закроете, она исчезнет. Веб-браузер следует тому же принципу.

В Vim также есть система для вкладок, но она работает совершенно иначе, чем вы привыкли. Меня это очень смутило, когда я впервые начал работать с Vim, так что не паникуйте, если это относится и к вам. Вы не одиноки!

В Vim есть три уровня абстракции представления: буферы, окна и вкладки. Давайте рассмотрим каждый из них с нуля, так как это лучший способ понять различия в концепциях и научиться правильно их использовать.

Буферы

Буфер в Vim — это открытый экземпляр файла. Это означает, что файл может быть не виден на текущем экране, но он сохранен где-то в памяти.

Каждый раз, когда вы открываете файл в Vim, этот файл помещается в буфер, который будет оставаться в памяти до тех пор, пока вы явно не удалите его вызовом :quit или :bdelete . Вы можете вывести список всех буферов, открытых в данный момент в сеансе Vim, набрав :ls .

Давайте рассмотрим еще несколько полезных команд:

  • zz – центрировать текущую строку в окне.
  • zt — переместить текущую строку в верхнюю часть окна
  • zb — переместить текущую строку в нижнюю часть окна

Хотя файлы в буфере Vim могут быть видны не всегда, его функциональность аналогична тому, как вы используете вкладки в знакомых текстовых редакторах.

Окна

Окно в Vim — это окно просмотра в одном буфере. Вы можете открыть новое окно с помощью :split или :vsplit , включая имя файла в вызове. Это откроет ваш файл как новый буфер (опять же, аналогично вкладке в традиционном редакторе) и откроет новое окно для его отображения.

Вот как выглядит сеанс Vim с несколькими открытыми окнами (по горизонтали и по вертикали):


Windows также называют разделенными.

Давайте рассмотрим несколько полезных команд:

  • :new [имя файла] — открыть новое окно над текущим окном
  • :vnew [имя файла] — открыть новое окно рядом с текущим окном
  • :split - Редактировать указанный файл в новом окне над текущим окном

:vsplit — Редактировать указанный файл в новом окне рядом с текущим окном

Наконец, вкладка в Vim представляет собой набор из одного или нескольких окон. Это позволяет удобно группировать окна.

Давайте рассмотрим некоторые связанные команды:

:tabedit — редактировать файл с указанным именем в новой вкладке

gT — Перейти на предыдущую вкладку

Режимы

Хватит о навигации. Давайте продолжим и поговорим о различных режимах, которые вы найдете в мире Vim!

Vim — это «модальный» редактор, что означает, что он имеет различные режимы, которые меняют свое поведение в ответ на нажатие клавиш. Этот модальный характер лежит в основе мощи Vim, поэтому очень важно понимать его, чтобы использовать Vim наиболее эффективным способом.

Vim имеет три разных режима: вставка, обычный и визуальный. Давайте теперь посмотрим на них по очереди.

Режим вставки

При использовании других редакторов, таких как SublimeText или Atom, вы всегда работаете в режиме вставки. В этом режиме символы сразу появляются в буфере по мере их ввода. Вы можете войти в режим вставки, нажав i в обычном режиме.

Однако Vim отдает приоритет перемещению по файлу и внесению целевых изменений, которые выполняются в обычном режиме.

Обычный режим

Обычный режим — это режим, в котором Vim запускается по умолчанию. Ожидается, что вы будете находиться в этом режиме большую часть времени, используя все движения и операции, которые мы видели в предыдущем посте.

Это согласуется с идеей о том, что мы, разработчики, тратим большую часть времени на перемещение и редактирование документа, а не просто на добавление длинных блоков текста.

Визуальный режим

В более привычных текстовых редакторах блок текста можно выделить, щелкнув мышью и перетащив несколько строк или символов. Vim представляет визуальную модель, которая позволяет вам повторно использовать все команды движения и операторы, которые существуют для управления блоками текста.

Войдите в визуальный режим, нажав v в обычном режиме. Переместите курсор, используя все обычные движения, и Vim подсветит от того места, где вы начали, до того места, куда вы переместили курсор. Вы можете использовать ряд клавиш, таких как d , x или c, для работы с визуальным выбором, аналогично тому, как эти клавиши работают в обычном режиме.

Иногда вам нужно будет работать с целыми линиями. Режим визуальных линий оказывается очень полезным в таких случаях, и его можно запустить, нажав клавишу V в обычном режиме.

А как насчет выделения столбца текста? Vim поможет и вам: войдите в режим визуального блока, нажав в обычном режиме. Вот список общих операций визуального блока и их сопоставление:

  • d или x – удалить выделение визуального блока.
  • c – изменить выбор визуального блока
  • r — заменить все символы в блоке следующим введенным символом.
  • I – вставить текст перед блоком
  • A – Вставить текст после блока

Имейте в виду, что когда вы изменяете или добавляете новый текст, Vim покажет изменение только в первой строке блока. После того как вы завершите изменение/вставку и нажмете , оно будет реплицировано во все строки.

Оставайтесь нормальным

Если вы вынесете из этой записи в блоге только одну вещь, пусть она будет следующей: обычный режим — ваш лучший друг!

Не оставайтесь в режиме вставки в течение длительного периода времени. А также не перемещайтесь по файлу в режиме вставки. Поначалу это может быть сложно, но как только вы привыкнете, вы увидите, насколько быстрее вы становитесь. ;)

Подведение итогов

Эта серия представляет собой краткое введение в бесконечный мир Vim. Это инструмент, который поможет вам начать работу, но помните, что изучение Vim — это безостановочный непрерывный процесс. Продолжайте в том же духе, сделайте это частью своей повседневной жизни, и каждый раз, когда вы обнаружите, что делаете что-то очень неэффективным, вы знаете, что делать… Зайдите в Интернет, найдите друга и попросите о помощи!

Читайте также: