Используйте режимы 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 и найдите прекрасную работу