Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Назад Просто о Vim Вперед

Vim : Множественность (Multiplicity)

Введение

В этой главе давайте посмотрим, как Vim поможет вам работать с разными частями файла, несколькими различными окнами ('windows') и различными закладками, помогающими добиться параллельной работы. Это важная часть управления и редактирования файлов.

Несколько разделов с использованием Складок (Folds)

Если вы редактируете большой документ, не будет ли намного проще, если вы сможете «закрыть" все ненужные в данный момент разделы и сфокусироваться только на одном?

Это то, что мы называем "folding" в Vim.

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

   Book I
   
       The Shadow of the Past
   
           Three Rings for the Elven-kings under the sky,
           Seven for the Dwarf-lords in their halls of stone,
           Nine for Mortal Men doomed to die,
           One for the Dark Lord on his dark throne
           In the Land of Mordor where the Shadows lie.
           One Ring to rule them all, One Ring to find them,
           One Ring to bring them all and in the darkness bind them
           In the Land of Mordor where the Shadows lie.
   
       Three is Company
   
           The Road goes ever on and on
           Down from the door where it began.
           Now far ahead the Road has gone,
           And I must follow, if I can,
           Pursuing it with weary feet,
           Until it joins some larger way,
           Where many paths and errands meet.
           And whither then? I cannot say.

Примечание: Этот текст был взят из WikiQuote

После набора этого текста выполните :set foldmethod=indent, установите курсор на текст, которому вы хотите задать отступ, нажмите zc и смотрите, как текст свернется. Нажмите zo для открытия свернутого текста.

Лично я предпочитаю использовать пробел для открытия и закрытия складок. Чтобы это работало, добавьте строку в ваш файл vimrc:

:nnoremap <space> za

Основные команды, которыми мы можем открывать и закрывать складки, это, соответственно, - zo и zc. Вы можете использовать za для переключения ('a'lternate) между открытием и закрытием складки. Вы можете сделать это еще проще, используя пробел в нормальном режиме, чтобы открыть и закрыть складку:

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

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

Множество буферов (Buffers)

Предположим, что вы хотите редактировать больше одного файла одновременно в Vim, что вам делать?

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

Давайте предположим, что вы имеете два файла, part1.txt и part2.txt:

part1.txt

   I have coined a phrase for myself - 'CUT to the G':
   
   1. Concentrate
   2. Understand
   3. Think
   4. Get Things Done

part2.txt

   Step 4 is eventually what gets you moving, but Steps 2 and 3 are equally
   important. As Abraham Lincoln once said "If I had eight hours to chop down a
   tree, I'd spend six hours sharpening my axe." And to get to this stage, you need
   to do Step 1 which boils down to one thing - It's all in the mind. That's why
   it's so hard.

Теперь запустим :e part1.txt и потом :e part2.txt. Обратите внимание, что у вас теперь есть второй файл, открытый для редактирования. Как же переключиться к первому файлу? В данном случае вы можете запустить :b 1 для переключения к буферу ('b'uffer) номер '1'. Вы можете также запустить :e part1.txt для открытия и отображения существующего буфера.

Вы можете просмотреть, какие буферы были загружены и, соответственно, какие файлы редактируются, запустив :buffers или, в короткой форме, :ls, что означает список ('l'i's't) буферов.

Буферы будут автоматически удалены, когда вы закроете Vim, поэтому вам не нужно делать ничего особенного, кроме как убедиться, что вы сохранили файлы. Однако, если вы действительно хотите удалить буфер, например, для освобождения памяти, вы можете использовать команду :bd 1 для удаления ('d'elete) буфера ('b'uffer) номер '1', и так далее.

Смотрите :help buffer-list для изучения всех команд работы с буфером.

Множество окон

Мы увидели, как редактировать несколько файлов одновременно, но что, если мы хотим видеть два разных файла одновременно. Например, вы хотите открыть две разных главы своей книги, так чтобы вы могли писать вторую главу в соответствии с формулировками/описанием, данным в первой главе. Или вы хотите копировать/ вставить некоторые части из первого файла во второй файл.

В предыдущем разделе мы использовали "view", чтобы редактировать несколько буферов. Vim называет эти "views" окнами. Это использование термина "window" не нужно путать с окнами десктопных приложений, которые обычно ассоциируются с самими приложениями. Для нас окна ('windows') - это представления ('views') разных файлов.

Давайте возьмем простые файлы part1.txt и part2.txt, которые мы использовали в последнем разделе. Сперва загрузим part1.txt, используя :e part1.txt. Теперь давайте откроем новый буфер, разделив окно с помощью команды :new. Теперь вам доступно обычное редактирование в новом буфере в новом окне, за исключением того, что вы не можете сохранить текст, поскольку вы не ассоциировали имя файла с буфером. Для того, чтобы вы могли сохранить отредактированное в буфере, используйте :w test.txt.

Как нам теперь переключиться между двумя окнами? Используйте ctrl-w <клавиша перемещения> для переключения между окнами. Перемещайтесь клавишами h,j,k,l или клавишами со стрелками (в этом примере, только клавиши вверх и вниз имеют смысл). Запомните, комбинация клавиш ctrl-w работает с окнами ('w'indows).

Вы можете нажать ctrl-w дважды, т.е. ctrl-w ctrl-w для циклического переключения между открытыми окнами.

Практическая ситуация, в которой применение нескольких окон полезно, - это когда вы хотите посмотреть две разные части одного и того же файла одновременно. Просто запустите :sp для создания разделенного ('sp'lit) окна, а затем вы можете пролистать каждое окно до нужного места и продолжить редактирование. Так как они оба "окна" одного буфера, изменения в одном окне будут немедленно отражены в другом окне. Вы также можете использовать ctrl-w s вместо :sp.

Для создания вертикального разделения, используйте :vsp или ctrl-w v. Для закрытия окна выполните :q, как обычно.

Теперь, когда мы увидели, как открывать и использовать несколько окон, давайте посмотрим, как дальше работать с дисплеем.

Предположим, у вас окно разделено на два, а вы хотите поменять окна местами, чтобы вы могли сконцентрировать свое зрение на нижней или верхней части экрана компьютера, в соответствии с вашими предпочтениями? Нажмите ctrl-w r для (ротации) "r'otate окон.

Вы хотите сделать текущее окно верхним? Нажмите ctrl-w K.

Хотите изменить размер окна, сделав его больше или меньше? Запустите :resize 10 для задания размера в 10 строк, и т.д.

Хотите сделать текущее окно максимального размера, что бы вы могли сосредоточиться на нем? Нажмите ctrl-w _. Думайте о подчеркивании, как признаке того, что другие окна должны быть как можно меньше.

Хотите выровнять ('equal') окна снова? Нажмите ctrl-w =.

Смотрите :help windows для большей информации о работе с окнами.

Множество закладок (Tabs)

Если вы используете Firefox, вы скорее всего уже использовали вкладки, которые позволяют открывать несколько веб-сайтов в одном окне Firefox, и вы можете переключаться между ними без головной боли, связанной с переключением между несколькими окнами. Так вот, вкладки работают аналогично и в Vim. Кроме того, что их называют закладками ("tab pages").


Запустите :tabnew для открытия новой закладки в новом буфере (аналогично :new). Как теперь переключиться между закладками? Нажмите gt для перейти ('g'o) к следующей закладке ('t'ab) и gT для перейти ('g'o) в противоположном направлении, т.е. на предыдущую закладку ('t'ab).

Лично я предпочитаю использовать комбинации alt-j и alt-k для тех же действий, аналогично клавишам с символами j и k, а также ctrl-w j и ctrl-w k для работы с окнами (разделенными по горизонтали). Для включения этих комбинаций, добавьте следующие строки в ваш vimrc файл:

" Shortcuts for moving between tabs.
"Alt-j to move to the tab to the left
noremap <A-j> gT
" Alt-k to move to the tab to the right
noremap <A-k> gt

Для закрытия ('c'lose) вкладки ('tab'), запустите :tabc или :q.

Вы даже, вместо этого, можете открыть текст в новом окне или в новой вкладке. Например, :help tabpage откроет подсказку в горизонтально разделенном окне. Для просмотра подсказки в новой вкладке используйте :tab help tabpage.

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

Смотри :help tabpage для подробной информации по закладкам и другим операциям, которые вы можете выполнить, таким как :tabdo для операции над каждой открытой закладкой, и изменения заглавия закладок (:help setting-guitablabel), и т.д.

Итоги

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

Внешние ссылки

http://en.wikiquote.org/wiki/The_Fellowship_of_the_Ring



Предыдущий раздел: Следующий раздел:
Углубленное редактирование Оглавление Управление персональной информацией