- Пройдите vimtutor
- Vim Adventures
- Vim Tips Wiki
- Vim Advent Calendar
- Vi/Vim Stack Exchange
- Vim Screencasts
- Practical Vim (книга)
Да что угодно, Вы будете продолжать спорить, какие редакторы самые крутые, но поверьте, все популярные из них крутые.
По опросу программистов со stackoverflow одни из самых популярных не IDE сред разработки — это Visual Studio Code, Notepad++, Vim, Sublime Text. Я расскажу про последние два, остальные очень похожи по философии с кем-то из этих двух. Забавно, что Emacs всё меньше и меньше пользуется популярностью.
Vim в качестве редактора удобен особенно когда хочется работать с кодом удалённо или нельзя сохранить код локально. У Vim богатая история: он был последователем редактора Vi (1976) (откуда и название Vi iMproved), и его разработка продолжается до сих пор. У Vim есть несколько действительно крутых идей, и по этой причине многие инструменты поддерживают плагины Vim (например, 1,4 миллиона человек установили плагин Vim для VSC). Vim, вероятно, стоит изучить, даже если Вы перейдете на какой-нибудь другой текстовый редактор.
Когда Вы программируйте, скорее всего Вы больше читаете и редактируете код, чем пишете с нуля. Поэтому Vim это модальный редактор и есть различные моды, например, редактирование и написание кода отличаются по своей логике.
Vim — это отдельный язык программирования, где Вы задаёте команды, комбинируйте их в "скрипты", которые автоматически исполняются. Большинство команд однобуквенные, чтобы сэкономить время для их написания, но их комбинации порой поражают. Vim не любит движения мышкой, потому что это медленно. Да Vim даже не любит использовать стрелки, потому что они находятся далеко от обычных текстовых клавиш клавиатуры.
Есть сайт VimGolf, где люди соревнуются по тому, какое минимальное количество команд надо для выполнения того или иного действия, некоторые результаты там просто поражают своей красотой, элегантностью и эффективностью, всё как в настоящих языках программирования.
Vim поддерживает набор открытых файлов, называемых "буферами". Vim сессия имеет несколько вкладок, каждая из которых имеет несколько окон (разделенных панелей). Каждое окно показывает единственный буфер. В отличие от других программ, с которыми Вы знакомы, таких как веб-браузеры, между буферами и окнами не существует однозначного соответствия. Буфер может быть открыт в нескольких окнах, даже в пределах одной вкладки. Это может быть очень удобно, например, для одновременного просмотра двух разных частей файла.
По умолчанию Vim открывается с одной вкладкой, содержащей одно окно.
В vim есть мод Cmd, в котором Вы пишете команды для самих окон, панелей и
вкладок. Чтобы войти в мод, надо написать :
. Самые популярные из них:
:q
выйти (закрыть ровно одно окно), чтобы закрыть всё —:qa
, выйти без сохранения —:q!
:w
сохранить ("write"):wq
сохранить и выйти, также часто используют:x
:e
открыть файл в новом окне:ls
открыть все буферы (файлы):help
{topic} открыть help:help
:w
открыть help для команды:w
:help
w открыть help для команды простоw
Все, что Вы раньше делали с помощью мыши, теперь должны делать с помощью клавиатуры, используя команды редактирования, которые объединяются с командами движения. Интерфейс Vim уже начинает выглядеть как язык программирования, правда? Команды редактирования Vim также называются "глаголами" (verbs), потому что глаголы действуют на существительные.
i
— вход в режим Insert- но для управления / удаления текста нужно использовать что-то большее, чем backspace
- o / O вставить строку ниже / выше
d
{движение} удалить {движение}- например
dw
— слово удаления,d$
— удаление до конца строки,d0
— удаление до начала строки
- например
c
{движение} изменить {движение}- например
cw
- изменить слово- как d{движение}, за которым следует i
x
удалить символ (равноdl
)s
замещающий символ (равноxi
)- Визуальный режим + манипуляция
- выделите текст,
d
, чтобы удалить его, илиc
, чтобы изменить
- выделите текст,
- !
u
, чтобы отменить,Ctrl+r
, чтобы повторитьy
для копирования (некоторые другие команды, такие какd
, также копируют)p
вставить после курсора,P
до курсора
- Еще многое предстоит узнать: например,
~
переворачивает регистр символа - ! Удалить строку - Ctrl-u/Ctrl-w
Например, чтобы поменять строку с нижней, стоит написать ddp
.
Также перед многими "глаголами" можно писать числа, например:
3dw
— удалить 3 слова3w
— переместиться на 3 слова10j
— переместить курсов на 10 строки вниз2u
— 2 undo
Также есть модификаторы, i
inside, a
around, например:
ci[
— поменять контент внутри квадратных скобокda'
— удалить всё внутри одинарной кавычки и её саму
:s
, а дальше всё как в sed с некоторыми особенностями:
:.,+2s/a/b/g
— заменить всё от текущей строки на +2 ниже:10,15s/a/b/gс
— заменить всё на строках 10-15 и спросить confirmation для каждого.:%s/abc/abcd/gci
— заменить везде с подтверждением и не обращать внимание на регистр: опцияi
Так как vim — это всегда про discoverability, нежели про написание кода, то здесь можно работать с панелями, которые можно открывать:
:sp
— горизонтальный split панелей того же файла, если есть аргумент, откроет другой файл:vsp
— вертикальныйCtrl+w h/j/k/l
— навигация по панелямCtrl+w +/-
— увеличение или уменьшение панели на 1 строку, перед знаком может быть числоCtrl+w </>
— увеличение или уменьшение панели на вертикальные столбцы соответственноCtrl+w _
— установка высоты, число пишется черезCtrl+w |
— установка ширины, число пишется черезCtrl+w =
— подстроить все панели равномерно под ширину дисплея
Это уже более продвинутая возможность, которая позволяет делать некоторые действия через набор команд. Почитайте о них здесь.
Vim можно кастомизировать, для этого нужно скопировать
конфиг вима и поместить его содержимое в ~/.vimrc
.
Это ещё одна очень сильная точка для Vim. Очень много плагинов под разные языки, автодополнения, goto definition, pony plugins, code search, magic motions, и т.д.
1.3.1 Deep Dive In Terminal Theme | Back To iOSWiki Contents | 1.3.2.2 Vim Modes Theme