Основные команды текстового редактора vim
Итак, в вашей жизни случилось так, что вам нужно отредактировать какой-нибудь файл конфигурации, заполнить комментарий коммита git или написать подобную заметку с использованием разметки markdown. И в вашем распоряжении оказался редактор vim или vi то откройте терминал и введите vimtutor и не читайте дальше эту простыню. Мотайте в самый низ, если вам нужно просто открыть, отредактировать, закрыть файл и забыть.
Для базового взаимодействия с этим мощным редактором нужно знать что…
В редакторе есть два режима — обычный и режим ввода:
escпереводит вас в командный режим из режима ввода;iилиaпереводит вас из командного режима в режим ввода.
В режиме ввода вы просто редактируете текст, как в любом текстовом редакторе.
В командном режиме вы можете, открывать и создавать файлы, сохранять их, менять настройки редактора, исполнять команды в терминале, разделять окна редактора, включать и выключать подсветку, менять её, буквально что угодно.
Командный режим делится на:
- клавиатурный, то есть после нажатия
Escвся клавиатура превращается в набор хоткеев; - режим командной строки, когда вы вводите текстовые команды которые исполняет редактор.
В клавиатурном режиме вы можете например нажать:
ddтем самым удалив строку на котором есть курсор;uотмотать редактирование назад.
Команды выделения, копирования и вставки:
ctrl+vилиshift+vвыделить текст;yскопировать выделенный текст;pвставить выделенный текст.
Так, как описано выше, копирование и вставка работают только внутри vim.
Внешний текст вы можете вставить, нажав на колёсико мышки. Или:
esc— переходим в командный режим;- жмём
shift+", затем жмём отдельно клавишу+, затем отдельноp.
Для копирования в системный буфер обмена — то же самое с y в конце:
escпереходим в командный режим;- Вместе жмём
shiftи"затем жмём отдельно клавишу+затем отдельноy
Символ " там где буква э. По описанию сложно, на деле всё нажимается легко.
В режим командной строки перейти надо так:
- нажать
esc; - затем нажать
shift+;(там где букваж)
Теперь можно ввести команды:
e имя_файла.txtсоздать и открыть для редактирования новый файлe(от словаedit, редактировать — понимание того, как образуются сокращения поможет вам в запоминании и вспоминании команд);set syntax=onвключить подсветку кода;set mouse=aвключить полную поддержку мыши;vsразделить окно вертикально;spразделить окно горизонтально;
Горизонтальное и вертикальное разделение окон очень удобно, если вам нужно писать в одной части файла и что-то почитывать в другом конце или другом файле.
qзакрыть текущий файл или/и разделённую область редактирования.terоткрыть терминал прямо в редакторе.!commandзапустить программу прямо из редактора например!ls.
Выполнение команд из редактора бывает очень полезным например вам нужен файл со списком файлов в текущем каталоге.
esc;shift+;(там где букваж)e list.txtили просто нажать клавишуeна клавиатуре, а не вводить командуe list.txt..!lsвставить вывод команды в файл в строку с курсором с заменой строки если она что-то содержала.4!lsтоже самое что выше, но вы явно указываете строку в которую надо вставить, тут в четвёртую.+!lsтоже самое, но вставить на строку выше чем там где курсор.-!lsтоже самое, но на строку ниже чем там где курсор.%!lsвставить вывод команды в файл с перезапись всего файла.wq list.txtили простоwqесли до этого указывали имя файла, а не входили в режим редактирования просто клавишейe
Символ % обозначает текущий редактируемый буфер.
Нажатие клавиши е означает вход режим редактирования файла без имени.
Тут ls для примера, модно использовать date, pwd и любое иное не интерактивное. Можно комбинировать как в терминале
%!date && uptime && uname -a && echo "hello lor"
Ну и самое важное:
wсохранить в ткущий файл;w filenameсохранить в конкретный файл;wqсохранить файл и выйти;q!принудительно выйти без сохранения;
Любые настройки вы можете внести в свой конфигурационный файл ~/.vimrc
Например:
"так тут пишут комментарии
set syntax=on "включить подсветку синтаксиса
set mouse=a "включить полную поддержку мыши
set list "отображать спец символы
set listchars=tab:►·,eol:·,trail:↔ "табы ,конец строки, пробелы
"можно программировать и вызывать другие программы
"это пример простой функции
function Hello()
exec('silent !notify-send hello бугагашенька')
endfunction
"по клавише F2 на рабочем столе будет уведомление
nnoremap <F2> :call Hello()<CR>
inoremap <F2> :call Hello()<CR>
"И многое другое
Если вы редактируете ~/.vimrc из вим, то, чтобы применить изменение, перезагрузите конфигурацию:
escshift+;(там где букваж)so %илиso ~/.vimrc.soсокращение отsourceисходник по нашему.
Затем нажмите F2 и на рабочем столе выскочит уведомление.
Если не выскочило то значит не установлен notify-send (в качестве домашнего задания заставьте всё работать). Также вы можете сохранять файлы по своим горячим кнопкам, например, F5, если вы геймер =) Но для этого нужно отредактировать пример выше, пусть это тоже будет домашним заданием.
Всё описано в огромной документации:
esc;shift+;(там где букваж)h;Enter;
…которая всё же сложна для чтения. На первых порах просто ищите, как сделать желаемое, в интернете или через поиск на этом форуме.
Это не просто конфигурационный файл, а целый исходный файл скриптового языка программирования VimL и описывая настройки редактора, вы программируете его.
Впрочем, за этим дуйте в интернет.
Быстрый, базовый поиск:
esc;/- Далее вводите то что хотите найти
Enter
Сброс подсветки найденного. К примеру
esc/- набрать тарабарщину типа
asdfsf(тупо, но я использую это, потому что быстро) Enter
escshift+;nohEnter
Быстрый переход к нужной строке в файле.
escshift+;номер строкиEnter
Быстрая, простая, замена текста.
escshift+;s/что-ищем/на-что-заменить/замена только одного совпадения и только в строке на котором курсор.s/что-ищем/на-что-заменить/gзамена всех совпадений, но только в строке на котором курсор.%s/что-ищем/на-что-заменить/gзамена всех совпадений во всём файле.
Enter
Я описал базовые возможности, хотя вышло всё равно длинновато, но уже их хватит для очень многого, сам я использую vim на постоянной основе, но редко выхожу за рамки того что описал выше. Про цветовые схемы, тысячи плагинов и прочее я умолчал, это уже за рамками краткого описания.
Если вам лишь изредка нужно править конфигурационные файлы на своём сервере или роутере с предустановленным vim, то всё, что нужно знать, это:
vim /путь/до/файла/имя_файла;iвход в режим редактирования. Меняйте текст как вам надо;escвыход из режима редактирования;shift+;вызов командной строки, то что ниже вписывается именно в неё;wqсохранить и выйти;wq!если для сохранения нет прав то всё равно выйти (когда забылиsudoпередvim);q!выйти без сохранения (когда что-то напортачили и испугались);
Всё!









