25
января
0

VIM — редактирование файлов, основы работы



Главное предназначение редактора vim — правка всех видов простого текста. Обладает массой полезных возможностей:

— подсветка синтаксиса для разных типов файлов (с возможностью правки настроек);
— множественность вкладок и буферов для одновременного редактирования нескольких файлов;
— разбивка экрана на несколько окон как по горизонтали, так и по вертикали;
— легкость в перемещении по тексту и открытыми файлами, расставление меток;
— управляемость с командной строки;
— авто-дополнение слов и строк в тексте, команд и имён файлов;
— возможность определение собственных комбинаций клавиш на определенные действия;
— повторение последнего действия нажатием одной клавиши;
— запись макросов (действий пользователя) для выполнения повторяющихся операций в дальнейшем;
— неограниченная глубина отмены (undo) и возврата (redo) действий;
— история введенных команд и выражений поиска;
— серьёзный механизм подсветки для поиска шаблонов и ошибок в тексте;
— возможность сравнения содержимого разных файлов с одновременным их редактированием;
— автоматическое определение типа файла (DOS, Mac, Unix) с возможностью сохранения в любом из этих форматов;
— хорошо конфигурируется под нужды пользователя с помощью vimrc;
— сохранение информации о редактировании в предыдущем сеансе работы;
— поддержка скрытия участка текста, который не интересует;
— визуальное выделение;
— встроенный скриптовый язык для добавления новых возможностей;
— интеграция с Perl, Tcl и Python;
— система plugin-ов;
встроенная проверка орфографии;
— встроенная справка и т.д.

«Сказанное» выше вынуждает задуматься о том на сколько скоро начать использовать VIM вместо редактора, который ориентирован на непосредственный ввод или изменение текста. Стоит лишь вложить некоторое время на освоение редактора и оно приведет к явному повышению скорости и качества работы все больше и больше.

Для запуска программы можно использовать разные команды и ключи, что повлечет разные режимы работы редактора:

vim -R «file …» — запуск в режиме «только для чтения» (readonly), защищенном от случайной записи файла. Файл в буфере доступен для редактирования, но его копию на диске нельзя случайно перезаписать. Для сохранения изменений, сделанных в файле, нужно в командной строке редактора добавить восклицательный знак («:w!»).
vim -m «file …» — изменение файлов запрещено. При этом отключается опция ‘write’, поэтому запись файлов становится невозможной.
vim -d «file file …» — режим поиска различий. Vim откроет все указанные версии файлов и покажет различия между ними с помощью подсветки синтаксиса (также как команда vimdiff). Каждый файл в отдельном окне с возможностью внесения изменений.
vim -i «viminfo» — вместо используемого по умолчанию файла «~/.viminfo» будет указанный «viminfo» для сохранения сессий. Можно также избежать использования файла viminfo путём указания имени «NONE».
vim -x «file» — шифровать записываемые файлы. Будет выдано приглашение ввести пароль.
Если список файлов отсутствует, редактор начнёт работу с пустым буфером. Если задан список файлов, то каждый из них будет помещен в свой буфер для работы с ним. Буфер — это некий сеанс редактирования определённого файла.

После запуска VIM необходимо изменить режим на основной для возможности ввода и запуска команд. Не стоит также забывать, что при работе в командной строке редактора VIM действуют аналогичные комбинации клавиш для перемещения и удаления, как в shell, в том числе и авто-дополнение -ом.

Полезными будут при работе с файлами и их буферами следующие команды и комбинации клавиш:

:ls – просмотреть открытые буферы;
:bn – перейти на следующий буфер;
:bp – предыдущий буфер;
:bf – первый буфер;
:bl – последний буфер;
:b name – переключается на буфер файла «name», где вместо полного имени файла можно ввести ввести уникальную последовательность символов для имени искомого буфера;
:bd name – удалить буфер по имени;
:bd – удалить текущий буфер;

:args – cписок аргументов-файлов, переданных редактору при запуске;
:next – перейти к следующему файлам, который был задан при запуске vim;
:new [filename] – создает новый документ с названием «file» в новом окне над текущим;
:vnew [filename] – аналогична «:new», но помещает окно слева относительно текущего;
:sp[lit] [filename] — разделить текущее окно по горизонтали на 2 и открыть файл «filename», если указан;
:vsp[lit] [filename] — разделить текущее окно по вертикали на 2 и открыть файл «filename»;
:sav[eas] {filename} – «cохранить как» filename;
:w[rite] [>>] {filename} – сохраняет текущий буфер в новый или существующий файл «filename». Если указан оператор «>>», то информация добавляется в конец содержимого файла «filename». Можно задать диапазон строк (:.write filename записывает в файл только текущую) или оперировать выделенным фрагментом текста в визуальном режиме;
:r[ead] {filename} – вставить содержимое filename после курсора (:20r filename — вставить содержимое файла filename после 20-ой строки);
:Ex [directory] – стандартный обозреватель для открытия файла (по умолчанию текущая директория открывается);
:Sex – разбить окно и открыть встроенный файл-менеджер во втором окне;
:e[dit] {filename} – открыть или создать новый файл с именем «filename» (c опцией :e ++enc={utf8/koi8-r/cp1251} в определенной кодировке);
:<number>— перейти на строку с номером <number>;
gf – «go file», т.е. перейти к редактированию файла, путь к которому находится под курсором;
<Ctrl+w>f – аналогично gf, но открывает файл в новом окне;
<Ctrl+g> – показать информацию о текущем файле;
:cd – меняет текущую директорию редактора;
:pwd – выводит текущую директорию.

:w[rite] – сохранить файл (:w! — невзирая на защиту записи);
ZZ – записать изменения в файл и выйти;
:q[uit] – закрытие редактора либо окна (:q! — невзирая на наличие не сохранённых буферов);
ZQ – выход без сохранения;
:qa! – выход из всех открытых файлов без сохранения (аналог : x);
:wqa – выход из всех файлов с сохранением;

Работа с окнами:

<Ctrl+w> – это управляющая комбинация клавиш, а после нее уже идет нужное действие;
<Ctrl-w>n или :new – создает новое пустое окно и помещает его над текущим окном;
<Ctrl-w>s или :sp[lit] – создает копию текущего окна и помещает ее над текущим окном;
<Ctrl-w>v или :vs[plit] – создает копию текущего окна и помещает ее слева относительно текущего;
<Ctrl-w>c или :clo[se] – закрывает окно;
<Ctrl-w>o или : only – закрывает все окна кроме текущего;
<Ctrl-w>= – сделать все окна одинакового размера.
<Ctrl-w>w – последовательное перемещение по окнам;
<Ctrl-w>{h, j, k, l, t, b} – перемещает курсор в окно, которое находится {слева, внизу, вверху, справа, в самом верху, в самом низу};

Изменение и просмотр настроек VIM:

: options — выдает список всех доступных опций в новом окне. Их можно менять, как обычный текст и изменения сразу же будут вступать в силу для текущего сеанса работы. Чтобы изменения действовали постоянно их нужно прописать в конфигурационный файл vimrc.
:map – показывает список привязок горячих клавиш;
:set all – показывает все опции;
:set termcap – показывает только терминальные опции;
:set {option}? — показывает значение опции «option»;
:set lazyredraw – отключает перерисовку экрана на время выполнения макроса (существенно ускоряет работу);
:set number – отобразить слева нумерацию строк (:set nonumber — спрятать нумерацию);
:set wrap — переносить длинные строки (:set nowrap — не переносить);
:set autoindent – при начале новой строки отступ копируется с предыдущей;
:sy[ntax] {on/off} – включить/выключить подсветку синтаксиса;
:colorscheme {name} – задать цветовую тему (не забываем пользоваться , как авто-дополнением);
:set encoding=utf-8 – установить кодировку VIM в UTF8;
:set fileencoding=utf-8 – задать кодировку файла UTF8;
:set fileformat={dos|unix} – привести концы строк в файле к виду dos или unix соответственно:
:set virtualedit=all – возможность свободно перемещаться по всему экрану, не обращая внимания на отсутствующие символы в строке, что удобно при редактировании таблиц или составлении блоксхем. После вставки какого-либо символа все пространство от начало строки до вставленного символа автоматически заполнится пробелами;
:set foldmethod= {method} – задание метода фолдинга, т.е. складывания части текста в зависимости от отступа либо в соответствии с синтаксисом или специальными маркерами в пунктирную линию с символом «+» в первой позиции;
:help – вывод справки в новом окне;

:!cmd — запускает внешнюю команду «cmd». Например:
!date выведет текущую дату,
:!ls — выведет листинг текущей директории,
а если в визуальном режиме выделить какой-нибудь фрагмент текста, то можно его передать на обработку внешней команде оболочки, например,:
:!sort – выделенный текст будет отсортирован,
:read !ls -a1h – вставляет список файлов текущей директории в место под курсором,
:write !wc -l – подсчитывает количество строк в редактируемом тексте,
или указать определенный диапазон строк:
:%!sort – сортировка всего текста,
:1,10!sort – сортировка обратном порядке строк с первой по десятую;
:!! – повторить предыдущую команду;
:sh – открыть командную оболочку (shell).
:vimgrep /pathern/ filename – поиск в файле нужного выражение «pathern» строку и при успехе открыть файл.

Понравилась статья?
Подписаться на RSS feed
Оставить комментарий