Последние пару недель нет времени ни писать, ни бегать. Сначала боролся с соплями, потом со знаниями. Из интересного, почти отказался от VS Code и перешёл в VIM. Тут надо сразу оговориться, я пишу vim, но подразумеваю nvim. То есть в том контексте, о котором я пишу разницы нет.
Помню, как впервые пытался использовать навигацию по файлу с помощью hjkl
. Выглядело жутко неудобно. Сейчас, кстати, не сильно лучше.
На frontendmasters.com есть классный курс, если есть возможность оплатить подписку, советую оплатить и посмотреть. Я его прошел. Но сложно взять и посмотреть кучу роликов. На практике эти знания сразу применить невозможно. В итоге запоминаешь лишь часть информации и потом пытаешься применить по необходимости.
Вообще я долго пытался понять что неудобно в vim и почему он для меня не работает. И в какой-то момент пришла мысль о том, что я пытаюсь использовать его как использую все остальные GUI редакторы. А надо изменить подход. То есть мало отказаться от использования мышкой, надо еще изменить способ мышления. Идея не в том, чтобы мыслить не символами и хоткеями, а командами.
Композиция команд — это очень мощная концепция в Vim/Neovim. Например, команда может состоять из трех частей:
— Оператор (что делать)
— Модификатор (сколько раз или как)
— Движение (с чем делать)
Примеры:
d2w - delete 2 words
da{ - delete around {}
y$ - yank to end of line
ciw - change inner word
c3j - change 3 lines down
Вот к примеру основные операторы
d
- delete (удалить)y
- yank (копировать)c
- change (изменить)p
- put (вставить)
и основные движения
w
- словоb
- назад по словамe
- конец слова$
- конец строки0
- начало строки^
- первый непробельный символ в строке
А теперь представьте как можно их компоновать. Поначалу это сильно ломает мозг. Начинаешь думать какие клавиши нажать, чтобы изменить слово внутри кавычек или прыгнуть сначала наверх файла, а потом вернуться назад. Переключиться между разными файлами тоже в начале сложно.
Более того, команды регистрозависимые. Например,
w
ord - последовательность букв, цифр и символа подчёркиванияW
ORD - последовательность не пробельных символов
Поэтому
example_variable_name # три words, то есть три нажатия w
example_variable_name # один WORD
some-compound-word # три words
some-compound-word # один WORD
gg
— прыжок к началу файла, а G
— к концу. Команд так много, что сложно все запомнить. Но я стараюсь каждый раз, когда чувствую сложность и непонимание "как сделать так чтобы было удобно" идти гуглить и пытаться запомнить как же.
Вот последние находки для разделения одно окна на панели
— <C-w>v
или :vsp
- вертикальное разделение
— <C-w>s
или :sp
- горизонтальное
Для навигации между панелями:
— <C-h>
- в левое окно
— <C-j>
- в нижнее окно
— <C-k>
- в окно сверху
— <C-l>
- в правое
То есть идея понятна, те же hjkl
+ нажатый Ctrl
.
А еще метки. Про них наверное отдельно надо писать. Если кратко, то ma
ставит метку 'a'. mb
— метку 'b'. Не важно где была поставлена эта метка в этом файле и сегодня ли. Но
- `a и `b позволяет переключаться между файлами или теми блоками где вы были очень быстро
- `` позволяет вернуться к предыдущей позиции
- '. возвращает к последним изменениям
В общем, пока я нажимал www
, гуляя по словам, было прикольно, но как-то странно. Потому что преимущества с обычным редактором не были заметны. А вот метки как раз принесли очень интересные возможности.
PS: Как я писал в начале поста "я почти отказался от VS Code". Мне все еще нравится VS Code. Он прекрасен и привычен. Поэтому когда я устаю разбираться с vim, я просто переключаюсь на VS Code.