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

руководство Vim img-1

руководство Vim

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

Категория: Руководства

Описание

Использование текстового редактора 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 .

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

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

Текстовый редактор 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)

Как выйти из редактора Vi или Vim? Stack Overflow на русском

Добро пожаловать в Vim.

Прежде чем ввести команду, нажмите Esc. Чтобы потом подтвердить команду, нажмите Enter .

Esc переключает Vim в режим командной строки. Если в этом режиме нажать. то символ. появится в нижней части экрана. Это подтверждает, что вы сейчас именно вводите команду, а не редактируете файл.

У большинства команд есть укороченные версии. Необязательная часть дается в квадратных скобках: к[оманда] .

Команды, данные курсивом. подходят только для Vim (не реализованы в Vi).

Выйти безопасно (не срабатывает, если есть несохраненные изменения)

  • :q[uit] Выйти из текущего окна Vim. Если это окно — последнее, то выйти из Vim. Если в текущем буфере есть несохраненные изменения, команда не сработает.
  • :qa[ll] Закрыть все окна и выйти из Vim. Не сработает, если хотя бы в одном буфере есть несохраненные изменения.

Выйти с подтверждением (запрашивает подтверждение, если есть несохраненные изменения)

  • :conf[irm] q[uit] Закрыть все окна и выйти из Vim. Запрашивает подтверждение, если есть буферы с несохраненными изменениями.
  • :conf[irm] xa[ll] Сохранить все изменения, закрыть все окна и выйти из Vim. Запрашивает подтверждение, если какие–либо буферы не могут быть сохранены.

Записать (сохранить) изменения и выйти

  • :wq Записать текущий буфер в соответствующий ему файл (даже если изменений не было) и закрыть окно. :wqa[ll] для всех окон.
  • :wq! То же самое, но записывает даже файлы, отмеченные только для чтения (read-only). :wqa[ll]! для всех окон.
  • :x[it]. ZZ (но с некоторыми особенностями ). Сохранить файл только если в нем есть изменения и выйти, :xa[ll] для всех окон.

Отменить (и потерять) изменения и выйти

  • :q[uit]! ZQ Выйти без сохранения, в том числе когда есть изменения в видимых буферах. Не сработает, если изменения есть также и в скрытых буферах.
  • :qa[ll]!. :quita[ll][!] Выйти без сохранения, отменяя все изменения как в видимых, так и в скрытых буферах.

Нажмите Enter чтобы выполнить введенную команду.

Этот ответ все-таки не охватывает все возможные способы выйти из Vim. Полный список можно найти в документации Vim .

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

Vim также имеет встроенную документацию. Чтобы ее открыть: Esc :help Enter. Чтобы использовать русскоязычную встроенную документацию, необходимо включить русскую локализацию в настройках Vim .

Это перевод собственного ответа на EN.SO. При написании использовалась документация Vim и, в качестве ориентира и источника вдохновения, ответы других пользователей, особенно @dirvine.

Oсвоение консольного редактора vi & vim

Oсвоение консольного редактора vi & vim

Мое практическое освоение консольного редактора vi & vim. а то я только пользоваться могу редактором nano, что собственно неправильно (его то по умолчанию в системе нет и приходится ставить как пакет).

Чтобы задействовать все преимущества консольного редактора vi нужно в систему, в данном случае рассматриваю Ubuntu 12.04 .4 Server amd64 следует установить пакет:

$ sudo apt-get install vim -y

vim-nox — Vi IMproved — enhanced vi editor

$ sudo apt-get install vim-nox -y

По умолчанию во многих системах vi — Это псевдоним команды vim. В Ubuntu обе команды запускают vim. что перепроверить это, можно запустить команду alias. в моем случае вывод не указал ничего намекающего на работу редактора:

alias alert=’notify-send —urgency=low -i «$([ $? = 0 ] && echo terminal || echo error)» «$(history|tail -n1|sed -e ‘\»s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//’\»)»‘

alias egrep=’egrep —color=auto’

alias fgrep=’fgrep —color=auto’

alias grep=’grep —color=auto’

alias l=’ls -CF’

alias la=’ls -A’

alias ll=’ls -alF’

alias ls=’ls —color=auto’

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

$ vimtutor — уже прочитав всю информацию и опробовав все на практике станет более понятен материал моей заметке, кое что конечно же будет повторяться.

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

$ cp /etc/passwd /tmp

Далее я рассмотрю несколько основных способов запуска vi: (для выхода из редактора следует нажать: Shift +. и набрать в поле приглашения: q! — это укажет редактору выйти и не задавать каких либо вопросов.

Начать со строки номер 5

Начать редактирование с последней строки:

Начать с первой строки со слова ekzorchik :

$ vi +/ekzorchik /tmp/passwd

Восстановить файл после сбоя во время сессии:

если сбоя не было, то в консоли будет сообщение вида:

E305: No swap file found for /tmp/passwd

Press ENTER or type command to continue

и выбросит в консоль командной строки

Редактировать файл в режиме только для чтения:

переходим в режим редактирования (нажатие клавиши «i» ) и сразу же видим выделенное красным цветом предупреждающее сообщение

— INSERT — W10: Warning: Changing a readonly file

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

  • Сохранить файл до того, как выйти: — набрать :w
  • Выйти и сохранить изменения: — набрать :wq
  • Сохранить без сохранения: — :q!
  • Сохранить содержимое файла под другим именем: — :w /tmp/myfile.txt

сообщение в консоли редактора:

«/tmp/myfile.txt» [New] 26L, 1101C written

Сравниваю два файла, исходный и полученный — результат они одинаковы:

$ diff /tmp/passwd /tmp/myfile.txt

$ md5sum /tmp/passwd /tmp/myfile.txt

как видно md5sum файлов одинакова, просто у файла passwd есть теперь уже другое имя.

Редактор vi также позволяет одновременно выбрать несколько файлов для редактирования:

$ vi /tmp/passwd /tmp/myfile.txt

первым откроется файл /tmp/passwd. чтобы перейти к следующему, нужно набрать: «:n» ,чтобы сохранить изменения и перейти к следующему, нужно набрать: «:wn». чтобы отменить изменения и перейти к следующему файлу: «:n!»

Но мне кажется, что открывать несколько файлов удобнее разделяя экран vi:

$ vi /tmp/passwd /tmp/myfile.txt

:split /tmp/myfile.txt > используя клавишу Tab. можно указывать путь к файлам, как в обычном интерпретаторе команд bash

Чтобы перемещаться между таким разделением окон следует использовать сочетание: Ctrl + W и после нажать клавишу W. чтобы закрыть текущие окна, используем обычную команду выхода из vi (:q).

Теперь я расскажу, о способах навигации:

По началу вызывает некоторое непонимание при работе с редактором — это, то что в нем нельзя просто так сразу начать печатать. У vi есть множество режимов выполнения различных типов задач:

  • Первый режим Normal (обычный)— в этом режиме можно просматривать любое место в файле
  • Второй режим Insert (вставка) — нажатие клавиши «i» и после редактор готов принимать от нас уже команды, уведомление —INSERT — есть тому подтверждение:

— INSERT —

  • Второй режим также может именоваться как Replace (замена)

Чтобы из режима Insert или Replace попасть в режим Normal нужно просто нажать клавишу Esc (Escape) на клавиатуре, после того как завершили вставку или замену текста.

Существуют так называемые горячие клавиши

  • Горячие клавиши для навигации
  • Клавиши для изменения текста
  • Клавиши для удаления и вставки текста
  • Вспомогательные клавиши

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

В основе редактора vi лежит редактор под названием Ex. Некоторые команды vi. которые выше, я как пример приводил начинающиеся с точки с запятой и известны как Ex -команды. Для ввода таких команд следует перейти в режим Normal (обычный) и набрать двоеточие («:» ). Это позволит перейти в режим командной строки. В этом режиме можно использовать клавишу Tab для завершения команды или имени файла, а также клавиши управления курсором для навигации по журналу команд, как в интерпретаторе команд bash. Нажимая в конце команды Enter. переходим в режим Normal (обычный).

Ниже я приведу некоторые примеры Ex-команд :

:!bash — перейти в интерпретатор команд bash. Когда снова понадобиться редактор vi следует просто набрать exit

:!date — запустить команду date (или любую другую по своему усмотрению). Нажатие Enter приводит к возврату в редактор.

. — повторно запустить предыдущую команду

:20 — перейти к строке 20 в файле

:e file.txt — выйти из текущего файла и начать редактировать файл file.txt

:g/Blog Ekzorchik/p — просмотреть каждую строку в файле содержащую «Blog Ekzorchik»

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

В домашней директории можно обнаружить файл:

который регистрирует все введенные команды («Болтливый режим») используемые в режиме Insert и Replace.

Конечно моя заметка есть всего лишь маленькая крупица знаний которым я могу поделиться с Вами, лучшим помощником в получении качественной информации служит команда: «:help» — поэтому не пренебрегайте ею. Я же теперь при описании тех или иных задач выкладываемых на своем блоге буду вместо консольного редактора nano использовать мощь редактора vi.

Файлы справочника Vim. См. «:help doc-file-list» для

получения полного списка.

Файл меток, используемый для поиска информации в файлах

Системные настройки синтаксиса.

Файлы синтаксиса для разных языков.

Системные настройки Vim.

Системный настройки графического интерфейса.

Сценарий, используемый при выполнении команды

«:options». Хороший способ просматривать и изменять

Системные настройки меню для gvim.

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

Сценарий для определения типа файла по имени. См. «:help

Сценарий для определения типа файла по содержимому. См.

Файлы для печати PostScript.

Продолжаю знакомство с редактором vi. vim имеет множество настроек, влияющий на его поведение, к примеру:

подсветка кода в зависимости от типа загружаемого файла

Данную надстройку можно сделать, как для текущего пользователя (файл

/.vimrc ) так и для всей системы (/usr/share/vim/vimrc -> /etc/vim/vimrc )

filetype indent on

filetype plugin on

syntax on
нумерация строк

Результат открытия файл с отображением нумерации строк:

$ vimdiff /tmp/myfile.txt /tmp/passwd

Ниже скриншот, как работает данное сравнение:

Есть файл в котором нужно найти все встречающиеся слова и заменить на нужные

Задача: заменить wclient на W7X64 в открытом файле внутри редактора vi

service_description NSClient++ Version

После нажатия клавиши Enter информация выполнения покажет следующее

3 substitutions on 3 lines и просмотрев файл, результат достигнут. Все вхождения слова wclient заменены на нужное W7X64

Как видно даже из небольших примеров, возможности данного редактора впечатляют. Принцип утилит ы — действие, как можно заметить на 100% оправдывает свое обозначение. Все же в рамках одной заметке не возможно описать все способы, все команды да и зачем, обучающая программа уже дает тот минимум которые в последствии послужит неплохим шагом к пониманию чего-то большего. От себя хочу сказать, что на просторах интернета приведено множество подробных руководств которыми не стоит пренебрегать а возможно и можно почерпнуть некоторые дополнительные знания. Так что вперед. На этом всё, с уважением, ekzorchik автор блога www.ekzorchik.ru .

Добавить комментарий Отменить ответ

Редактор 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.

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

/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 !