1. Апетайзер:
У випадку якщо ви є користувачем linux/mac у вас вже інстальований vim і ви вже можете протестувати потужні команди!
Відкрити навчальний файл за допомогою віму:
vimtutor
- Використовуючи стрілки перейдіть до будь якого параграфу та натисніть
dap
. Ця дія видалить параграф + порожні лінії, що оточують. -
.
і у вас видалиться ще один параграф..
працює для повторення майже всіх дій. -
gUiw
- зробити всі букви в слові великими. Це може бути використане для перейменування змінної до константи.gUU
/guu
- upcase/downcase цілий рядок.
2. Коротка історія:
- Початково був створений vi у 1976 рік
Згодом був vim, що розшифровується як vi IMPROVED. Vim's автор, Bram Moolenaar, зробив публічний реліз в 1991. git repo.
Найбільш новий і крутий це nvim, розшифровується як Neo vim. Починалось це як форк vim, але згодом вони значно переписали код та додали круті фічі. git repo.
В чому відмінність nvim та vim?
- vim це проєкт "однієї людини" і він є "засміченим". В цей час neovim розвивається за рахунок спільноти відповідно і якість коду вища.
- vim є однопоточним, в той час як nvim підтримує багатопоточність.
- Найбільшою відмінністю є вістутність підтримки/підтримка мови
Lua
для кастомізації і написання власних плагінів.Lua
достатньо швидка, аби бути використаною для плагінів і не бути вузьким горлишком + вона значно більш читаєма аніжVim Script
.
3. Як завантажити?
Завантаження використовуючи homebrew:
brew install neovim
Відвідайте 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
.
- Основним режимом є
normal mode
. В ньому ми пересуваємось по тексту та нам доступні всі клавіші для шорткатів. Кожна клавіша вnormal mode
виконує певну дію. Аби перейти в нього потрібно натиснутиesc
/control[
. - Другим за популярністю є
insert mode
. В ньому ми власне набираємо текст, або код. Всі наші натискання друкуються в файлі, що є найбільш інтуітивним, тому із цим режимом питань не має виникнути. Аби перейти в нього потрібно натиснутиi
. Також є інші варіанти, але про них згодом) -
command mode
використовується для команд. Найчастіше це команди від якихось плагінів, що ви встановили. Аби перейти в нього потрібно натиснути:
. -
visual mode
використовуємо для виділення тексту. Аби перейти в нього натискаємоv
.
РОЗКАЖИ вже як ним користуватись!
Базові дії:
-
gg
/G
= go to the start of the file/end -
hjkl
виконує роль стрілок. Звичайні стрілки в вімі також працюватимуть, але, будь ласка, утримайтесь від їх використання. Це буде не просто, але це 100% того варте. Перевага цього в тому, що це дозволить рукам більшу кількість часу залишатись на homerow, що в свою чергу пришвидшить вас та зменшить втому. А якщо вам цікаво мотивацію появи цього то все просто😆 – в перших клавіатур не було стрілок.
В вімі дуже прокачана мнемоніка від англійських слів. Тому коли ви хочете зробити якусь дію подумавши про першу букву дії ви зрозумієте який шорткат натиснути.
-
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 operationcontrol + 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 і це дійсно зручно. Тому просто погугліть як це зробити і ви знайдете хороший туторіал.
Top comments (0)