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