- PVSM.RU - https://www.pvsm.ru -
Когда вы находитесь в состоянии потока, Vim серьёзно ускоряет редактирование, будь то написание кода, поэзии или прозы. Но поскольку кривая обучения слишком крута для текстового редактора, то очень легко сохранить вредные привычки с тех времён, когда вы только осваивали редактор. Vim настолько ускоряет работу, что искоренить эти привычки особенно трудно, ведь их можно даже не заметить. Но это того стоит. Перечислю некоторые из наиболее распространённых антипаттернов.
Если вам нужно перепрыгнуть больше пары строк, то перемещение по одной строке клавишами j
или k
неэффективно. В Vim существует много способов перемещения по вертикали [1]. Я считаю, что два наиболее полезных — прыжок по параграфам и по экранам. Это зависит от того, как далеко и как точно вам нужно двигаться.
{
— Перейти к началу предыдущего абзаца или блока кода.
}
— Перейти в конец следующего абзаца или блока кода.
Ctrl+F
— Перейти вперёд на один экран.
Ctrl+B
— Перейти назад на один экран.
Если вы точно знаете, куда нужно переместиться, то можно использовать навигацию через поиск: поиск вперёд клавишей /
, а назад — ?
.
Также всегда полезно вернуться на предыдущее место, что достаточно легко сделать двумя кавычками или gi
: возврат к последнему месту, где вы вводили текст. Если хотите, можно даже перемещаться между всеми местами, где вводился текст, с помощью g;
и g,
.
Точно также и перемещение по одному символу клавишами h
и l
часто является пустой тратой времени, когда у нас есть t
и f
:
t<char>
— Переместиться вперёд до следующего появления символа.
f<char>
— Переместиться вперёд за следующее вхождение символа.
T<char>
— Переместиться назад до предыдущего вхождения символа.
F<char>
— Переместиться назад за предыдущее вхождение символа.
Перемещение по словам клавишами w
, W
, b
, B
, e
и E
тоже лучше. И здесь полезна навигация с поиском, и не забывайте, что вы можете копировать, удалять и изменять текст вперёд или назад к результату поиска:
y/search<Enter>
y?search<Enter>
d/search<Enter>
d?search<Enter>
c/search<Enter>
c?search<Enter>
Не утруждайте себя набором слова или копированием/вставкой, просто нажмите *
или #
. Поразительно, насколько быстрее становится работа, когда освоишь эти горячие клавиши.
Нет необходимости удалять текст с целью его замены, перейдя в режим вставки:
d2wi
Быстрее и аккуратнее использовать изменения клавишу c
:
c2w
Так вся операция становится повторяемой с помощью точки (.
).
Vim позволяет использовать клавиши со стрелками для перемещения в нормальном режиме и в режиме вставки, но если вы привыкли использовать для навигации hjkl
, то стрелки уже кажутся какими-то неуклюжими, потому что в течение всей сессии Vim пальцы находятся в центре клавиатуры [2], что удобно для слепой печати. Аналогично и клавиши Home и End: хотя они работают как в большинстве редакторов, но нет особой причины их использовать, когда ближе эквиваленты ^
и $
.
Таким образом, целесообразно отучить себя от клавиш со стрелками, отключив их хотя бы временно:
noremap <Up> <nop>
noremap <Down> <nop>
noremap <Left> <nop>
noremap <Right> <nop>
Слепая печать центральными клавишами не только даёт преимущество скорости, но и позволяет лучше себя чувствовать, потому что запястья отдыхают перед клавиатурой и не перемещаются слишком далеко, а некоторых людям это даже помогает уберечься от туннельного синдрома [3].
Дополнительное преимущество слепого набора в центральной строке в том, что вы избавляетесь от привычки перемещаться в режиме вставки: для этого предназначен нормальный режим. Как только нужно куда-то переместиться, вы переходите в нормальный режим и перемещаетесь гораздо более эффективно. Это также помогает сделать операции вставки более атомарными и, следовательно, более удобными для повтора.
Клавиша Escape на современных клавиатурах намного дальше от центрального ряда, чем на клавиатуре Билла Джоя [4], когда он разрабатывал vi. Обычно нажатие Escape не требуется: Ctrl+[
намного ближе и удобнее, вы довольно быстро измените свои привычки. Как вариант можно рассмотреть вопрос о сопоставлении в операционной системе на Esc довольно бесполезной клавиши Caps Lock или даже необычных сочетаний, таких как jj
. Хотя это немного радикальное предложение, но хорошо работает для многих людей:
inoremap jj <Esc>
Просто используйте I
и A
. К тому же, они делают действие повторяемым для других строк, где может понадобиться такая же операция.
Используйте o
и O
, чтобы создать новую строку ниже и выше, соответственно, и одновременно войти в режим вставки на ней.
Здесь довольно очевидное противоречие. Вместо этого удалите текст, переместившись в него и используя d
с соответствующим движением или текстовым объектом. Опять же, такое действие повторяемо и означает, что вы не удерживаете Backspace. Вообще, если вы удерживаете какую-то клавишу в Vim, вероятно, есть более быстрый способ.
Просто введите @:
для команды или n/N для поиска; Vim не забывает последний поиск. Если это была не самая последняя команда или поиск, но она точно есть в истории, введите q:
или q/
, найдите её в списке и нажмите Enter.
Введите &
для повтора на текущей строке последней замены. Можете повторить её на всех строках, набрав g&
.
Просто введите @@
.
На самом деле это всего лишь несколько распространённых способов, чтобы увеличить скорость и общую эффективность работы с редактором без установки плагинов или существенных переназначений клавиш. См. также вики с советами по Vim [5], там есть несколько других действительно полезных примеров.
Автор: m1rko
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/vim/310178
Ссылки в тексте:
[1] способов перемещения по вертикали: http://www.benorenstein.com/blog/jumping-long-distances-in-vim
[2] центре клавиатуры: https://en.wikipedia.org/wiki/Touch_typing
[3] помогает уберечься от туннельного синдрома: https://www.reddit.com/r/vim/comments/mgt9q/vim_can_even_fix_my_body/
[4] клавиатуре Билла Джоя: https://en.wikipedia.org/wiki/File:KB_Terminal_ADM3A.svg
[5] вики с советами по Vim: http://vim.wikia.com/wiki/Vim_Tips_Wiki
[6] Источник: https://habr.com/ru/post/442110/?utm_campaign=442110
Нажмите здесь для печати.