diff --git a/content/Index.rst b/content/Index.rst new file mode 100644 index 0000000..209e012 --- /dev/null +++ b/content/Index.rst @@ -0,0 +1,541 @@ +********* +**План:** +********* + + +Введение + +**1. Отличия от «обычных» текстовых редакторов** +-------------------------------------------------------- + +**2. Функциональность** +--------------------------------- + + + 2.1 Обзор: избранные улучшения vi + + 2.2 Справочная система Vim+ + +**3. Терминология** +---------------------------- + +**4. Режимы работы** +------------------------- + + + 4.1 Нормальный режим + + + 4.2 Режим непосредственной вставки текста + + + 4.3 Режим командной строки + + + 4.4 Визуальный режим + +**5. Автоматизация операций** +---------------------------------- + +**6. Портируемость** +------------------------------ + +**7. Награды** +----------------------------- + +**8. Лицензия** +------------------------ + +**9. Расширения Vim** +------------------------------ + + +**Введение** +================ + +Vim (сокр. от Vi Improved, произносится «вим») — свободный режимный текстовый редактор, созданный на основе более старого vi. Ныне это один из мощнейших текстовых редакторов с полной свободой настройки и автоматизации, и созданным благодаря этому расширениям, и надстройкам. + +Пользовательский интерфейс Vim’а может работать в чистом текстовом (консольном) режиме. + +Существует и модификация для использования в графическом оконном интерфейсе — GVim. Многие пользовательские команды в GVim могут вызываться через соответствующие пункты меню. + + + +**1. Отличия от «обычных» текстовых редакторов** +====================================================== + + +Одна из главных особенностей редактора — применение двух основных, вручную переключаемых, режимов ввода: командного (после запуска редактор находится в нём) и текстового (режим непосредственного редактирования текста, аналогичный большинству «обычных» редакторов). + + +Vim не совсем интуитивен, так что эффективная работа с редактором требует предварительного обучения. + + +**2. Функциональность** +========================== + +**2.1. Обзор: избранные улучшения vi** +++++++++++++++++++++++++++++++++++++++++++ + +В сравнении с классическим vi Vim отличается следующими улучшениями: + +* Работа со многими файлами одновременно. Разбиение окон редактирования может производиться многократно как по горизонтали, так и по вертикали. + +* Поддержка Unicode. + ++ Поддержка визуального режима, который позволяет, например, выполнять операции над блоками текста. + ++ Неограниченная глубина отмены (undo) и возврата (redo) действий. + ++ Режим сравнения двух файлов, копирование изменений из одного файла в другой. + ++ Широкая файловая поддержка (файл со справкой и более 200 файлов с описанием синтаксиса). + ++ Подсветка синтаксиса, автоматическое определение величины отступа для каждой строки в зависимости от языка программирования (изначально поддерживает более 200 языков программирования и форматов конфигурационных файлов). + ++ Интеграция с операционной системой, дающая возможности, близкие к интегрированным средам разработки, такие как поиск ошибки по сообщению компилятора, автодополнение идентификаторов и др. + ++ Поддержка языка сценариев; возможность написания модулей расширения — плагинов. + ++ Автоматическое продолжение команд, слов, строк целиком и имён файлов. + ++ Автоматический вызов внешних команд (например, автоматическая распаковка файла перед редактированием). + ++ Распознавание и преобразование файлов различных форматов. + ++ Удобный механизм истории команд, поисковых слов и т. д. + ++ Запись и исполнение макросов. + ++ Возможность сохранения настроек и сеанса. + ++ Возможна интеграция с языками программирования Perl, Tcl, Python и Ruby. + ++ Поддержка языков с письмом справа налево (арабских и других). + ++ Сворачивание (folding) текста для лучшего обзора. + ++ Возможно использование графического интерфейса в специальных версиях (GTK, Motif, …). + ++ Хорошо конфигурируется и настраивается под нужды пользователя. + ++ Для программистов: поддержка цикла разработки «редактирование — компиляция — исправление» программ. Автоматическое выполнение сборки/компиляции, обнаружение и распознавание ошибок, переход к строкам ошибок в тексте программы. + ++ Для поклонников vi: практически стопроцентная совместимость с vi. + ++ В редакторе Vim удалось объединить все наиболее значимые усовершенствования vi. + +**2.2. Справочная система Vim** +++++++++++++++++++++++++++++++++++++ + +Vim имеет достаточно удобную и подробную справочную систему, и систему навигации и перехода между её разделами. Чтобы открыть любой её раздел достаточно воспользоваться командой :help в командном режиме. + +Например, чтобы узнать, как написать собственный плагин для Vim достаточно набрать :help write-plugin. + + + + +**3. Терминология** +====================== + +буфер + +окно + +именованный регистр + +регистр по умолчанию + +вкладки («табы», «tabs») + +аббревиатуры + +keymap + + + +**4. Режимы работы** +======================== + +**4.1. Нормальный режим** ++++++++++++++++++++++++++++ + +.. role:: red + +По умолчанию Vim начинает свою работу в нормальном режиме, который иногда также называют командным. Нажатие клавиш в этом режиме воспринимается как команды, такие, например, как скопировать, удалить или переместить текст. + +Команды бывают «односимвольные», так, например, нажатие **$** приведёт к перемещению курсора в конец строки, нажатие клавиши **0** — в начало, ** D** (в верхнем регистре) — к удалению (delete) части текущей строки от текущего положения курсора до конца, **С** (в верхнем регистре) — замене (change) части текущей строки от текущего положения курсора до конца и т. д. + +Некоторые команды для своей работы будут ждать дальнейшего продолжения ввода, например, ** f c ** — быстрое перемещение курсора к следующему символу c в строке, после нажатия ** f** Vim будет ждать набора следующего символа, чтобы использовать его в качестве искомого (с). + +После нажатия ** y ** (yank), ** d , c ** и других подобных «управляющих» клавиш Vim будет ожидать дальнейшего ввода команд, задающих объект, над которым будет произведено действие (копирование, удаление или замены соответственно). Так, ** d a w ** удалит текущее слово под курсором (delete ambient word), а ** d $ ** — все символы начиная с текущего положения курсора и заканчивая концом строки. + +Подобные очень простые команды используются не только в «ручном режиме» (когда при необходимости набираются всякий раз с клавиатуры), но и используются при задании сложных последовательностей действий. + +Нормальный режим — это центральный режим, из этого режима осуществляется переход во все остальные режимы. Из любого режима в командный режим можно перейти, дважды нажав клавишу **Esc** (в большинстве случаев достаточно одного нажатия). + + + + + + +**4.2. Режим непосредственной вставки текста** ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Для перехода из командного режима в режим вставки нужно нажать i . В этом режиме Vim работает так же как и большинство «обычных» текстовых редакторов. Набранные символы не воспринимаются как команды, а вставляются в существующий текст. + +Для вставки, удаления, изменения, автодополнения текста также могут использоваться клавиатурные сочетания ( **Ctrl + R ** и др.) Для возврата в нормальный режим следует нажать ** Esc .** + +**4.3. Режим командной строки** ++++++++++++++++++++++++++++++++ + +Этот режим вызывается нажатием : из нормального режима. За двоеточием следует сложная команда, например такая как поиск или замена, после ввода которой она передаётся на исполнение нажатием ** ↵ Enter .** После того как команда выполнена, редактор возвращается в нормальный режим. К этому режиму также относятся команды / (поиск вперёд по тексту), ? (поиск назад по тексту) и команда-фильтр ! (передача данных внешнему фильтру) + +**4.4. Визуальный режим** +++++++++++++++++++++++++++ + +Визуальный режим отсутствовал в Vi и впервые появился в Vim. Этот режим чем-то напоминает командный. С помощью специальных управляющих команд в сочетании со стрелками и командами навигации можно посимвольно, построчно или в виде блока выделить область текста. Затем к выделенной области можно применять команды нормального режима. Редактирование в этом режиме проще в сравнении с нормальным режимом, потому что чётко видно, к какому блоку текста будет применяться вызванная команда редактирования. + + + + +**5. Автоматизация операций** +================================ + +Способность Vim различать текстовые объекты (слова, предложения, параграфы, строки, отдельные символы и т. д.) позволяет задавать последовательность действий для автоматизации определённых операций. + +Например, после команды + +nmap byei<ea>0> + +нажатие ** F7 ** преобразует любое слово под курсором (вне зависимости от его длины и символов из которых он состоит) в xml-тег. Например, если текущее слово под курсором div то оно будет преобразовано в
, если transform, то и т. д. + +Vim способен на гораздо более сложные преобразования, можно задать и свои собственные функции для преобразования данных и автоматизации рутинных операций. + +Все действия, которые осуществимы в Vim «вручную» (то есть непосредственно человеком с клавиатуры) могут быть автоматизированны (включая переключение между различными режимами). + + + +**6. Портируемость** +====================== + +Одно из достоинств редактора Vim — доступность для множества операционных систем. + +Это достоинство для всех пользователей, но оно имеет особое значение для системных администраторов, которым приходится редактировать файлы на разных платформах. + +Vim работает на следующих операционных системах: + +AmigaOS + +Atari MiNT + +BeOS + +DOS + +Mac OS + +NextStep + +OS/2, OSF + +RISC OS + +BSD + +Linux + +SGI + +Unix (IBM AIX, HP-UX, SGI IRIX, Sun Solaris и другие) + +VMS + +Win16 (Microsoft Windows 3.x), Win32 (Windows 4.x и Windows NT) + + + +.. list-table:: + :header-rows: 1 + :widths: 15 50 + + * - **Mode** + - Feature + + * - Command + - By default, vi starts in Command mode. + + Each key is an editor command. + + Keyboard strokes are interpreted as commands that can modify file contents. + + * - **Insert** + + - Type i to switch to Insert mode from Command mode. + + Insert mode is used to enter (insert) text into a file. + + Insert mode is indicated by an **“? INSERT ?”** indicator at the bottom of the screen. + + Press **Esc** to exit Insert mode and return to Command mode. + + * - **Line** + + - Type : to switch to the Line mode from Command mode. + Each key is an external command, including operations + such as writing the file contents to disk or exiting. + + Uses line editing commands inherited from older line editors. + Most of these commands are actually no longer used. + Some line editing commands are very powerful. + + Press **Esc** to exit Line mode and return to Command mode. + + + + + + + + + + + +**Работа с файлами** +========================= + + +.. list-table:: + :header-rows: 0 + :widths: 20 50 + + * - vi myfile + + - Start the vi editor and edit the **myfile** file + + * - vi -r myfile + + - Start vi and edit **myfile** in recovery mode from a system crash + + * - :r file2 + - Read in file2 and insert at current position + + * - :w + - Write to the file + + * - :w myfile + - Write out the file to **myfile** + + * - :w! file2 + - Overwrite **file2** + + * - \:x or \:wq + - Exit vi and write out modified file + + * - :q + - Quit vi + + * - :q! + - Quit vi even though modifications have not been saved + + + + + + +**Изменение Положения Курсора** +===================================== + +.. list-table:: + :widths: 20 50 + + * - arrow keys + - To move up, down, left and right + * - j or + - To move one line down + + * - k + - To move one line up + + * - h or Backspace + - To move one character left + + * - 0 + - To move to beginning of line + + * - $ + - To move to end of line + + * - w + - To move to beginning of next word + + * - :0 or 1G + - To move to beginning of file + + * - :n or nG + - To move to line n + + * - :$ or G + - To move to last line in file + + * - CTRL-F or Page Down + - To move forward one page + + * - CTRL-B or Page Up + - To move backward one page + + * - ^l + - To refresh and center screen + + + + +**Поиск текста** +=================== + +**Команды** +++++++++++++++ + +.. list-table:: + :widths: 20 50 + + + * - /pattern + - Search forward for pattern + + * - ?pattern + - Search backward for pattern + + +**keystrokes** + +.. list-table:: + :widths: 10 50 + + * - n + - Move to next occurrence of search pattern + + * - N + - Move to previous occurrence of search pattern + + + + + + + + +**Работа с текстом** +========================= + +.. list-table:: + :widths: 20 50 + + + * - a + - Append text after cursor; stop upon **Escape** key + + * - A + - Append text at end of current line; stop upon **Escape** key + + * - i + - Insert text before cursor; stop upon **Escape** key + + * - I + - Insert text at beginning of current line; stop upon **Escape** key + + * - o + - Start a new line below current line, insert text there; stop upon **Escape** key + + * - O + - Start a new line above current line, insert text there; stop upon **Escape** key + + * - r + - Replace character at current position + + * - R + - Replace text starting with current position; stop upon **Escape** key + + * - x + - Delete character at current position + + * - Nx + - Delete N characters, starting at current position + + * - dw + - Delete the word at the current position + + * - D + - Delete the rest of the current line + + * - dd + - Delete the current line + + * - Ndd or dNd + - Delete N lines + + * - u + - Undo the previous operation + + * - yy + - Yank (copy) the current line and put it in buffer + + * - Nyy or yNy + - Yank (copy) N lines and put it in buffer + + * - p + - Paste at the current position the yanked line or lines from the buffer. + +**Исп -ользование внешних команд** +======================================== + +**sh command** opens an external command shell. + +**!** executes a command from within **vi.** + + + + +**7. Награды** +=================== + + +На протяжении всех лет с 2001 по 2004 Vim побеждал в категории «Любимый текстовый редактор» конкурса Readers' Choice Awards журнала LinuxJournal. Кроме того, текстовый редактор получил награды Linuxworld Editors' Choice Award в 1999 и Slashdot Beanie Award в 2000. + +**8. Лицензия** +================= + +Vim распространяется по GPL-совместимой лицензии известной как Charityware (англ. charity — благотворительность). Часть средств, пожертвованных на разработку Vim, тратится на поддержку сирот Уганды посредством организации ICCF Holland. + +**9. Расширения Vim** +============================ + +Общее число расширений, доступных на официальном сайте, составляет более 3000. +К популярным расширениям Vim, в частности, относятся: + +MiniBufferExplorer + +taglist — просмотр структуры программных файлов (список функций и пр.) + +bufexplorer + +closetag — позволяет закрывать текущий тег при редактировании html/xml-файлов + +supertab — автодополнение слов по нажатию клавиши «tab» (при этом отступы строк работают как обычно) + +project — позволяет организовать файлы в проекты для удобной навигации по ним. Эффективность этого плагина резко возрастает при использовании вместе со следующим плагином: + +indexer — генерирует теги с помощью ctags для всех файлов, входящих в проект. (проект может быть организован как плагином project, так и без него) Теги нужны для быстрого перемещения от вызова функции к ее объявлению, для получения списка членов структуры или класса, и т.д. + + + + + + + + + + + + + + + + +.. toctree:: + :maxdepth: 2 + :caption: Contents: