File: tutor2.ru

package info (click to toggle)
vim 2%3A9.1.2103-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 93,456 kB
  • sloc: ansic: 433,730; cpp: 6,399; makefile: 4,597; sh: 2,397; java: 2,312; xml: 2,099; python: 1,595; perl: 1,419; awk: 730; lisp: 501; cs: 458; objc: 369; sed: 8; csh: 6; haskell: 1
file content (338 lines) | stat: -rw-r--r-- 21,555 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
===============================================================================
версия 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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~