Руководства, Инструкции, Бланки

инструкция Vim img-1

инструкция Vim

Рейтинг: 4.7/5.0 (1879 проголосовавших)

Категория: Инструкции

Описание

Использование текстового редактора Vim

Использование текстового редактора Vim

Vim — очень мощный редактор с огромным набором функций. Эта статья охватывает основные команды, которых достаточно для того, чтобы начать работу в vim-е.

Очень важно не просто читать статью, а параллельно пробовать все действия на каком-нибудь тестовом текстовом файле. Для этого создайте текстовый файл и откройте его с помощью редактора vim:

$ cd /tmp cp /etc/passwd /tmp/test vi ./test

Два режима

Есть два режима работы редактора: режим редактирования и нормальный режим. Переход в режим редактирования осуществляется различными командами, речь о которых пойдёт дальше. Выход из режима редактирования — кнопка <Esc>

Команды перемещения курсора

Команды перемещения работают в нормальном режиме. Нажмите <Esc>. чтобы убедиться что находитесь в нём.

Курсор можно перемещать стрелками на клавиатуре или, что гораздо быстрее, клавишами h, j, k, l:
h — влево
j — вниз
k — вверх
l — вправо

другие команды перемещения:
0 — Перейти к началу строки
$ — Перейти к концу строки
w — перейти к началу следующего слова
e — перейти к концу слова
gg — перейти в начало документа
G — перейти в конец документа
номер G — перейти на строку с номером <номер>
Можно использовать связку <номер><команда перемещения>
3w — перейти к началу четвёртого слова, считая с текущей позиции
4e — перейти к концу четвёртого слова, считая с текущей позиции.

Команды удаления

x — удалить букву под курсором
число x — удалить <число> букв, начиная с той что под курсором
dd — удалить строку
число dd или d число d — удалить <число> строк, начиная с той где находится курсор
Можно комбинировать команды удаления и перемещения:
dw — удалить 1 слово начиная с текущей позиции
d5w — удалить 5 слов
d$ — удалить строку с текущего положения курсора до конца строки
d0 — удалить строку с текущего положения курсора до начала строки.

Сохранение изменений

Для того чтобы сохранить отредактированный файл нужно:

  • перейти в нормальный режим, нажав <Esc>
  • ввести команду :write <имя_файла> <ENTER> ,
  • или её сокращённый вариант :w <имя_файла> <ENTER>

Если имя_файла отсутствует, то сохраняется текущий файл
Чтобы выйти из редактора введите :quit <ENTER> или просто :q <ENTER>
Выйти не сохранив изменения — :q! <ENTER>
:wq — сохранить изменения в текущем файле и выйти.

Вставка текста

Для перехода в режим вставки нажмите <i> .
A — переход к концу строки и начало режима вставки
a — переход к следующему символу и начало режима вставки
o — начать вставку под текущей строкой
O — начать вставку над текущей строкой
<Esc> — переход к нормальному режиму

Отмена последних изменений

u — отмена последнего изменения
U — отмена изменений во всей строке
<CTRL-R> — отмена отмены.

Копирование и вставка

yy — скопировать всю строку в буфер обмена
p — вставить содержимое буфера обмена после курсора
y5y или 5yy — скопировать 5 строк
yw — скопировать слово
В буфер обмена попадают и только что удалённый текст. Например если удалить строку dd. то сразу же после этого её можно вставить с помощью p

Замена

r — заменить символ под курсором
R — заменять символы, начиная с текущего положения
c <число> <команда перемещения> — ещё одна команда замены.
cw — поменять слово.
c$ — поменять строку, начиная с положения курсора и до конца.
cc — поменять всю строку.

Поиск

/ — поиск в прямом направлении
? — поиск в обратном направлении
n — перейти к следующему найденному элементу
N — перейти к предыдущему найденному элементу.

Поиск соответствующей скобки ], ), >

Наведите курсор в нормальном режиме на открывающуюся/закрывающуюся скобку и нажмите %. Курсор перейдёт к соответствующей закрывающейся/открывающейся скобке, если таковая есть.

Определение положения в файле

Чтобы определить текущее положение нажмите <CTRL-G> в нормальном режиме. В нижней части терминала появится строка, содержащая информацию о количестве строк, текущем положении, имя файла.

Автоматическая замена

:s/old/new/g — заменить все сочетания 'old' в текущей строке на 'new'
:10,20s/old/new/g — тоже самое, но для строк с 10й по 20ю

Вызов справки

:help <команда> <ENTER> — вызов справки по команде редактора.

Исполнение shell-команд

:!<команда>
Например:
:!ls — исполнить команду ls в текущей директории

Чтение файла

:r <filename> — вставить содержимое filename после курсора

Команда set

Некоторые настройки редактора можно менять не выходя из самого редактора с помощью команды set .
Например:
:set ic — ignore case - игнорировать регистр букв (например при поиске)
:set hls — highlighting search - подсвечивать найденное при поиске совпадение
:set nohls — не подсвечивать найденное при поиске совпадение.

Файл настроек

Скрипт, который исполняется при запуске редактора vim находится в домашней директории пользователя и называется .vimrc .
В нём можно задать некоторые дополнительные настройки, например:

colo evening filetype plugin on set grepprg="grep -nH $*" filetype indent on

Примеры этого файла поставляются вместе с дистрибутивом редактора.

Дополнительная информация

Подробную информацию можно получить из встроенной справки с помощью команды :help или на страницах мануала man vi .

Популярные статьи

Другие статьи

Вентилятор канальный центробежный SHUFT CFk 250 VIM

Вентилятор канальный центробежный SHUFT CFk 250 VIM Описание

Разъемный корпус вентиляторов серии CFk VIM изготовлен из композиционного материала с повышенными звукопоглощающими и противоударными свойствами. Вентиляторы оборудованы мотор-колесами SHUFT с пластиковой или металлической крыльчаткой с загнутыми назад лопатками. Двигатель - асинхронный с внешним ротором IP44, клеммная коробка IP55. Электродвигатель с рабочим колесом статически и динамически сбалансированы в 2х плоскостях. Шариковые подшипники двигателя не требуют техобслуживания и имеют длительный срок службы. Двигатель вентилятора имеет встроенную термозащиту с автоматическим перезапуском.

Регулирование скорости вентиляторов осуществляется путем изменения напряжения за счет использования пятиступенчатых трансформаторов TRE-T или однофазных плавных регуляторов скорости SRE. К одному регулятору можно подключить несколько вентиляторов при условии, что общий ток вентиляторов не превышает номинальный ток регулятора.

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

Преимущества:
  • EXTRA COOLING — технологическое решение с применением компактного блока мотор-колеса в центре воздушной струи, благодаря чему обеспечивается оптимальное охлаждение двигателя и длительный ресурс службы.
  • Класс защиты двигателя — IP 44.
  • Корпус из композита устойчив к коррозии, обеспечивает снижение веса изделия до 10%.
  • Теплостойкий соединительный кабель не содержащий галогенов с дополнительной SIR изоляцией.
Монтаж:

Вентиляторы поставляются готовые подключению. Могут устанавливаться в любом положении, в соответствии с направлением потока воздуха (в соответствии со стрелкой на корпусе вентилятора). Необходимо предусматривать доступ для обслуживания вентилятора.

Подключение электропитания:

На корпусе вентиляторов находится клеммная коробка для подключения к электрической сети. Необходимо, чтобы подключение вентиляторов выполнял только квалифицированный персонал и в соответствии со схемой подключения.

Уход:

Вентиляторы не требуют специального технического ухода. Единственное требование — чистка крыльчатки.

Сертификат:

Декларация о соответствии ТР ТС.

Консольные текстовые редакторы Linux - Vim(Vi) nano

Консольные текстовые редакторы Linux - Vim(Vi) nano

Все основные настройки debian (Linux) всегда приходится производить в консольных текстовых редакторах.

Выбор редактора, его удобство напрямую зависит на скорость и комфорт настройки.

В своей работе я постоянно использую такие консольные редакторы, как vim (улучшенная версия vi ) и nano. Так же существуют такие редакторы, как: jed, diakonos и аналоги, но так сложилось, что они не нашли достойного места в моем сердце.

NANO - самый простой консольный текстовый редактор. Имеет не малый функционал, но к сожалению его использование не комфортно, поэтому значение данной программы в моей жизни сводится к редактированию простых и маленьких (одностраничных) файлов, которые не требуют поиска, замены, работы с регулярными выражениями и т.д.

Устанавливаем консольный текстовый редактор nano:

Для открытия файла в консольном текстовом редакторе nano:

/home/user/myfile - путь к Вашему файлу.

VIM - самый мощный на мое мнение консольный текстовый редактор всех времен. Уметь им пользоваться обязан каждый дебианщик (линуксоид), несмотря на то, что первое впечатление в 90% случаев остается очень негативное из за его особенностей, но если перебороть в себе это чувство изучить хотя бы несколько горячих комбинаций клавиш - сразу понимаешь насколько все красиво реализовано, насколько комфортно бегать по строкам, производить поиск по регулярным выражениям, делать замены регулярными выражениями. Огромные конфиги и мегабайты логов становятся совсем маленькими.

Перед началом использования этого консольного текстового редактора настоятельно рекомендую прочесть статью о VIM - советую внимательно отнестись к "4 Режимы работы" и все подпункты, там относительно подробно описаны основные команды, которые пригодятся новичку.

Устанавливаем консольный текстовый редактор VIM :

Для открытия файла в консольном текстовом редакторе vim:

/home/user/myfile - путь к Вашему файлу.

Комментарии: Консольные текстовые редакторы Linux - Vim(Vi) nano

Только авторизованные пользователи могут оставлять комментарии!

Текстовый редактор vim - краткое руководство

Текстовый редактор vim - краткое руководство Текстовый редактор vi (vim)

Vim (сокр. от Vi Improved, произносится Вим) — текстовый редактор, созданный на основе более старого Vi. Ныне это один из мощнейших текстовых редакторов с полной свободой настройки и автоматизации.

На выделенных серверах установлен vim, также создан alias который при вызове команды vi вызывает vim

В данной статье приводится практический опыт использования редактора, кратко описаны широко используемые команды для редактирования текста которые пригодятся начинающим осваивать этот редактор.

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

Существует три основных режима работы: режим команд, режим редактирования и режим последней строки. Выход из режима редактирования осуществляется клавишей Escape (далее обозначена как (esc), переход в режим редактирования клавишами i или insert. Находясь в режиме команд, можно выполнять сложные операции редактирования текста с помощью клавиши "двоеточие"(:). При нажатии этой клавиши курсор устанавливается в последнюю строку экрана, поэтому данный режим называется режимом последней строки. Он считается особым типом режима команд.

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

Затем можно нажать клавишу i (или insert) и внести нужные изменения.

если вместо i нажать a. текст будет вставляться за символом на котором стоит курсор (обычно используется при редактировании файлов этот метод), если нажать o - будет вставлена новая строка.

Стирать текст следует выйдя из режима редактирования клавишей Escape и затем можно использовать клавишу x - она работает как клавиша del - стирает вперед, если нажимать shift+x. то будет стирать назад (по аналогии с backspace)

После редактирования нажмите (esc):wq чтобы выйти с сохранением текста

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

set number / :set nonumber

Основные команды перемещения по тексту
  • Перейти к строке с номером

(esc):номер или (esc),номер,shift+g

(esc) shift+j в конце строки объединит строки вместе.

(esc) shift+g - переместит в конец текста

  • Перемещение на первый символ в режиме просмотра
Работа с буфером

(esc) dd - удалит строку в буфер

(esc) 10dd - удалит 10 строк в буфер

(esc) yy - скопирует строку в буфер

(esc) 10yy - скопирует 10 строк в буфер

(esc) p - вставит содержимое буфера под курсором

(esc) P - вставит содержимое буфера над курсором

Замена текста

g - обозначает замену до конца строки

если надо менять по всему файлу, то тогда пишем (esc):%s/что_меняем/на_что_меняем/g

появился символ % в начале команды

  • Комментировать блок текста от курсора до строки номер 10
  • Комментировать блок текста от курсора до конца
Как выйти из редактора vi
  • Выход осуществляется последовательностью нажатий
  • Выход с сохранением текста

(esc):wq или (esc):exit

  • Выход с принудительным сохранением (например, если файл read-only)

Моя шпаргалка по работе в Vim

Самое главное — побороть боязнь белого листа. Я всегда говорю это себе, когда нужно начать работу над чем-то и не знаешь, как подступиться. Так что я решил не ломать голову над тем, о чем будет первая запись в этом блоге, а просто выложить небольшую шпаргалку по текстовому редактору Vim.

Шпаргалка эта уже не первый месяц хранится у меня в

/txt/vim.txt. За это время я успел составить довольно объемный справочник по основным командам Vim. При желании вы можете начать свое обучение работе с Vim с этого поста.

/.vimrc
Можно редактировать файлы через сеть, например
:e <scp|ftp|ftps>://user@host/path/to/the/file.txt
:Ex или :e ./ - файловый менеджер

== Основы ==
hjkl перемещение в разные стороны
i режим вставки
I добавление в начало строки
a режим добавления
A добавление в конец строки
o добавить строку сразу за текущей
O добавить строку перед текущей
R писать поверх имеющегося текста
u. u[ndo] отмена предыдущего действия (undo)
CTR-R. red[o] отмена отмены предыдущего действия (redo)
dd вырезать (удалить) строку
cc удалить и начать редактирование
yy копировать строку
p вставить из буфера обмена
<n>d удалить n+1 строку
<n>y скопировать n+1 строку
ESC перейти в режим просмотра
DEL удалить следующий символ
:<n> перейти на строку #n
% перейти к парной скобке
:e <fname> редактировать файл
:w [fname] записать изменения
:wa сохранить изменения во всех файлах
:q выйти из редактора
:q! выйти из редактора, не сохраняя изменения
:color <name> выбор цветовой схемы. цветвые схемы:
/usr/local/share/vim/vim72/colors/*.vim
:pwd текущий каталог
:cd [path] перейти в другой каталог
. команда выполнить команду - man, git, и так далее
стрелочками веерх и вниз можно автодополнять
команды и искать по истории
CTR+p или CTR+n автоматическое дополнение текста
(в режиме редактирования)
CTR+r,=,<expr> вставить выражение, например 5*2 - 3
(в режиме редактирования)
CTR+u, CTR+d Page Up / Page Down
CTR+y, CTR+e Перемотка вверх/вниз без движения курсора

== Подсветка синтаксиса ==
:syntax on включить подсветку
:syntax off выключить подсветку (по умолчанию)

== Перенос строк ==
:set wrap разрешить word wrap (по умолчанию)
:set nowrap запретить word wrap

== Печать ==
:ha[rdcopy] распечатать документ
:set printoptions=duplex:off отключить двустороннюю печать

== Сворачивание ==
zc свернуть блок
zo развернуть блок
zM закрыть все блоки
zR открыть все блоки
za инвертирование
zf см :set foldmethod=manual
:set foldenable включить свoрачивание
:set foldmethod=syntax сворачивание на основе синтаксиса
:set foldmethod=indent сворачивание на основе отступов
:set foldmethod=manual выделяем участок с помощью v и говорим zf
:set foldmethod=marker сворачивание на основе маркеров в тексте
:set foldmarker=bigin,end задаем маркеры начала и конца блока

== Маркеры ==
ma установить локальный маркер a
mB установить глобальный маркер B
`c перейти к локальному маркеру c
`0 вернуться на позицию, на которой закончили
работу при закрытии vim
:marks просмотр маркеров
set viminfo='1000,f1 маркеры пишутся в

/.viminfo, восстанавливаясь
при следующем запуске vim. маркер " хранит
последнюю позицию курсора в файле
== Сессии ==
mksession file.session сохранить текущую сессию
source file.session восстановить ранее сохраненную сессию

== Макросы ==
qa записать макрос с именем a
q в режиме записи макроса: закончить запись
@a выполнить макрос с именем a
@@ повторить последний макрос

== Регистры ==
"ayy скопировать строку в регистр a
"bdd вырезать строку и поместить в регистр b
"С2d вырезать три строки и дописать в конец
регистра C
:reg [name1][name2][. ] просмотреть содержимое регистров

== Выделение ==
v + hjkl выделение текста
SHIFT + v выделить строку
CTR + v выделение прямоугольника
p вставить
y копировать
d удалить
gu к нижнему регистру
gU к верхнему регистру

== Отступы ==
[#]> сдвинуть выделенное вправо
[#]< сдвинуть выделенное влево
[#]>> сдвинуть строку вправо
[#]<< сдвинуть строку влево
set tabstop=# для табуляции используется # пробелов
set shiftwidth=# в командах отступа используется # пробелов
set [no]expandtab заменять ли табуляцию на соответствующее
число пробелов

== Поиск и замена в файле ==
/Выражение поиск выражения в файле
\cВыражение поиск без учета регистра
n следующее совпадение
N предыдущее совпадение
:%s/foo/bar/gi замена строк, см http://eax.me/regular-expr/

== Нумерация строк ==
:set number включить нумерацию строк
:set nonumber отключить нумерацию строк

== Работа с вкладками (a.k.a табами) ==
:tabnew [fname] создать таб
:tabs вывести список табов
:tabn следующий таб
:tabp предыдущий таб
<n>gt перейти на таб #n
gt следующий таб
gT предыдущий таб
:tabm +1 переместить таб вперед на одну позицию
:tabm -1 переместить таб назад на одну позицию
:tabm 2 переместить таб на заданную позицию
(нумерация начинается с нуля)

== Работа с окнами ==
:split горизонтальное разбиение
:vsplit вертикальное разбиение
Ctr+W, затем
с закрыть окно
+- изменение высоты текущего окна
<> изменение ширины текущего окна
= установить равный размер окон
hjkl или стрелочки перемещение между окнами

== Проверка орфографии ==
mkdir -p

/.vim/spell
wget http://ftp.vim.org/vim/runtime/spell/ru.koi8-r.sug
wget http://ftp.vim.org/vim/runtime/spell/ru.koi8-r.spl
wget http://ftp.vim.org/vim/runtime/spell/en.ascii.sug
wget http://ftp.vim.org/vim/runtime/spell/en.ascii.spl

set spell spelllang=ru,en включить проверку орфографии
:set nospell выключить проверку орфографии
]s следующее слово с ошибкой
[s предыдущее слово с ошибкой
z= замена слова на альтернативу из списка
zg good word
zw wrong word
zG ignore word

== Работа с кодировкой ==
e ++enc=<имя кодировки> Редактирование файла в. кодировке
w ++enc=<имя кодировки> Сохранить файл в новой кодировке
set fileencodings=utf-8,koi8-r Список автоматически определяемых
кодировок в порядке убывания
приоритета

== Другое ==
:set [no]wildmenu При авто-дополнении в командной строке над
ней выводятся возможные варианты
:set list Отображать табуляцию и переводы строк
q: История команд
. Повторение последней команды

Более подробный материал об использовании текстового редактора Vim вы найдете в книге Изучаем редакторы vi и Vim, 7-е издание. Книга доступна как в бумажном, так и в электронном формате.

На этом пока все. Думаю, я буду время от времени редактировать эту шпаргалку, так что следите за PS в конце следующих постов.

Подпишись через RSS. E-Mail. Google+. Facebook. Vk или Twitter !

Редактор Vi

Существует множество версий Vi. Я представлю вам версию Vi, называемую «Vim». Vim очень популярен, так как у него есть несколько дополнений, делающих Vi немного приятнее (когда будут демонстрироваться специфичные для Vim команды, я это отмечу). Здесь приведена картинка GVim из моей системы.

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

Хотя в большинстве дистрибутивов Linux он уже установлен по умолчанию. В придачу к улучшенному консольному Vi, Vim доступен также в виде GVim — прекрасного графического редактора, который может быть сконфигурирован для использования с великолепной библиотекой GUI (графического интерфейса пользователя) GTK+.

Если Vi вам в новинку, попробуйте установить в своей системе GVim. Использование Vi в графической оболочке может кое в чем облегчить новичкам жизнь.

Также можно запустить обучающую программу, набрав в терминале команду

Это небольшая обучающая программа поможет за 25-30 минут освоиться в этом необычном для новичка редакторе.

Перед использование Vi для редактирования файлов вам следует узнать, как в Vi перемещаться по файлу. У Vi множество команд перемещения, многие из них мы сейчас рассмотрим. Для этой части обучения найдите какой-нибудь малоценный текстовый файл (TODO: лучше на английском) и загрузите его в Vi напечатав:

Если у вас установлен Vim, наберите в консоли:

Если вы предпочитаете использовать GVim:

myfile.txt должно быть именем текстового файла в вашей системе.

После загрузки Vi, на экране вы должны увидеть часть загруженного вами текстового файла. Поздравляю — вы уже в Vi! В отличии от большинства редакторов, загрузившись, Vi находится в специальном режиме, называемом «командным режимом». Это значит, что если вы нажмете клавишу <l>(строчная L). вместо появления «l» на месте курсора вы увидите, что курсор всего лишь сдвинулся на один символ вправо. В командном режиме знаки, набираемые на клавиатуре, используются как команды для Vi, а не как помещаемые в текст символы. Один из наиболее важных типов команд — это команды перемещения. Давайте рассмотрим некоторые из них.

Находясь в командном режиме, вы можете использовать клавиши <h>,<j>,<k> и <l> для перемещения курсора влево, вниз, вверх и вправо соответственно. Если вы используете современную версию Vi, вы можете также с этой целью использовать клавиши со стрелками. Клавиши <h>,<j>,<k> и <l> предпочтительнее, так как освоившись с ними вы сможете перемещаться по файлу, не размахивая руками над клавиатурой. Для перемещения по текстовому файлу используйте следующие клавиши:

j – перемещает курсор вниз;

k – перемещает курсор вверх;

h – перемещает курсор вправо;

l – перемещает курсор влево.

Попробуйте использовать <h> пока не дойдете до начала строки. Отметьте, что Vi не даст вам перескочить на предыдущую строку, нажимая <h>, если вы находитесь в начале строки. Точно также он не позволит вам перескочить на следующую строку, нажимая <l> в конце строки.

Vi предоставляет специальные команды для прыжков в начало и конец текущей строки:

0 (ноль) – перескочить на первый символ в строке;

$ – перескочить на последний символ в строке.

Поскольку у Vi так много команд перемещения, его можно использовать в качестве великолепного инструмента просмотра — «pager»а (как команды more или less). Используя Vi для просмотра, вы очень быстро запомните все команды перемещения.

Вы также можете использовать <C-F> и <C-B> для перемещения вперед и назад сразу на страницу. Современные версии Vi (такие как Vim) могут позволить использовать для этих целей клавиши <PageUp> и <PageDown>.

Комбинация <C-F> означает комбинацию клавиш <Ctrl>+<F>. Во многих источниках про Vim можно встретить именно такое обозначение комбинация клавиш. Часто еще можно встретить и такое обозначение: ^F

Vi также позволяет вам перемещаться влево и вправо по словам:

w – перемещения на первый символ следующего слова нажмите;

e – передвинуться на следующий последний символ слова нажмите;

b – сдвинуться на предыдущий первый символ слова можно нажимая.

Позабавившись с командами перемещения по словам, вы могли заметить, что Vi считает слова типа «foo-bar-oni» пятью различными словами! Это происходит потому, что Vi по умолчанию разделяет слова пробелами или знаками пунктуации (которые тоже считает словами). Поэтому foo-bar-oni считается пятью словами: «foo»,»-»,»bar»,»-» и «oni».

Иногда вам так и надо, а иногда - нет. К счастью, Vi воспринимает понятие «большого слова». vi разделяет большие слова только пробелами и началами строк. Это значит, что foo-bar-oni состоит из пяти Vi-слов, но является только одним большим словом Vi.

Чтобы переместиться на следующее или предыдущее большое слово, вы можете использовать «заглавные» команды перемещения по словам. Нажав следующие клавиши, вы попадете на:

W — первый символ следующего большого слова;

E — следующий последний символ большого слова;

B — предшествующий первый символ большого слова.

Осталось рассмотреть еще несколько команд, и можно будет начинать их записывать на шпаргалку. Вы можете использовать скобки:

( и ) чтобы перейти на начало предыдущего и следующего предложения.

< или > (фигурные скобки) – Позволят перескочить в начало параграфа.

Мы рассмотрели основные команды перемещения, однако осталась еще пара команд, которые вам необходимо знать. Напечатав:

:q вы должны выйти из Vi. Если не получиться, значит вы каким-то образом ухитрились изменить файл;

:q! выйти отбросив изменения следует командой.

Теперь вы должны оказаться в командной строке системы.

Любая команда в Vi, начинающаяся с двоеточия (»:»), называется командой ex-режима (an ex-mode command). Это из-за того, что Vi имеет встроенный не экранный редактор, зовущийся ex. Он может использоваться подобно sed для выполнения операций редактирования, ориентированных на строки. Дополнительно, как мы только что видели, он может использоваться для завершения работы. Если вы случайно нажмете <Q>, находясь в командном режиме, то можете оказаться в ex-режиме. В этом случае вы столкнетесь с приглашением »:», и нажатие на Enter будет сдвигать вверх содержимое экрана. Для возврата к привычному vi-режиму просто наберите vi и нажмите <Enter>.

Мы уже видели, как используя ex-команду :q выйти из vi.

:w – записать или сохранить файл;

:w filename – для сохранение под другим именем;

В Vim (и других потомках Vi, типа elvis), вы можете держать открытыми одновременно несколько буферов. Введите команду

:sp filename.txt для открытия файла filename.txt в новом окне;

:sp (без имени файла) откроет дополнительное окно для активного буфера.

Для перехода между окнами нажмите <C-w>,<C-w> (дважды <Ctrl>+<w>). Любая из команд :q. q. w и :x относиться только к активному окну.

Вот и подошло время заняться изучением простых команд редактирования. Рассматриваемые здесь команды считаются «простыми» из-за того, что оставляют вас в командном режиме. Более сложные команды автоматически переводят вас в режим ввода текста, позволяющий добавлять в буфер символьную информацию, набираемую на клавиатуре; их рассмотрим позднее.

х – удаление символа под курсором;

J – присоединение следующей стоки к текущей;

r+символ – замена символа на символ;

dd – удаление текущей стоки.

Повторить любую команду редактирования вы можете нажимая клавишу <. > (точка). Если попробуете, то можете увидеть, что печать dd… удалит 4 строки, а J…… объединит семь строк. Как обычно, Vi обеспечивает вас различными удобными средствами сокращения трудозатрат.

Удалять текст вы можете также комбинируя команду d с любыми командами перемещения. Например, dw удалит часть текста от текущей позиции курсора до начала следующего слова; d) удалит вплоть до следующего конца предложения, и d> удалит весь остаток абзаца. Поэкспериментируйте с командой d и другими командами редактирования, пока не почувствуете себя с ними уверенно.

Мы уже рассмотрели, как в vi перемещаться, выполнять чтение\запись файлов и основные операции редактирования. Однако, я еще не объяснил, как напечатать произвольный текст! Сделано это было умышленно, так как поначалу режим ввода текста в Vi малость сложноват. Тем не менее, после того, как вы станете спокойно себя чувствовать в режиме ввода текста, эта сложность (и гибкость) станет настоящей ценностью.

В Vi, в режиме ввода текста, вы можете вводить текст «прямо на экран», как в большинстве других экранных редакторов. Сделав свои изменения, вы можете нажать

Esc – вернуться в командный режим;

Не забудьте, введя свой текст, нажать <ESC> для возврата в режим команд.

Vi действительно становиться мощным, когда вы начинаете использовать совмещенные (или комбинированные) команды, типа d< и cw. Дополнительно к таким командам, вы также можете совмещать числа с любыми командами перемещения, как 3w. которая сообщает Vi о необходимости проскочить вперед на три слова. Вот еще несколько примеров таких комбинированных команд: 12b. 4j.

Разрешая комбинации (число)(команда перемещения), Vi позволяет еще совмещать команды d или c с числами или командами перемещения. Так d3w удалит следующие три слова, d2j удалит текущую и две следующие строки, и т.д. Попробуйте немного поэкспериментировать с командами c и d. совмещенными с перемещениями, чтобы почувствовать, каким мощным и лаконичным может быть редактирование в Vi. Когда эти команды станут вашей второй натурой, вы сможете редактировать файлы с невероятной скоростью.

Только что мы рассмотрели, как перемещаться, сохранять и завершать работу, выполнять простое редактирование и удаление, пользоваться режимом ввода текста. С этим багажом знаний (только что показанным на шпаргалке) вы уже способны, используя Vi, справиться практически с любой задачей.

Однако, у Vi есть еще много более мощных команд. В этом разделе вы узнаете как вы'резать (cut), скопировать (copy) и вставить (paste), найти (search) и заменить (replace) текст, а так же, как использовать автоматический отступ (autoindent). Эти команды помогут Vi быть более приятным и производительным.

Лучшим способом вырезать и вставлять фрагменты текста является использование экранного режима, специального режима, добавленного в современных версиях Vi, таких как Vim и elvis. Вы можете представлять себе экранный режим как режим «подсвечивания текста». Выделенный текст может быть скопирован или удален, а затем вставлен. Если вы используете GVim, выделить кусок текста вы можете просто нажав левую кнопку мышки и протащив курсор по нужной области. Войти в экранный режим вы еще можете нажав v (это может быть вашей единственной возможностью, если вы используете Vi в консоли). Затем, двигая курсор командами перемещения (обычно стрелками), вы можете выделить область текста. Закончив выделение, вы уже готовы вырезать либо копировать текст.

Для копирования текста нажмите y (от слова «yank»). Чтобы вырезать текст нажмите d. Вы будете переведены назад в командный режим. Теперь переместитесь в то место, где вы хотите вставить вырезанный или скопированный текст, и нажмите P (заглавная) для вставки перед курсором или p (строчная) для вставки за курсором. Всё, копирование\вырезание и вставка выполнены! А теперь проделайте еще несколько раз процедуру копирования\вырезания и вставки перед тем, как перейти к следующему разделу.

Для того, чтобы вставить в редактор содержимое буфера обмена (в который Вы скопировали информацию по <Ctrl> +<C> ) необходимо установить утилиту xclip

и скопировав нужный текст выполнить в командном режиме редактора

Для замены образцов текста мы используем ex-режим. Если вы хотите заменить первый попавшийся в текущей строке образчик, наберите:

:s/<regexp>/<replacement>/ и нажмите <ENTER>. где <regexp> - что хотите заменить, и <replacement> - на что.

Для замены всех совпадений с эталоном в текущей строке используйте команду:

:%s/<regexp>/<replacement>/g – замена каждого вхождения образца во всем файле (что обычно и требуется);

:%s/<regexp>/<replacement>/gc – подтверждение потребность замены в каждом конкретном случае при выполнении глобального замещения (здесь «c» означает «confirm»).

И не забудьте, набрав команду, нажать <ENTER>.

Vi поддерживает автоматический отступ при редактировании вами исходников (текстов программ). Большинство современных версий Vi (таких, как Vim) могут самостоятельно включать абзацный авто отступ при редактировании вами исходников (например, файлов типа .c).

:set autoindent – включить авто отступ;

:set tabstop=(число) – установить авто табуляцию (где число есть число символов табуляции).

Если авто отступ включен, вы можете использовать <C-d> для уменьшения и <C-t> для увеличения уровня отступа.

Означенные здесь ресурсы могут быть полезны желающим продолжить изучение vi далее. (Правда, на английском):

Место, где есть все нужное вам для vim – http://www.vim.org/

Если вы ищите хорошую, старомодную бумажную книгу, http://oreilly.com/catalog/9781565924260/ может стать прекрасным выбором. Содержит хороший обзор самого vi и его клонов;

Поваренная Книга Vim

Поваренная Книга Vim автор. Steve Oualline

Это страница Поваренной Книги Vim. Она содержит короткие
рецепты как сделать много простых и не простых вещей в Vim .
Для начала ознакомления вы уже должны знать основы Vim. однако
каждая команда детально объясняется.

Каждый набор инструкций является завершенным. Чувствуйте себя как
дома и выбирайте именно то что вам нужно.

Содержание

Перестановка символов
Интерактивная
замена одного слова другим
Интерактивная
замена одного слова другим (метод командной строки)
Замена
одного слова другим одной командой
Перемещение
текста (в стиле Vi )
Перемещение
текста (Визуальный режим)
Копирование
участка текста из одного файла в другой
Копирование
участка текста из одного файла в другой (Визуальный Метод)

Сортировка участка текста (Перемещение текста
(в стиле Vi )
Сортировка
участка текста (Визуальный Метод)
Работа с
Make-файлом и другими SOB файлами
Форматирование
параграфа
Поиск процедуры в программе на Си

Рисование комментариев
Чтение
man страницы
Удаление символа возврата каретки
из MS-DOS файла
Обрезание пробелов в конце
строки
Упс, я оставил файл защищенным от
записи
Замена "Последний, Первый"
на "Первый Последний"
Как
редактировать все файлы содержащие заданное слово
Как
редактировать все файлы содержащие заданное слово используя
встроенный grep

Перестановка символов

Если вы быстро печатаете, ваши пальцы могут легко обогнать ваш
разум. Часто люди путают местами символы. Например "the"
превращается в "teh".

Для перестановки двух символов, к примеру "e" и "h",
поместите курсор на "e" и наберите xp .

Команда "x" удаляет символ ("e") и "p"
вставляет его после курсора (который теперь находится над "h".)

Интерактивная замена одного слова другим (метод командной строки)

Предположим, вы хотите заменить в тексте каждое слово "идиот"
словом "менеджер". Но вы хотите иметь возможность
предпросмотра до замены.

Для этого нужно:

Повторяйте шаги 4 и 5 пока не замените все вхождения

Какая Дева!?

Церковь только что купила свой первый компьютер и учиться его
использовать. Церковный секретарь решила составить формальную
прощальную проповедь для использования на похоронах. Имя покойного
она решила заполнять в выражение "<имя>". При
очередных похоронах она бы просто заменяла это выражение на имя
покойного.

Как-то раз, когда проходили двое похорон, первое - некоей Марии,
второе для некоей Эдны. Так что секретарь применила глобальную
замену "<имя>" на "Мария". Отлично. Затем,
во время вторых похорон, она заменила "Мария" на "Эдна".
Это было ошибкой.

Представьте удивление священника, когда он начал чтение и
произнес "Рождение Пресвятой Девы Эдны".

Интерактивная замена
одного слова другим (метод командной строки)

Предположим, вы хотите заменить в тексте каждое слово "идиот"
словом "менеджер". Но вы хотите иметь возможность
предпросмотра до замены.


Эта команда будет производить замену и останавливаться после каждого
изменения, чтобы дать вам возможность подтвердить его. Ввод "y"
означает принятие, а "n" - отказ от изменения.

Команда состоит из.


Предупреждение

На практике в большинстве Мэйкфайлов (файл, используемый UNIX
для контроля компиляции) больше похож на:


Заметьте, что обратный слеш (\) использован для индикации конца
строки. После сортировки получается:


Имена файлов в порядке, но обратные слеши неправильно расставлены.
Не забудьте исправить их до продолжения редактирования.


Сортировка участка текста
(Визуальный Метод)

Часто вы будете редактировать файл, содержащий список имен. К
примеру, список объектных файлов для компоновки в программу.


Этот список мило бы выглядел в алфавитном порядке. Или по меньшей
мере в последовательности ASCII. Для сортировки по алфавиту введите
следующие команды:

Предупреждение

Смотрите секцию предупреждение о
сортировке для короткого ознакомления с проблемами при
использовании этой команды.

Работа с Make-файлом и другими SOB файлами

Одной их проблем с файловым форматом, используемым UNIX
командой make является его крайняя сумасбродность.

К примеру, это корректно :


С первого взгляда может показаться, что оба примера одинаковы. Но
присмотритесь получше. Строка "cc" в первом случае
начинается с таба. Вторая - с восьми пробелов. (На экране не видно
отличия межде пробелами и табом! Вам необходима более качественная
видеокарта.)

Так как их отличить, если и на экране (или печатной странице)
они выглядят одинаково.

Никак. Вы думаете это немного несправедливо. Особенно когда
make работает с одни, но не работает с другим. Но кто угодно может
сказать что UNIX справедлив.

К счастью в Vim есть режим показывающий что именно находится в
вашем файле. Команда


переведет вас в этот режим. Когда экран установлен в "list
mode", отображаются все символы. Табуляции выглядят как "^I"
и конец строки обозначен как $. Таким образом, два наши примера
выглядят как:


Теперь можно легко разобрать которая строка содержит таб.

Форматирование параграфа

Редактор Vim не является текстовым процессором. Парень, это не
текстовый процессор. Есть куча вещей, которые можно лучше получаются
при редактировании текста.

Когда строка выходит за область печати, текстовый процессор
автоматически переходит на новую строку. Редактор Vim позволяет
делать строки настолько длинными, насколько вы того хотите. Командой:


вы указываете Vim автоматически переходить на новую строку при
длине текущей в 70 символов. (Вы можете задать какое угодно число
длины строки.)

Это позволит вводить текст гораздо проще. Но не решает проблем
редактирования. Если вы введете абзац и затем решите удалить половину
слова в первой строке, Vim не переформатирует текст.

Вы может форсировать
переформатирование командами:

UNIX команда fmt - примитивный форматировщик. Она
выполняет пословесную обработку достаточную для текстовой
документации. -70 указывает fmt форматировать строки по 70
символов на строку.

Поиск процедуры в программе на Си

Vim был разработан программистами для программистов. Вы можете
использовать его для нахождения процедуры внутри набора программных
файлов на C или C++.

Но сначала вым нужно сгенерировать таблицу файлов. называемый
"tags" файлом. (Этот файл по грубому называется tags.)
Команда ctags генерирует эти файловые таблицы.

Для генерации таблицы содержания всех программных файлов на C в
текущей рабочей директории используйте следующие команды:


Для C++ используйте команду:


Если вы используете отличное от .cpp расширение для ваших C++
файлов, используйте его вместо .cpp .

Сгенерировав этот файл, укажите Vim что хотите редактировать
процедуру и он определить местоположение этой процедуры и переместит
вас к ее содержимому. К примеру если вы хотите редактировать
процедуру write_file, используйте команду:


Предположим вы просматриваете процедуру write_file которая
вызывает процедуру setup_data и вы хотите ее просмотреть. Чтобы
перейти к этой функции, поместите курсор в начале выражения
setup_data и нажмите Ctrl+]. Это укажет Vim перейти к объявлению этой
процедуры. Это перемещение произойдет даже если Vim для этого
понадобится перейти на другой файл.

Примечание :

Если отредактировали текущий файл и
не сохранили его, Vim выведет предупреждение и проигнорирует команду
Ctrl+].

Рисование комментариев

Мне нравится помещать большую закомментированную секцию перед
каждой процедурой. К примеру:


Рисование этих секций - по меньшей мере скучное занятие. Но у Vim
есть замечательная возможность, называемая "сокращения",
которая значительно упрощает дело.

Сначала вам нужно создать инициализационный файл Vim,
называемый

/.vimrc. (Сперва этот файл может выглядеть как
инициализационный файл ex. Это так. Фактически команда Vim является
режимом редактора ex .)

/.vimrc должен содержать строки:


Эти команды определяют набор сокращений Vim. Что такое сокращение
Vim? Это выражение, которое заменяет другое выражение. Когда Vim
увидит сокращение, он расширите его до полного выражения. В этой
секции мы определили сокращение #b . которое
расширяется в начальную линию комментария. Сокращение #e
делает тоже самое.

Итак, чтобы создать закомментированную секцию наберите #b. На
экране окажется:


Введите комментарии, включая символы "*" в конце и
начале. Закончите комментарий вводом #e . Это введет
конечную стору комментария.

Примечание :

Эта страница была написана в Vim. Как же мы вводили #b и #e?
Легко, набирая #bb и удаляя символ. (Нельзя написать #b, ведь в таком
случае он будет расширен.)

Еще несколько полезных комманд, которые может захотеть
программист ввести в


Настройка автоматического отступа (autoindent) указывает Vim в
новой строке делать такой же отступ как и в предыдущей. Очень
полезная вещь для написания программ. Настройка автоматической записи
указывает Vim писать в старый файл при переключении между файлами.

Аббревиатуры #d . #i и #l
определяют полезные для программистов выражения.

В заключение, набор команд sw=4 указывает
ширину сдвига (число символов перемещаемых командой сдвига (<
и >> )).

Это очень полезно при использовании 4 пробелов при отступе в
ваших программах на C или C++. (Обучение в Rice University показало
что это лучший размер для отступа.)

Чтение man страницы

Вы можете использовать редактор Vim для просмотра текстовых
файлов. Один из самых полезных способов - просмотр man страниц. Для
этого применяется конвейер из трех команд.

Первая - man для взятия страницы. Следующая - ul, переводящая
эскейп коды подчеркивания и выделения текста в что-то читабельное и
наконец Vim для просмотра файла.

Итак, наши команды это:


Man-страница будет сгенерирована и затем отображена в окне Vim.
Теперь вы можете ваши обычные команды редактирования для просмотра
текста.

Удаление символа возврата каретки из MS-DOS
файла

Если вы когда-нибудь пытались редактировать MS-DOS файл, то
заметили что каждая линия заканчивается символом ^M .
Причиной тому служит веселенький способ обращения MS-DOS к концу
строки. (Для понимания некоторых аспектов этой проблемы см. Историю
EOL .

Для удаления символов ^M из MS-DOS файла введите команду:


Двоеточие в начале команды (: ) указывает Vim войти
в ex режим. Все команды ex начинаются с указания диапазона строк, в
данном случае с первой (1) по последнюю ($). Слеш The slash указывает
начало "заменяемого текста".
указывает Vim обращаться к следующему символу как к регулярному даже
в случае если он является специфичным. Следующий символ - это
. (Он был бы обращением к
без .) Следующий слеш заканчивает выражение
"заменяемый текст". Следующее выражение является
"заменяющим текстом" отграниченным слешами. В данном случае
это пустота (// ).

Обрезание пробелов в конце строки

Некоторые люди считают пробелы и табуляцию в конце строки
бесполезными, расточительными и уродливыми. Для удаления невидимых
пропусков в конце каждой строки введите следующую команду:


Двоеточие (:) указывает Vim войти в режим команд ex. Все команды
ex начинаются с указания диапазона строк, в данном случае весь файл
(с 1 до последней строки: $).

Первый набор слешей отграничивает "заменяемый текст".
Квадратные скобки содержат возможные варианты совпадения. Так [
]
указывает совпадение пробела или табуляции. Звездочка (* )
означает что предыдущее совпадение (пробел или табуляция) могут
повторяться любое число раз. Знак доллара ($
указывает на конец строки.

Итак, [ ]*$ указывает Vim просмотреть любое
количество пробелов или табуляций находящихся в конце строки.

Затем найденное заменяется текстом между слешами. Так как этот
текст - пустышка, то пробелы и табуляция фактически удаляются.

Упс, я оставил файл защищенным от записи

Предположим вы редактируете файл и внесли много изменений. Это
очень важный файл и для предотвращения внесения случайных правок вы
сделали его защищенным от записи, даже для себя.

Редактор Vim позволяет вам редактировать защищенные от записи
файлы с небольшим или вообще без предупреждения. Единственная
трудность в том, что когда вы пытаетесь выйти используя "ZZ ",
происходит ошибка:


и Vim не выходит.

Так что же делать? Вы не хотите выбросить высе изменения, но
вам нужно выйти из Vim для того чтобы снять запрет на запись.

Весь фокус в запуске :shell команды. Эта
команда выводит вас из Vim запуском командного процессора (shell) под
Vim

Теперь вы можете разрешить запись файла:


и выйти из командного процессора, возвратившись в Vim


В конце вам нужно заставить Vim записать файл используя команду:


(файл до сих пор считается защищенным от записи, поэтому и нужно
использовать принудительную опцию (! ) для проведения
попытки записи.)

Примечание :

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

Сокращая прибывание в :shell сессии вы
избегаете большинства проблем.

Замена "Последний, Первый" на
"Первый Последний"

Имеется список имен в виде:


Как привести это к виду:


Осуществить это можно с помощью такой команды:


Двоеточие (: ) указывает Vim что выражение является
командой в стиле ex.

Диапазоном строк для этой команды является весь файл, что
задано диапазоном 1,$ .

s (замена) указывает Vim производить строчную
замену.

Старый текст представлен сложным регулярным выражением.
Ограничители \(. \) используются для указания
редактирору, что отмечает регулярное выражение, которое должно быть
интерпретировано специально.

Текст в первых \(. \) определен как \1
в заменяющем тексте. Второй участок текста внутри \(. \)
определен для \2 и так далее.

В данном случае первым регулярным выражением является любая
группа символов в которой нет запятой. [^,]
обозначает "что угодно кроме запятой", * определяет набор
(ноль или более символов).

Второе выражение подставляет что угодно: .* до
конца строки: $ .

Результатом этой подстановки в том, что первое слово в строке
определяется как \1 и второе как \2 .
Эти значения используются в конце команды для перестановки слова.

Схема, приведенная ниже, показывает отношение между строками
ограниченными маркерами \( \) и \1 ,
\2 .


Следующая схема раскрывает смысл различных частей регулярного
выражения в примере.


Как редактировать все файлы содержащие
заданное слово

Для этого потребуется fgrep и специальный консольный символ
обратного апостроф (` ).

Чтобы редактировать все файлы програм на C в которых есть
выражение уровень_отступа выполните команду:


fgrep -l уровень_отступа *.c ищет во всех файлах,
чье название закачивается на .c слово и выводит их список.

Так как эта команда находится между символами (` )
, ее результат (список файлов) помещается в командную строку.

Затем для этих файлов запускается редактор Vim. Далее для
перемещения между файлами могут быть использованы команды :n
и :rew .

Как редактировать все файлы
содержащие заданное слово используя встроенный grep


Будет найдено первое вхождение слово в данных файлах и установлен
курсор на данную строку. Вы можете использовать команду :cn
для поиска следующего вхождения.