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 Повторить поиск