| Server IP : 178.105.222.151 / Your IP : 216.73.216.38 Web Server : nginx/1.28.3 System : Linux MNK 7.0.0-15-generic #15-Ubuntu SMP PREEMPT_DYNAMIC Wed Apr 22 16:06:43 UTC 2026 x86_64 User : www-data ( 33) PHP Version : 8.5.4 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /usr/share/vim/vim91/tutor/ |
Upload File : |
===============================================================================
версия 1.7 = ДОБРО ПОЖАЛОВАТЬ НА ЗАНЯТИЯ ПО РЕДАКТОРУ Vim =
===============================================================================
= ГЛАВА ВТОРАЯ =
===============================================================================
Что‐то неожиданное и непонятное?
Если это ваше первое знакомство с редактором Vim и вы планировали начать
с вводной главы учебника, не расстраивайтесь и сделайте вот что.
Наберите на клавиатуре команду :q! , нажмите клавишу <ENTER>, и попробуйте
ещё раз, набрав в командной оболочке такую команду
vimtutor --chapter 1 ru
Приблизительное время, необходимое для изучения второй главы учебника,
составляет около 8–10 минут, и зависит от того, сколько времени вы посвятите
выполнению заданий.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Урок 2.1.1. ОСВОЕНИЕ ТЕКСТОВЫХ ОБЪЕКТОВ
** Точечные операции с логическими частями текста используя текстовые объекты **
1. Попрактикуйтесь в аккуратной работе со словами:
- Поместите каретку на любое слово в строке помеченной --->
- Наберите diw , чтобы удалить ТОЛЬКО слово (слово без окружающих пробелов)
- Наберите daw , чтобы удалить СЛОВО (включая конечные пробелы)
- Попробуйте другие операторы: ciw (изменить), yiw (копировать),
gqiw (форматировать)
---> Потренируйтесь здесь на словах: «Vim'овский», (text_object) и 'мощный'.
2. Работа с содержимым скобок:
- Поместите каретку внутри любой пары () {} [] <> в строке помеченной --->
- Наберите di( или dib (удалить всё, что внутри круглых скобок)
- Наберите da( или dab (удалить внутри круглых скобок и сами скобки)
- Попробуйте то же самое с i" и a" для машинописных кавычек или
it и at для тегов HTML и XML.
---> Примеры: {фигурные}, [прямоугольные], <угловые>, (круглые) и "quoted".
3. Операции с абзацами и предложениями:
- Наберите dip для удаления ТОЛЬКО абзаца
(каретка может быть в любом месте абзаца)
- Наберите vap для визуального выделения всего абзаца
- Попробуйте das для удаления предложения
(работает при наличии знаков препинания .!? )
4. Расширенные комбинации:
- ciwnew<ESC> — изменить текущее слово на «new»
- ciw"<CTRL-R>-"<ESC> — обернуть всю строку в кавычки
- gUit — преобразовать внутреннее содержимое HTML-тега в верхний
регистр
- va"p — выделить текст в кавычках и вставить поверх него
---> Итоговое задание: (Измените "этот" текст) [применив {различные} операции]<
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Урок 2.1.2. ИМЕНОВАННЫЕ РЕГИСТРЫ В РЕДАКТОРЕ Vim
** Копирование с сохранением двух разных слов и последующая их вставка в текст **
1. Переместите каретку к строке помеченной --->
2. Установите каретку на любом символе слова «Эдуард» и наберите команду
"ayiw
Эта команда означает следующее:
в регистр(") с названием(a) скопировать(y) только(i) слово(w)
3. Сдвиньте каретку вперёд на слово «печенье» (это можно сделать одним из
следующих способов: fп или 3fч, или $, или /пе <ENTER>) и наберите команду
"byiw
4. Переместите каретку на любой символ слова «Виктор» и наберите на клавиатуре
ciw<CTRL-R>a<ESC>
Эта команда означает следующее:
изменить(c) только(i) слово(w) на <содержимое регистра(r)> с названием(a)
5. Установите каретку на любой символ слова «тортов» и наберите
ciw<CTRL-R>b<ESC>
---> а) Отныне Эдуард будет отвечать за раздачу печенья
б) Таким образом Виктор имеет единоличные права по распределению тортов
Примечание.
Регистры можно использовать также и для вырезания текста, например,
по команде "sdiw будет выполнено удаление слова под кареткой в регистр
с названием «s».
Разделы документации:
регистры :h registers
именованные регистры :h quote_alpha
перемещение :h text-objects
CTRL-R :h i_CTRL-R
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Урок 2.1.3. РЕГИСТР РЕЗУЛЬТАТА ВЫЧИСЛЕНИЙ
** Вставка результатов вычислений напрямую в текст **
1. Переместите каретку к строке помеченной --->
2. Установите каретку на любой цифре приведённого числа
3. Наберите на клавиатуре ciw<CTRL-R>=60*60*24<ENTER>
4. Переместите каретку в конец следующей строки, переключите редактор в режим
вставки, и добавьте сегодняшнюю дату с помощью следующей команды
<CTRL-R>=system('date')<ENTER>
Примечание.
Результат вызова функции system() зависит от текущей операционной системы,
например, в ОС Windows необходимо использовать такую команду
system('date /t') или :r!date /t
---> Правильно ли я помню, что в сутках 84600 секунд?
Сегодняшняя дата
Примечание.
Тот же результат можно получить с помощью такой команды :pu=system('date')
или более короткой команды :r!date
Разделы документации:
регистр результата вычислений :h quote=
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Урок 2.1.4. НУМЕРОВАННЫЕ РЕГИСТРЫ В РЕДАКТОРЕ Vim
** Как команды yy и dd влияют на содержимое регистров **
1. Переместите каретку к строке помеченной --->
2. Скопируйте эту строку и проверьте состояние регистров с помощью команды
:reg<ENTER>
3. Удалите строку, начинающуюся с цифры 0, с помощью команды "cdd и ещё раз
проверьте состояние регистров (где будет строка, начинающаяся с цифры 0?)
4. Продолжайте удалять все последующие нумерованные строки, проверяя состояние
регистров после каждой операции.
Примечание.
В ходе этих действий вы заметите, что ранее удалённые строки смещаются вниз
по мере того, как новые удалённые строки добавляются в перечень регистров.
5. Теперь вставьте содержимое регистров в следующем порядке: c, 7, 4, 8, 2.
То есть наберите команды "cp , "7p и так далее.
---> 0. Здесь
9. шататься
8. секретное
7. будет
6. на
5. шесте
4. это
3. войны
2. послание
1. наградой
Примечание.
Целые строки, удалённые по команде dd , дольше сохраняются в нумерованных
регистрах, чем строки, которые были скопированы или когда с оператором
удаления указывается объект текста для перемещения каретки.
Разделы документации:
нумерованные регистры :h quote_number
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Урок 2.1.5. СПЕЦИАЛЬНЫЕ РЕГИСТРЫ
** Применение регистров буфера обмена и «чёрная дыра» для расширенной правки **
Примечание.
Для использования системного буфера обмена в системе Linux требуются
библиотеки X11 или Wayland, и сам редактор Vim должен быть скомпилирован
с включённым компонентом «+clipboard» (обычно это максимальная версия).
Это можно проверить с помощью следующих команд редактора Vim:
:version
и
:echo has('clipboard_working')
1. Регистры буфера обмена + и * :
- "+y — копирование в системный буфер обмена
(например, по команде "+yy будет скопирована текущая строка)
- "+p — вставка из системного буфера обмена
- "* — основной выбор в X11 (средняя кнопка «мыши»), а "+ — буфер обмена
---> "+yy в этой строке, затем вставьте в другое приложение по Ctrl+V или Cmd+V
2. Регистр «чёрная дыра» _ стирает текст:
- "_daw — сотрёт слово без сохранения в регистре
- Полезно, когда вы не хотите перезаписывать регистр по умолчанию "
- Обратите внимание, что здесь используется текстовый объект «a Word»,
описанный в предыдущем уроке
- "_dd — сотрёт строку без сохранения
- "_dap — сотрёт абзац без сохранения
- Комбинируйте со счётчиками: 3"_dw
---> "_diw на любом слове, чтобы удалить его, не затрагивая историю копирования
3. Совместите с визуальным выделением:
- Выделите текст с помощью <SHIFT-V>, a затем "+y
- Чтобы вставить из буфера обмена в режиме вставки — <CTRL-R> +
- Попробуйте открыть другое приложение и вставить из системного буфера обмена
4. Запомните:
- Регистры буфера обмена доступны между разными экземплярами редактора Vim
- Регистр буфера обмена не всегда работает
- Регистр «чёрная дыра» предотвращает случайную перезапись других регистров
- Регистр по умолчанию " по-прежнему доступен для копирования и вставки
- Именованные регистры (a-z) остаются частными для каждой сессии Vim
5. Устранение неполадок с буфером обмена:
- Проверьте доступность с помощью команды :echo has('clipboard_working')
- При выводе 1 — означает доступно, 0 — означает, что компонент не включен
- В системе Linux может потребоваться пакет vim-gtk или vim-x11
(посмотрите вывод команды :version)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Урок 2.1.6. ИЗЯЩЕСТВО ЗАКЛАДОК
** Избегайте действий, свойственных для дятлокодеров **
Примечание.
При написании программ часто возникает необходимость перемещения больших
фрагментов кода. Приём, приведённый далее, поможет избежать подсчёта номеров
строк, требуемых для операций вроде "a147d или :945,1091d a , или даже
хуже — i<CTRL-R>=1091-935<ENTER> , как первое действие.
1. Переместите каретку к строке помеченной --->
2. Установите каретку на следующую строку, где начинается описание функции,
и поставьте закладку, воспользовавшись командой ma
Примечание.
Неважно где будет находиться каретка в этой строке.
3. С помощью следующей команды $% установите каретку на последний символ
в этой строке с последующим перемещением на окончание блока кода
4. Удалите весь это блок кода в регистр с названием «a» с помощью команды
"ad'a
Эта команда означает следующее:
в регистр(") с названием (a) поместить удалённые строки от позиции каретки
до строки, в которой установлена закладка(') с названием (a)
5. Вставьте удалённый блок между символами BBB и CCC с помощь команды
"ap
---> AAA
function itGotRealBigRealFast() {
if ( somethingIsTrue ) {
doIt()
}
// таксономия нашей функции изменилась, и её текущее положение больше
// не имеет привязки к алфавитному порядку
// а теперь представьте, что здесь сотни строк кода
// было бы глупо искать начальную и конечную строку этого блока кода,
// чтобы записывать или запоминать номер строки для каждой из них
}
BBB
CCC
Примечание.
Пространство именования закладок и регистров не пересекаются между собой,
поэтому регистр «a» полностью независим от закладки с таким же названием «a».
Это правило не распространяется на регистры и макросы.
Разделы документации:
закладки :h marks
перемещение к закладкам :h mark-motions (различие между ` и ')
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Резюме урока 2.1
1. Текстовые объекты обеспечивают точное редактирование:
- iw или aw — только или включая слово
- i[ или a[ — внутри или включая скобки
- i" или a" — внутри или включая кавычки
- it или at — внутри или включая теги
- ip или ap — только или включая абзаца
- is или as — только или включая предложения
2. Чтобы сохранить (при удалении или копировании) текст для последующей
вставки, используйте имеющиеся 26 именованных регистра (a-z).
3. Чтобы скопировать целое слово при нахождении каретки на любом символе
в этом слове, воспользуйтесь командой yiw
4. Чтобы изменить целое слово при нахождении каретки на любом символе в этом
слове, воспользуйтесь командой ciw
5. Чтобы в режиме вставки вставить текст непосредственно из регистра,
воспользуйтесь командой <CTRL-R>a
6. Чтобы в режиме вставки вставить результат вычисления простых математических
операций, воспользуйтесь командой <CTRL-R>=60*60<ENTER>
7. Чтобы в режиме вставки вставить результат выполнения команд системы,
воспользуйтесь командой <CTRL-R>=system('ls -l')<ENTER>
8. Чтобы просмотреть содержимое регистров, воспользуйтесь командой :reg
9. Учитывайте распределение удалённых целиком строк по команде dd — это
нумерованные регистры в порядке убывания, т. е. от 1 до 9.
Помните, что в нумерованных регистрах дольше хранятся те строки, которые
были удалены целиком, в отличие от любых других операций
10. Учитывайте, что в нумерованных регистрах кратковременно сохраняется всё
что скопировано.
11. Чтобы установить закладку в режиме команд, воспользуйтесь командой
m[a-zA-Z0-9]
12. Чтобы переместить каретку на строку в которой установлена закладка,
воспользуйтесь командой '
13. Специальные регистры:
- "+ и "* — системный буфер обмена (зависит от ОС)
- "_ — «чёрная дыра» (стирание удалённого или скопированного текста)
- "= — регистр результата вычислений
- "- — регистр малых удалений
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
На этом пока заканчивается вторая глава учебника по редактору Vim.
Работа над этой главой будет продолжена.
Вторая глава учебника была написана Полом Д. Паркером (Paul D. Parker)
и Кристианом Брабандт (Christian Brabandt).
Restorer, перевод на русский язык, 2025, restorer@mail2k.ru
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~