Основные команды текстового редактора 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
из вим, то, чтобы применить изменение, перезагрузите конфигурацию:
esc
shift
+;
(там где букваж
)so %
илиso ~/.vimrc
.so
сокращение отsource
исходник по нашему.
Затем нажмите F2
и на рабочем столе выскочит уведомление.
Если не выскочило то значит не установлен notify-send
(в качестве домашнего задания заставьте всё работать). Также вы можете сохранять файлы по своим горячим кнопкам, например, F5
, если вы геймер =) Но для этого нужно отредактировать пример выше, пусть это тоже будет домашним заданием.
Всё описано в огромной документации:
esc
;shift
+;
(там где букваж
)h
;Enter
;
…которая всё же сложна для чтения. На первых порах просто ищите, как сделать желаемое, в интернете или через поиск на этом форуме.
Это не просто конфигурационный файл, а целый исходный файл скриптового языка программирования VimL
и описывая настройки редактора, вы программируете его.
Впрочем, за этим дуйте в интернет.
Быстрый, базовый поиск:
esc
;/
- Далее вводите то что хотите найти
Enter
Сброс подсветки найденного. К примеру
esc
/
- набрать тарабарщину типа
asdfsf
(тупо, но я использую это, потому что быстро) Enter
esc
shift
+;
noh
Enter
Быстрый переход к нужной строке в файле.
esc
shift
+;
номер строки
Enter
Быстрая, простая, замена текста.
esc
shift
+;
s/что-ищем/на-что-заменить/
замена только одного совпадения и только в строке на котором курсор.s/что-ищем/на-что-заменить/g
замена всех совпадений, но только в строке на котором курсор.%s/что-ищем/на-что-заменить/g
замена всех совпадений во всём файле.
Enter
Я описал базовые возможности, хотя вышло всё равно длинновато, но уже их хватит для очень многого, сам я использую vim
на постоянной основе, но редко выхожу за рамки того что описал выше. Про цветовые схемы, тысячи плагинов и прочее я умолчал, это уже за рамками краткого описания.
Если вам лишь изредка нужно править конфигурационные файлы на своём сервере или роутере с предустановленным vim, то всё, что нужно знать, это:
vim /путь/до/файла/имя_файла
;i
вход в режим редактирования. Меняйте текст как вам надо;esc
выход из режима редактирования;shift
+;
вызов командной строки, то что ниже вписывается именно в неё;wq
сохранить и выйти;wq!
если для сохранения нет прав то всё равно выйти (когда забылиsudo
передvim
);q!
выйти без сохранения (когда что-то напортачили и испугались);
Всё!