VI — текстовый редактор кошмар для случайного пользователя. Если его удается в конце-концов закрыть, то вздыхаешь с облегчением и твердой уверенностью, что больше не будешь запускать эту программу ни в коем случае.
Действительно, такой редактор нельзя просто открыть и начать работать, требуется предварительная подготовка. Зато стоит поработать с ним несколько лет, и поражаешься, как мог обходиться без него раньше.
Системы Unix не имеют в своем базовом комплекте ни одного нормального (еще раз подчеркну это слово — НОРМАЛЬНОГО) текстового редактора.
Поэтому системный администратор должен уметь пользоваться тем, что ему дают. А дают ему несравненный «Визуальный» экранный редактор файлов — Редактор VI.
Для работы, обычно достаточно знать всего несколько команд. Лично я, вполне обхожусь следующими:
vi /file_folder/filename — открыть файл в редакторе vi
vi /file_folder/filename ++25 — открыть файл в редакторе vi и перейти к строке 25.
i — включить режим внесения зменений. В данном режиме vi работает как и большинство текстовых редакторов.
[Esc] — выйти из данного режима
u — undo (отмена)
CTRL + R — redo
:w [Enter] — сохранить внесенные изменения.
:q! [Enter] — выйти без сохранения изменений
:wq [Enter] — сохранить внесенные изменения и выйти.
dd — удалет строку на которой находится курсор
x — удалет символ на котором находится курсов
d, SHIFT+4 — удалет символы справа от текущего курсора до конца строки.
[y] — копирует строку в буфер
[P] — вставляет скопированную строку после той, на которой в текущий момент находится курсор
Поиск:
/text [Enter] — выполняет поиск «text» в тексте
Автозамена:
:%s/6201/6202/gc — ищет в документе вхождение 6201 и меняет (с подтверждением) на 6202 (замена порта).
Показать/Скрыть номера строк в редакторе vi:
:set nu — нумеровать строки
:set nonu — не нумеровать строки
Чтобы редактор сохранил настройки, необходимо в файле ~/.vimrc
прописать строку, например set nu
——————————
vi ~/.vimrc
Код взят на каком-то из девелоперских серверов.
Достаточно удобно по F2 сохранять результат, а по F10 выходить.
Впрочем это удобно когда количество серверов можно посчитать по пальцам. А когда их куча, лучше всетаки научиться пользоваться теми возможностями, которые продоставляет предоставляет каждый.
Код:
1 set nocompatible
2
3 colorscheme desert
4
5 set novisualbell
6
7 set nu
8
9 set termencoding=utf-8
10
11 set hidden
12
13 set ch=1
14 set showcmd
15
16 syntax on
17
18 set autoindent
19 set smartindent
20
21 nmap <F2> :w<cr>
22 vmap <F2> <esc>:w<cr>i
23 imap <F2> <esc>:w<cr>i<right>
24
25 imap <Ins> <Esc>i
26
27 map <F10> :q!<cr>
28 vmap <F10> <esc>:q!<cr>
29 imap <F10> <esc>:q!<cr>
—————
При копировании из буфера какого-то текста, например конфига или xml, иногда он превращается в галимый фарш, который нужно еще несколько минут форматировать руками.
Оказалась, что есть опция
Код:
:set paste
Она позволяет корректно вставлять такого рода блоки в окно редактора.
—————
Для более комфортной работы с vi (подсветка и все такое. рожь, овощи, вот это все) достаточно установить vim и далее выполнять команды, также как написано выше. Алиасы на vim прописываются автоматически и достаточно использовать команду vi.
В Ubuntu, Debian like дистрибутивах
$ sudo apt-get install -y vim
В Centos, RedHat, Oracle Linux
$ sudo yum install -y vim
—————————
Небольшое отступление:
Раскладка клавиатуры, в режиме ввода кириллических символов, какие-либо команды игнорируются.
Основные команды навигации в редакторе vi
h — переход на один символ влево
l — переход на один символ вправо
j — переход на одну строку вниз
k — переход на одну строку вверх
w — переход к началу следующего слова
b — переход к началу предыдущего слова
$ — переход в конец текущей строки
^ — переход в начало текущей строки
:G — переход в конец файла
:l — переход в начало файла
Помимо команд для перемещения курсора, в редакторе vi также доступно и много команд для манипулирования текстом. Обычный среднестатистический администратор баз данных вполне может обходиться и теми несколькими текстовыми командами, которые перечислены ниже.
Основные команды манипуляции текста в редакторе vi
i — начинает вставку с текущего символа
a — начинает вставку со следующего символа
o — начинает вставку с новой строки ниже
O — начинает вставку с новой строки выше
x — удаляет символ, на котором находится курсор
dd — удаляет строку, на котором находится курсор
r — заменяет символ, на котором находится курсор
/text — выполняет поиск определенной строки текста
:s/old/new/g — заменяет строку текста новой строкой
yy — перемещает строку
P — вставляет скопированную строку после той, на которой в текущий момент находится курсор
p — вставляет скопированную строку над той, на которой в текущий момент находится курсор
:wq — сохраняет изменения и завершает работу редактора
:q! — завершает работу редактора без сохранения изменений
Очень кратко о редакторе «VI»
Редактор VI имеет три режима:
1. Командный — в этом режиме можно перемещаться по файлу и
выполнять редактирующие команды над текстом. Команды вызываются
ОБЫЧНЫМИ ЛАТИНСКИМИ БУКВАМИ.
2. Ввода текста — в этом режиме обычные латинские буквы будут
вставляться в текст.
3. Режим строчного редактора ED используется для управления
файлами (типа сохранить файл, зачитать файл и т.д.)
Прочитайте предыдущий абзац еще раз. Вы еще не испугались?
Хорошо. Поехали.
Итак:
vi имя_файла
VI в КОМАНДНОМ РЕЖИМЕ.
ЧТОБЫ ВЫЙТИ ИЗ ФАЙЛА БЕЗ СОХРАНЕНИЯ, нажмите:
ESC : q ! Enter
чтобы выйти из файла, сохранив изменения, нажмите:
ESC : w ! Enter
ESC : q Enter
выйти из файла с сохранением, одной командой:
ESC : wq Enter
для перехода В РЕЖИМ ВВОДА нужно нажать команды типа:
«i» вставлять здесь
«A» вставлять с конца строки
«cw» заменять текущее слово
ESC для ВОЗВРАТА В КОМАНДНЫЙ РЕЖИМ
CTRL-[ для возврата в командный режим
для перехода В РЕЖИМ УПРАВЛЕНИЯ ФАЙЛАМИ нужно нажать
«:» (перейти в режим редактора ED)
Двигаться по файлу можно командами:
h,j,k,l влево, вниз, вверх, вправо
Ctrl-F На страницу вниз
Ctrl-B На страницу вверх
А если вам очень повезет, то можно будет двигаться стрелочками.
Чтобы перейти в режим везения, нужно описать для операционной
системы ваш терминал. Этим займемся в дальнейшем (см.
«Описание терминалов, terminfo, termcap»).
Подгоните курсор к нужному месту и нажмите
i перевод в режим ввода
вводите требуемый текст
ESC прекратить ввод, перейти в командный режим
Подгоните курсор к ненужному месту и нажмите
x удалить символ
dd удалить строчку
Еще парочка полезных команд:
o вставлять с новой строки (под текущей строкой)
a в режим ввода ЗА курсором
5yy запомнить 5 строчек
Подгоните курсор к нужному месту
p вставить запомненные строки под курсором
P вставить запомненные строки НАД курсором
J Склеить две строки
/Шаблон поиска Enter — поиск
n Повторить поиск