Действия

FreeBSD - vim - основы

Материал из Wiki - Iphoster - 'the best ever support'

Vi/vim - текстовый редактор


Установка:

# cd /usr/ports/editors/vim && make install clean


Режимы работы vim

1. Режим ввода команд (Command mode) - по-умолчанию. В этом режиме нажатия клавиш интерпретируются как команды редактору, а не как текст, вводимый в
документ.
2. Режим ввода текста (Insert mode). Режим работы с текстом.
3. Ex режим. В этот режим можно попасть нажатием символа ":". Загрузка файла, сохранение и выход происходят в этом режиме.


Переключение режимов:

Переключиться из Command mode в Insert mode: нажать "i"/"a" или Insert так и в Ex режим нажав ":" .
Клавиша a означает append (присоединить). В этом режиме вводимый текст вставляется после символа, на котором находится курсор.
Клавиша i означает insert (вставить). В этом режиме вводимый текст вставляется перед символом, на котором находится курсор.

ESC – выход из текущего режима
ESC ESC – выход в Command mode

Режим поиска — ввод поискового запроса. Переход в него из Command mode:

/

Визуальный режим — режим выделения текста. Переход в него из Command mode:

v

Открыть файл на редактирование

# vim file


Открываем файл на редактирование из vim (Ex режим):

:e otherfile

Сохранение документа и выход (Ex режим):

:wq [file2]
w – означает, что файл необходимо сохранить
q означает выход из текстового редактора. 
[file2] - новое имя файла

Принудительный выход без сохранения текста(Ex режим):

:q!


Добавление содержимого другого файла в текущий

:r file3


Удаление текста

x — удалить символ под курсором
X — удалить символ влево (удалить символ перед курсором)
dd — удалить текущую строку
d<число>d — стирание числа строк начиная с текущей
d — используется совместно с командами перемещения. Удаляет символы с текущего положения курсора до положения после ввода команды перемещения.
v, выделяем текст, d - удалить выделенный текст

Перемещение текста (cut-paste):

v, выделяем текст, d - удалить выделенный текст, p - вставка текста в визуальном режиме
p — вставка содержимого неименнованного буфера под курсором
P — вставка содержимого неименнованного буфера перед курсором


Копирование текста (copy-paste)

v, выделяем текст, y - скопировать выделенный текст, p - вставка текста в визуальном режиме
yy — копирование текущей строки в неименованный буфер
y<число>y — копирование числа строк начиная с текущей в неименованный буфер


Включение и выключение нумерации строк:

:set number - включение нумерации строк:
:set nonumber - выключение нумерации строк:

или

:set nu
:set nonu


Включение и выключение автоотступов:

:set autoindent - включение автоотступов
:set noautoindent -  выключение автоотступов

или

:set ai
:set noai

в следующие строки автоматически будет вставлен такой же отступ что и в первой строке.


Устанавливка уровня отступов

:set shiftwidth=5

или

set ai sw=5

установить отступ в 5 пробелов


Игнорирование регистра символов при поиске:

:set ignorecase - игнорировать
:set noignorecase - не игнорировать

или

:set ic
:set noic


Поиск выражения по шаблону:

/echo

найдет первую строку, соответствующую шаблону


Найти следующую строку, соответствующую шаблону

N – поиск назад
n – поиск вперед


Замена выражений:

:%s/ad4/mirror\/gm0/g

заменит все ad4 на mirror/gm0


Повторное использование шаблонов для замены:

:%s/^\(Merlin\)/Mrs \1 Monro/g

Пояснение

%s – говорит vi, что надо проводить замену
/ – разделитель шаблонов
^\(Merlin\) – поиск строк, начинающихся с Merlin и запись в буфер с номером 1.
/ – разделитель шаблонов
Mrs \1 Monro – замена найденной строки на строку, начинающуюся с Mrs, затем идет содержимое буфера с номером 1, а затем Monro.
/ – разделитель шаблонов
g – глобальная замена (замена каждой строки, соответствующей шаблону)


Запись части файла в другой файл:

:20,40w >> /tmp/file
3 - начало строки
5 - конец строки
$ - записать файл до конца


Изменить кодировку файла на лету

Указать кодировку cp1251 или utf-8 (Windows):
:set encoding=utf-8
или
:e ++enc=cp1251