DEV Community

Cover image for Пояснення вім логіки. Як працювати в nvim?
Tymofij
Tymofij

Posted on

Пояснення вім логіки. Як працювати в nvim?

1. Апетайзер:

У випадку якщо ви є користувачем linux/mac у вас вже інстальований vim і ви вже можете протестувати потужні команди!

Відкрити навчальний файл за допомогою віму:

vimtutor
Enter fullscreen mode Exit fullscreen mode
  1. Використовуючи стрілки перейдіть до будь якого параграфу та натисніть dap. Ця дія видалить параграф + порожні лінії, що оточують.
  2. . і у вас видалиться ще один параграф. . працює для повторення майже всіх дій.
  3. gUiw - зробити всі букви в слові великими. Це може бути використане для перейменування змінної до константи. gUU/guu - upcase/downcase цілий рядок.

2. Коротка історія:

  • Початково був створений vi у 1976 рік

Image description

  • Згодом був vim, що розшифровується як vi IMPROVED. Vim's автор, Bram Moolenaar, зробив публічний реліз в 1991. git repo.

  • Найбільш новий і крутий це nvim, розшифровується як Neo vim. Починалось це як форк vim, але згодом вони значно переписали код та додали круті фічі. git repo.

В чому відмінність nvim та vim?

  1. vim це проєкт "однієї людини" і він є "засміченим". В цей час neovim розвивається за рахунок спільноти відповідно і якість коду вища.
  2. vim є однопоточним, в той час як nvim підтримує багатопоточність.
  3. Найбільшою відмінністю є вістутність підтримки/підтримка мови Lua для кастомізації і написання власних плагінів. Lua достатньо швидка, аби бути використаною для плагінів і не бути вузьким горлишком + вона значно більш читаєма аніж Vim Script.

3. Як завантажити?

Завантаження використовуючи homebrew:

brew install neovim
Enter fullscreen mode Exit fullscreen mode

Відвідайте brew.sh і інсталюйте цей чудовий менеджер пакетів однією командою у випадку, якщо ви його поки що не маєте(цей менеджер підтримує лише mac/linux).

https://github.com/neovim/neovim/wiki/Installing-Neovim - альтернативні варіанти/інструкція для windows.


4. Найсмачніше

Vim є модальним едітором

Це означає, що ви маєте деяку кількість режимів, між котрими перемикаєтесь в залежності від того, що саме ви зараз робите. Ця ідея здається незручною і викликає питання напочатку, але спробувавши ви закохаєтесь в неї з ймовірністю в 95%, а якщо вам пощастить потрапити в решту 5% то ви просто розширите свій кругозір і дізнаєтесь про таку цікаву концепцію. Vim це дійсно супер нова концепція для тих хто не пробував модальні едітори.

В чому основна перевага?

Основна перевага в тому, що шорткати можуть складатись із однієї літери, наприклад, просто a або i. Тобто не є вимогою затискати shift/control/command/function і це суттєво впливає на пальці.

Пальцям не доводиться перебувати в постійному напруженні і це зменшує ймовірність виникнення тунельного синдрому.

Vim може вирізняти послідовність натискань, що також допомагає з шорткатами. Тобто vim зрозуміє, що швидке натискання ai це є шорткат. Наголошу на тому, що це саме послідовність натискань, немає необхідності затискати одночасно a+i.

Які режими є?

Якщо не сказано інакше то за замовчуванням всі дії виконуються перебуваючи в normal mode.

  1. Основним режимом є normal mode. В ньому ми пересуваємось по тексту та нам доступні всі клавіші для шорткатів. Кожна клавіша в normal mode виконує певну дію. Аби перейти в нього потрібно натиснути esc/control[.
  2. Другим за популярністю є insert mode. В ньому ми власне набираємо текст, або код. Всі наші натискання друкуються в файлі, що є найбільш інтуітивним, тому із цим режимом питань не має виникнути. Аби перейти в нього потрібно натиснути i. Також є інші варіанти, але про них згодом)
  3. command mode використовується для команд. Найчастіше це команди від якихось плагінів, що ви встановили. Аби перейти в нього потрібно натиснути :.
  4. visual mode використовуємо для виділення тексту. Аби перейти в нього натискаємо v.

РОЗКАЖИ вже як ним користуватись!

Базові дії:

  • gg/G = go to the start of the file/end
  • hjkl виконує роль стрілок. Звичайні стрілки в вімі також працюватимуть, але, будь ласка, утримайтесь від їх використання. Це буде не просто, але це 100% того варте. Перевага цього в тому, що це дозволить рукам більшу кількість часу залишатись на homerow, що в свою чергу пришвидшить вас та зменшить втому. А якщо вам цікаво мотивацію появи цього то все просто😆 – в перших клавіатур не було стрілок.

Image description

В вімі дуже прокачана мнемоніка від англійських слів. Тому коли ви хочете зробити якусь дію подумавши про першу букву дії ви зрозумієте який шорткат натиснути.

  • ZZ= save and quit
  • ZQ = quit without saving
  • :w = save or :w filename = save as
  • i = insert before the cursor
  • a = insert after the cursor aka append
  • I/A = insert at the beginning of the line/end of the line
  • d = delete
  • y = yank(copy)
  • dd/yy = delete/yank line
  • v = visual select
  • 0 = beginning of the line
  • $ = end of the line
  • w = go forward 1 word
  • b = go backwards 1 word
  • u = undo operation control + r = redo operation
  • /, n/N = search, go to next result/go to previous result
  • . = repeat last operation

Обʼєднуючи це в послідовності ви досягаєте саме потужних дій. Ви ж за цим прийшли?)

Пояснення як будується послідовність. Є декілька умовних груп, взявши по одній букві із кожного ви можете побудувати шорткат. Найчастіше це саме так і працює, але не для всіх випадків. Тобто не всі комбінації спрацюють.

Потрібно досить швидко натискати послідовність, бо інакше вім не рахуватиме це за шорткат.

Друга та четверта група є обовʼязковою, а перша та третє опційною.

1- Множник, тобто число разів скільки ви хочете повторити дію.

2- Що зробити?

  • y=yank
  • v=visual select
  • d=delete
  • c=change

3- Текст обʼєкт

  • i=inside
  • a=around
  • f=on the top
  • t=to

4- Текст обʼєкт:

  • w=word
  • e=end of the word
  • hjkl
  • p=paragraph
  • gg/G = start of the file

Приклади шорткатів:

  • dw = delete word
  • dip = delete inside paragraph
  • 5dd = 5 times delete line
  • dt{ = delete all characters in the current line to {
  • ygg/yG = yank to the start/end of the file

5. Плагіни?

  • Ви можете знайти їх на vimawesome.com, або на GitHub.

Вім без доданих плагінів не є достатньо зручним тому, аби почуватись комфортно пропоную вам подивитис на наступні позиції:

  • nerdtree/nvim-tree - бокова панель із файлами
  • tokyonight/gruvbox - кольорова тема
  • lualine - status bar
  • surround - useful for changing " to '
  • fugitive - git integration
  • commentary - comment/uncomment with a 1 shortcut in all languages
  • Налаштування lsp і completions. Це саме те через що можна сумувати за vscode і це дійсно зручно. Тому просто погугліть як це зробити і ви знайдете хороший туторіал.

Рекомендації:

  1. Не тисніть на себе. Повільно та стабільно!
  2. Пройдіть vimtutor. Він займе в вас приблизно 30-50 хвилин.
  3. Налаштовувати вім під себе кльово, але може бути складно, тому, якщо що, можете розглянути наступні варіанти: astrovim, lunarvim.

Top comments (0)