vim учебник
Начало работы с vim
Поиск…
замечания
Vim (или «Vi IMproved») представляет собой консольный многомодовый ( модальный ) текстовый редактор. Он широко используется и доступен по умолчанию для всех систем Unix, Linux и Apple OS X. Vim имеет большое активное сообщество и широкую пользовательскую базу. Редактор поддерживает все популярные языки программирования, и многие плагины доступны для расширения своих возможностей.
Разработчики любят редактор за скорость, множество опций конфигурации и мощное редактирование на основе выражений. В режиме «команды» редактор управляется командами клавиатуры, поэтому пользователь не отвлекается на графический интерфейс или указатель мыши.
Vim основан на более раннем редакторе Unix «vi», созданном в семидесятых годах, и с 1991 года он постоянно развивается. С помощью макросов и плагинов редактор предлагает большинство функций современной среды разработки. Он также уникально способен обрабатывать большие объемы текста со своим языком сценариев (vimscript) и регулярными выражениями.
Главные темы:
- монтаж
- режимы редактирования
- навигация
- базовое редактирование
- расширенное редактирование
- конфигурация
- плагины
- vimscript
- макрос
- сообщество
- связанные проекты
Версии
Версия | Дата выхода |
---|---|
8,0 | 2016-09-12 |
7,4 | 2013-08-10 |
7,3 | 2010-08-15 |
7,2 | 2008-08-09 |
7,1 | 2007-05-12 |
7,0 | 2006-05-07 |
6,0 | 2001-09-26 |
5.0 | 1998-02-19 |
4,0 | 1996-05-29 |
3.0 | 1994-08-12 |
2,0 | 1993-12-14 |
1,14 | 1991-11-02 |
Монтаж
Vim на вашем компьютере, если он есть, скорее всего, будет «небольшой» сборкой, в которой отсутствуют полезные функции, такие как поддержка буфера обмена, подсветка синтаксиса или даже возможность использования плагинов.
Это не проблема, если все, что вам нужно, это быстрый способ редактировать файлы конфигурации, но вскоре вы нажмете на несколько стен, если вы намереваетесь сделать Vim своим главным редактором.
Поэтому, как правило, рекомендуется установить полную сборку.
Установка на Linux / BSD
В этих системах фокусом является просто установка версии GUI, которая поставляется с командой gvim
для запуска GUI и команды vim
для запуска TUI.
Архивные и архивные дистрибутивы
$ sudo pacman -R vim
$ sudo pacman -S gvim
Распределения Debian и Debian
$ sudo apt-get update
$ sudo apt-get install vim-gtk
Распределения Gentoo и Gentoo
$ sudo emerge --sync
$ sudo emerge app-editors/gvim
RedHat и RedHat-распределения
$ sudo yum check-update
$ sudo yum install vim-X11
мягкая фетровая шляпа
$ sudo dnf check-update
$ sudo dnf install vim-X11
Распределения Slackware и Slackware
$ sudo slackpkg update
$ sudo slackpkg install-new vim-gvim
Распределения OpenBSD и OpenBSD
$ sudo pkg_add vim-x11
Распределения FreeBSD и FreeBSD
$ sudo pkg install editors/vim
Установка в Mac OS X
Стратегия похожа на Mac OS X: мы устанавливаем версию GUI для получения графического интерфейса и TUI. В итоге мы должны уметь:
- дважды щелкните значок MacVim в Finder,
- нажмите на значок MacVim в Dock,
- выпустите
$ mvim
в оболочке, чтобы открыть графический интерфейс MacVim, - выпустите
$ mvim -v
в оболочке, чтобы открыть TUI MacVim.
Обычная установка
Загрузите и установите официальный снимок, как и с любым другим приложением Mac OS X.
Поместите сценарий mvim
который поставляется в комплекте с MacVim где-то в вашей $PATH
.
Менеджер пакетов
MacPorts:$ sudo port selfupdate
$ sudo port install macvim
Homebrew: $ brew install macvim
Чтобы сделать MacVim стандартной консолью Vim:
$ brew install macvim --with-override-system-vim
Установка в Windows
По умолчанию в системе Windows нет Vim. Вы можете загрузить и установить Vim с сайта Tuxproject для получения более актуальных и полных сборок или вы можете загрузить и установить Vim с официального сайта Vim .
шоколадным
> choco install vim
Строительство Vim из источника
Если вышеприведенные методы не соответствуют вашим потребностям, все же можно построить Vim самостоятельно, только с теми параметрами, которые вам нужны.
Эта тема будет обсуждаться в отдельном разделе (в настоящее время в проекте).
Выход из Vim
Чтобы выйти из Vim, сначала убедитесь, что вы находитесь в обычном режиме, нажав Esc .
-
:q
Ввод (будет препятствовать выходу из системы, если у вас есть несохраненные изменения - сокращение: quit)
Отменить изменения и выйти из Vim:
-
:q!
Enter, чтобы принудительно выйти и отменить изменения (сокращение для:quit!
Не путать с:!q
), -
ZQ
- это ярлык, который делает то же самое, что:q!
, -
:cq
Введите quit и return error (отмените все изменения, чтобы компилятор не перекомпилировал этот файл)
Чтобы сохранить изменения и выйти из Vim:
-
:wq
Enter (сокращенно:write
and:quit
), -
:x
Enter (то же, что и:wq
, но не будет писать, если файл не был изменен), -
ZZ
- это ярлык, который делает то же самое, что:x
(Сохранить рабочее пространство и выйти из редактора), -
:[range]wq!
Введите ( введите строки в [диапазон])
Чтобы закрыть несколько буферов одновременно (даже в нескольких окнах и / или вкладках), добавьте букву a
в любой из вышеперечисленных команд (те, которые начинаются с :
. Например, чтобы написать и закрыть все окна, вы можете использовать:
-
:wqa
Введите или -
:xa
Enter - записать все измененные буферы и выйти из Vim. Если существуют буферы без имени файла, которые являются readonly или которые не могут быть написаны по другой причине, Vim не уйдет -
:xa!
Enter - пишите все измененные буферы, даже те, которые только что читаются, и выйдите из Vim. Если есть буферы без имени файла или которые не могут быть написаны по другой причине, Vim не уйдет -
:qa
Enter - попробуйте выйти, но остановитесь, если есть несохраненные файлы; -
:qa!
Enter - выйти без сохранения (изменений откинуть несохраненные файлы)
Если вы открыли Vim без указания файла и хотите сохранить этот файл перед выходом, вы получите сообщение E32: No file name
. Вы можете сохранить файл и выйти из него, используя:
-
:wq filename
Ввод или; -
:x filename
Введите
Объяснение:
Действие : нажатие клавиши действительно открывает командный режим. Команда q
является аббревиатурой quit
, w
, write
и x
, exit
(вы также можете ввести :quit
:write
и :exit
если хотите). Ярлыки, не начинающиеся с :
например ZZ
и ZQ
относятся к сопоставлениям в режиме нормального режима. Вы можете рассматривать их как ярлыки.
!
нажатие клавиши иногда используется в конце команды для принудительного ее выполнения, что позволяет отменить изменения в случае :q!
, Размещение !
в начале команды имеет другое значение. Например, можно ошибаться :!q
вместо :q!
и vim закончил бы с ошибкой 127.
Легкий способ запомнить это - думать !
как способ настаивать на выполнении чего-то. Также, когда вы пишете: «Я хочу бросить курить!»
Интерактивные учебники Vim (например, vimtutor)
vimtutor
- интерактивное учебное пособие, охватывающее самые основные аспекты редактирования текста.
В UNIX-подобной системе вы можете запустить учебник с помощью:
$ vimtutor
В Windows «Vim tutor» можно найти в каталоге «Vim 7.x» в разделе «Все программы» в меню Windows.
Смотрите :help vimtutor
для получения дополнительной информации.
Другие интерактивные руководства включают эти браузерные:
- Vim Adventures - интерактивная версия игры vimtutor, доступная в Интернете. Только первые несколько уровней бесплатны.
- Open Vim - интерактивный терминал, который учит вас основным командам с обратной связью.
- Vim Genius - еще один интерактивный терминал, который также включает в себя промежуточные и продвинутые уроки, включая макросы и arglist.
Сохранение файла только для чтения, отредактированного в Vim
Иногда мы можем открыть файл, который у нас нет разрешения на запись в Vim без использования sudo
.
Используйте эту команду, чтобы сохранить файл только для чтения, отредактированный в Vim.
:w !sudo tee > /dev/null %
Которое можно было бы сопоставить с :w!!
в вашем .vimrc
:
cmap w!! w !sudo tee > /dev/null %
Вам будет предложено ввести подсказку, как показано на рисунке.
Нажмите O
и файл будет сохранен. Он остается открытым в vi / vim для большего редактирования или чтения, и вы можете нормально выйти, набрав :q!
поскольку файл по-прежнему открыт как доступный только для чтения.
Объяснение команды
:w ............................ isn't modifying your file in this case,
............................ but sends the current buffer contents to
............................ a substituted shell command
!sudo ...................... call the shell 'sudo' command
tee .................. the output of the vi/vim write command is redirected
using the 'tee' command
> /dev/null ...... throws away the standard output, since we don't need
to pass it to other commands
% .... expands to the path of the current file
Источники:
Приостановить vim
При использовании vim
из командной строки вы можете приостановить vim
и вернуться к своей подсказке, не покидая vim
. Следовательно, вы позже сможете вернуть сеанс vim
из того же приглашения.
Если в нормальном режиме (если нет, нажмите esc, чтобы попасть туда), выполните одну из следующих команд:
:st
enter
:sus
введите
:stop
ввод
:suspend
ввод
Альтернативно, в некоторых системах, когда в обычном или визуальном режиме выдача Ctrl + Z будет иметь тот же эффект.
Примечание. Если autowrite
будут autowrite
буферы с изменениями и именами файлов. Добавьте !
перед тем, как войти, чтобы избежать, например. :st!
введите .
Позже, когда вы захотите вернуться на сеанс vim
, если вы не приостановили какие-либо другие задания, выдача следующего будет восстанавливать vim в качестве задания переднего плана.
fg
enter
В противном случае вам нужно будет найти ваши vim
сессий это работа ID путем выдачи jobs
ввода и затем выдвижение на первый план согласующего рабочих мест fg %[job ID]
введите например. fg %1
введите .
основы
Запускайте интерактивные обучающие программы vim столько раз, сколько необходимо, чтобы чувствовать себя комфортно с основами.
Vim имеет несколько режимов, например, обычный режим , режим вставки и режим командной строки .
Обычный режим предназначен для редактирования и навигации по тексту. В этом режиме h
, j
, k
и l
соответствуют клавишам курсора ←
, ↓
, ↑
и →
. Большинство команд в нормальном режиме могут иметь префикс «счет», например, 3j
перемещается вниз по 3 линиям.
Режим вставки предназначен для непосредственного вставки текста, в этом режиме vim аналогичен другим более простым текстовым редакторам. Для входа в режим вставки нажмите i
в нормальном режиме. Чтобы оставить его, нажмите клавишу <ESC>
(клавиша эвакуации).
Режим командной строки предназначен для запуска более сложных команд, таких как сохранение файла и выход из vim. Нажмите :
для запуска режима командной строки. Чтобы выйти из этого режима, вы также можете нажать <ESC>
. Чтобы сохранить изменения в файле, используйте :w
(или :write
). Для выхода из vim без сохранения изменений используйте :q!
(или :quit!
).
Вот некоторые из наиболее полезных команд в vim:
команда | Описание |
---|---|
i | (вставка) переходит в режим вставки до текущей позиции курсора |
I | переходит в режим вставки до первого печатаемого символа текущей строки |
a | (append) переходит в режим вставки после текущей позиции курсора |
A | переходит в режим вставки после последнего печатного символа текущей строки |
x | удалить символ в текущей позиции курсора |
X | удалить символ слева до текущей позиции курсора |
w | перейти к следующему слову |
b | перейти к предыдущему слову |
0 | перейти к началу строки |
$ | переместиться в конец строки |
r | replace - вводит режим замены для одного символа. Следующий символ, который вы вводите, заменит символ под курсором. |
R | входит в режим замены неограниченно. Каждый вводимый вами персонаж заменяет символ под курсором и продвигает курсор на один. |
s | substitute - удаляет символ в текущей позиции курсора, а затем переходит в режим вставки |
S | удалите текущую строку, в которой находится текущий курсор, и введите режим вставки |
<Esc> , <Cc> | выйдите из режима вставки и вернитесь в нормальный режим |
u | расстегивать |
<Cr> | переделывать |
dd , dw , dl , d$ | отредактируйте текущую строку, от курсора до следующего слова или символ, текущую позицию до конца текущей строки соответственно, обратите внимание: D является эквивалентом d$ |
cc , cw , cl | измените текущую строку, от курсора до следующего слова или символ, соответственно |
yy , yw , yl , y$ | yank («копировать») текущую строку, от курсора до следующего слова или символ, текущую позицию до конца текущей строки соответственно |
p , P | put ("paste") после или перед текущей позицией соответственно |
o , O | создать новую пустую строку, после или до текущей, и ввести режим вставки |
:w | записать текущий буфер на диск |
:q! , ZQ | бросить |
:x :wq , ZZ | писать и оставлять |
:help | открыть окно с помощью файла справки |
:help {subject} | показать справку по конкретному предмету |
qz | начните записывать действия для регистрации z , q до конца записи, @z чтобы воспроизвести действия. z может быть любой буквой: q часто используется для удобства. Подробнее: Макросы |
Что делать в случае аварии
Vim сохраняет все несохраненные изменения в файле подкачки , дополнительный файл, который удаляется после внесения изменений путем сохранения. Имя файла подкачки обычно является именем редактируемого файла, которому предшествует a .
и с суффиксом .swp
(вы можете увидеть его с помощью :sw
).
Поэтому, если ваш процесс vim завершится до того, как у вас будет возможность сохранить свои изменения, вы можете восстановить свою работу, применив изменения, содержащиеся в файле подкачки, к текущему файлу с помощью параметра командной строки -r
. Например, если myFile
- это файл, который вы редактировали, используйте:
$ vi -r myFile
для восстановления незафиксированных изменений.
Если файл подкачки существует, vim должен запросить вас в любом случае для вариантов восстановления
$ vi myFile
E325: ATTENTION
Found a swap file by the name ".myFile.swp"
...
Swap file ".myFile.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
Если вы выберете (R) ecover, будут применены изменения из swp
файла, но файл подкачки не будет удален, поэтому не забудьте впоследствии удалить файл подкачки, если вы удовлетворены восстановлением.