источник LINUX.ORG.RU

Основные команды текстового редактора 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 :call Hello() inoremap :call Hello()

"И многое другое Если вы редактируете ~/.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! выйти без сохранения (когда что-то напортачили и испугались);