Используйте режимы Vim и правила грамматики, чтобы интегрировать Vim в свои продуктивные рабочие процессы.
Vim — текстовый редактор, созданный примерно в 1976 году. Несмотря на свой возраст, Vim по-прежнему остается одним из самых популярных редакторов в мире и доступен почти на каждой вычислительной платформе. Несмотря на то, что у новичков есть некоторая кривая обучения, в конечном итоге у вас будут моменты ага после неоднократного использования его в вашей работе. Для дальнейшего вдохновения: Лично я научился любить Vim и переходить от кода VS к рабочему процессу Neovim для кодирования за месяц. Я пытаюсь сделать эту статью доступной и полезной как для программистов, так и для непрограммистов, которым интересно, какие преимущества можно получить от использования Vim в кодировании или любой письменной работе.
Демонстрация режима Vim в терминале и приложении Obsidian
Для программистов давайте просто воспользуемся нашим хорошим другом — терминалом, не так ли?
Для непрограммистов давайте просто воспользуемся замечательным инструментом для создания заметок — Obsidian, так как он предоставляет нам режим Vim. Если вы не знаете, как использовать Vim-режим в Obsidian, ознакомьтесь с этой статьей, которую я написал:
А вот короткая демонстрация Vim-режима в Obsidian:
Хорошо, если вас вдохновили приведенные выше демонстрации, давайте начнем с основных концепций режима Vim.
Изучите четыре наиболее важных режима Vim
- Нормальный режим
- Режим вставки
- Визуальный режим
- Командный режим
1. Обычный режим — используется для перемещения курсора
Как пользователи Vim, вы обнаружите, что находитесь в обычном режиме чаще, чем в других режимах. И просто быстрое знание некоторых команд, которые будут использоваться в обычном режиме:
[motion] h Move one character left j Move one row down k Move one row up l Move one character right [count][motion] 4j Move 4 rows down 6k Move 6 rows up w Move to the beginning of the next word b Move to the previous beginning of the word B Move to the beginning of the previous word before a whitespace e Move to the end of the current word E Move to the end of the word before a whitespace 0 Move to the beginning of the line $ Move to the end of the line
Кроме того, вы также можете вносить изменения в отдельные символы в обычном режиме. Например, чтобы заменить один символ, наведите на него курсор и нажмите r
, а затем введите символ, который вы хотите заменить. Точно так же вы можете удалить один символ, наведя на него курсор и нажав x
.
Пока не пытайтесь запомнить все эти сочетания клавиш и их назначение. Сначала мы получаем некоторое представление о том, какие действия мы могли бы выполнять в обычном режиме, а затем находим способ практиковать их, чтобы в конечном итоге установить связь между мозгом и мышцами.
2. Режим вставки — используется для ввода текста
Если вы хотите ввести что-то в Vim, вы можете сделать это в режиме вставки. Мы можем войти в режим вставки с помощью следующих команд:
i Enter INSERT mode before the cursor I Enter INSERT mode at the start of the current line a Enter INSERT mode appending after the cursor A Enter INSERT mode appending to the end of the current line
Затем просто введите текст как обычно. Чтобы вернуться в обычный режим, нажмите esc
.
3. Визуальный режим — используется для выделения областей текста.
Вы можете сделать это в визуальном режиме, если хотите выделить несколько строк или отдельные слова. Существует три различных визуальных режима, в которые можно войти с помощью следующих команд:
v Enters character-wise visual mode to highlight one character at a time. V Enters line-wise visual mode to highlight entire lines at a time. ctrl-v Enters block-wise visual mode to highlight over rows and columns, etc.
После того, как вы войдете в эти режимы, вы можете начать навигацию по файлу с помощью движений, таких как h, j, k, l
и т. д., сначала к целевым областям текста, а затем выделять/выбирать их с помощью v
, V
или ctrl-v
. После выбора вы можете удалить (d
), скопировать (y
) или вставить (p
) все, что выделено. Чтобы выйти из визуального режима, нажмите esc
.
4. Режим командной строки — поддерживает однострочный ввод в нижней части окна Vim.
В обычном режиме, набрав :
и некоторые другие клавиши для определенных действий (включая поиск по шаблону), чтобы активировать этот режим. По завершении команды Vim возвращается в предыдущий режим.
- Просмотреть справочное руководство по Vim
:h cmdline.txt Reference manual for Command-line mode
- Сохранить изменения
:w Save changes to the current buffer :wa Save all changed buffers
- Выйти из Vim
:q Quit the current window :qa Quit all
- Сохранить и выйти
:wq Save changes and quit :wqa Save changes for all files and quit
- Работа с буферами
:buffers Show all buffers :e filename Open a particular file/buffer
Узнайте больше о буферах Vim с помощью файла command:h buffers
.
Демонстрация четырех режимов Vim
Познакомившись с различными режимами Vim, давайте перейдем к изучению грамматики Vim — движений, операций, текстовых объектов и т. д.
Изучите грамматику Vim
- Движения
- Операторы
- Текстовые объекты
Движения
Движения используются для перемещения курсора в обычном режиме Vim. Есть два способа использования движений Vim:
- Используйте только движения
[motion] h Move one character left j Move one row down k Move one row up l Move one character right w Move to the beginning of the next word e Move to the end of the current word E Move to the end of the word before a whitespace b Move to the previous beginning of the word B Move to the beginning of the previous word before a whitespace 0 Move to the beginning of the line $ Move to the end of the line ^ Go to the start of the line } Jump to the next paragraph ..
- Используйте [количество]движений
Движения принимают числовые значения в качестве аргументов. Если вам нужно подняться на 3 строки вверх, вместо того, чтобы нажимать k
3 раза, вы можете сделать 3k
.
Совет. Ознакомьтесь со справочным руководством via:h motion
в редакторе Vim.
Демонстрация движений Vim
Операторы
Выучить эти 3 оператора (y, d, c
) достаточно для большей части нашей работы по редактированию:
y Yank text (copy)
yy Yank entire line
d Delete text and save to register
dd Delete the entire line
c Delete text, save to register, and start insert mode
Оператор + движение
Теперь, когда вы знаете основные операторы и движения. Давайте применим правило грамматики, оператор + движение.
Демонстрация комбинации — оператор + движение
const tool = "vim"; const traits = "minimal but efficient editor"; console.log(`The ${tool} is a ${traits}`);
- Чтобы скопировать все из вашего текущего местоположения в конец строки:
y$
. - Чтобы перетащить все от вашего текущего местоположения до конца слова:
yw
. - Чтобы удалить от вашего текущего местоположения до конца строки:
d$
. - Чтобы удалить из вашего текущего местоположения в начало следующего слова:
dw
. - Чтобы перейти от текущего местоположения к концу текущего абзаца, произнесите
c}
. - Чтобы перейти от вашего текущего местоположения к концу текущей строки, произнесите
c$
. - Чтобы перейти от вашего текущего местоположения к концу текущего слова, произнесите
cw
. - Чтобы переместить три символа влево/вправо:
y3h/y3l
. - Чтобы удалить следующие два слова:
d2w
. - Чтобы удалить следующие 2 строки (удалить 3 строки):
d2j
. - Чтобы изменить следующие 2 строки (изменить 3 строки):
c2j
.
Оператор + текстовый объект
Два типа текстовых объектов: внутренние (i + object
) и внешние (a + object
) текстовые объекты. Вот список текстовых объектов:
w A word p A paragraph s A sentence ( or ) A pair of ( ) { or } A pair of { } [ or ] A pair of [ ] < or > A pair of < > t XML tags " A pair of " " ' A Pair of ' ' ` A pair of ` `
Демонстрация комбинации — оператор + текстовый объект
Если ваш курсор находится где-то внутри круглых скобок в выражении:
const startVim = function() { console.log("Hello Vim"); return true; }
- Чтобы удалить
Hello
: переместите курсор на любую буквуHello
и выполнитеdiw
. - Чтобы удалить
Hello Vim
:di”
. - Чтобы удалить
“Hello Vim”
:di(
. - Чтобы удалить
(“Hello Vim”)
:da(
. - Чтобы удалить содержимое функции (в окружении
{}
):di{
.
После того, как мы ознакомимся с основными командами Vim и грамматическими правилами, описанными выше, давайте продолжим совершенствовать наши навыки работы с vim с помощью некоторых чрезвычайно полезных приемов Vim.
Улучшите свои навыки работы с Vim
Все трюки, которые мы собираемся показать, работают в обычном режиме Vim.
"Отменить повторить"
u Undo the last action U Undo all recent changes made to the current line ctrl-r Redo
Демонстрация операций отмены/возврата Vim
Список переходов
Еще один важный прием — правильно использовать список переходов Vim. Список переходов Vim — это история переходов (движений курсора), которые вы совершали по файлам, которые хранятся в папке jump list
. При выполнении определенных движений, таких как переход к строке 10 с помощью 16G
, переход к началу/концу текущего файла с помощью gg/G
, Vim сохранит каждое из них как «переход» в jump list
(примечание: hjkl
движения не сохраняются в jump list
).
Совет. Вывод списка переходов с помощью команды :jumps
и удаление переходов с помощью команды :clearjumps
. Дополнительные сведения см. в разделе :h jump-motions
.
Навигация по этим прыжковым движениям осуществляется с помощью <ctrl-o>
и <ctrl-i>
:
Ctrl+o Navigate to the previous location in the jump list (o = "old") Ctrl+i Navigate to the next location in the jump list
Демонстрация использования Vim Jump List
Откройте любой файл и оставайтесь в обычном режиме Vim:
- Чтобы очистить существующий список переходов:
:clearjumps
- Чтобы перейти к началу файла:
gg
- Чтобы перейти к строке 20/10/30/40:
10G/20G/30G/40G
- Чтобы перейти в конец файла:
G
- Для перехода к предыдущему/следующему местоположению (переход):
Ctrl+o/Ctrl+i
Откройте несколько файлов (эти перемещения также сохраняются в списке переходов)
- Чтобы перейти к предыдущему/следующему файлу:
Ctrl+o/Ctrl+i
Вим Список изменений
Понимание разницы между списком переходов Vim и списком изменений Vim: список переходов Vim — это история переходов, которые вы сделали между файлами, а список изменений Vim — это история внесенных вами изменений. И изменение не обязательно должно быть «прыжком», чтобы сохранить его в списке переходов Vim.
g; Go to the [count] previous change location g, Go to the [count] newer change location gi Place the cursor at the position where it was left last time in the Insert mode
На данный момент мы изучили самые важные и полезные команды и операции Vim для облегчения работы с текстом. Для реального рабочего проекта вполне возможно, что вам нужно открыть несколько файлов одновременно, тогда вам нужен способ быстрой навигации по разным файлам или сравнения различий между файлами и т. д. Чтобы справиться с этими требованиями, наши реальные мирового рабочего процесса (так сказать, относительно большого проекта), давайте изучим буферы, окна и вкладки Vim в следующем разделе.
Используйте буферы Vim, окна и вкладки
Вим Буферы
Буфер — это текст файла в памяти. Например, vim filename
создает новый буфер, а vim file1.txt file2.txt
создает два буфера. Запуск :buffers
для просмотра всех буферов.
Вим Windows
Окно — это область просмотра в буфере.
:vsplit Split window vertically :split Split window horizontally
Vim-вкладки
Вкладка представляет собой набор окон.
:tabnew file.js Open a file in a new tab :tabclose Close current tab :tabnext or gt Go to the next tab :tabprevious or gT Go to the previous tab :tablast Go to the last tab :tabfirst Go to the first tab
Как эффективно использовать Vim Buffers, Windows и вкладки в рабочем процессе
- Используйте буферы, чтобы открыть все необходимые файлы для текущей задачи. Не беспокойтесь о том, что открыто много буферов. Vim позволяет вам перемещаться по буферам и работать с ними без трения.
- Используйте окна, когда вам нужно просмотреть несколько буферов для сравнения файлов, обратиться к другому коду и т. д.
- Используйте вкладки при работе над проектами различного назначения. Например, одна вкладка для клиентского приложения и одна вкладка для сервера.
Заворачивать
Мы рассмотрели основные концепции Vim. Надеюсь, эта статья побудит вас познакомиться с Vim и начать использовать его в своей работе. Сделайте «справочное руководство» (например, :h buffers
) как своего хорошего друга. Изучение Vim — это непрерывный процесс. Вы всегда найдете несколько лайфхаков для улучшения рабочего процесса. Позже я поделюсь другими рабочими процессами на основе Vim, которые я использую в своих ежедневных проектах кодирования.
Как всегда, удачного кодирования!
Видео версия:
Вы могли бы
Повышение уровня кодирования
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- 👏 Хлопайте за историю и подписывайтесь на автора 👉
- 📰 Смотрите больше контента в публикации Level Up Coding
- 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"
🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу