Компания ALT Linux
Опубликован: 14.12.2004 | Доступ: свободный | Студентов: 12082 / 1395 | Оценка: 4.19 / 3.84 | Длительность: 18:18:00
ISBN: 978-5-9556-0019-1
Лекция 16:

Текстовые редакторы Vi и Vim

< Лекция 15 || Лекция 16: 12345 || Лекция 17 >

Vim

Можно рассматривать vi не как конкретную программу, а как концепцию редактирования текста. Более или менее vi -подобных текстовых редакторов существует несколько – так же, как есть несколько видов UNIX-подобных систем. Разные vi можно условно поделить на два множества: программы, повторяющие возможности vi, и программы, возможности которых выходят далеко за его пределы при сохранении максимума совместимости. К " vi -братьям" можно отнести программы, основанные на исходном тексте первого vi (в каждой операционной системе их слегка поправляли), и редактор nvi, предназначенный для замены vi после того, как в его исходных текстах обнаружились части, которые нельзя распространять свободно. В nvi, по заявлению авторов, повторены даже ошибки vi. Отличить один vi от другого проще всего с помощью команды :ver.

Совсем другую картину можно наблюдать в редакторах vim и elvis. Возможности vi, и без того немалые, расширены в этих редакторах далеко за пределы умопостижимости. Особенно постарались авторы vim ( vi im proved, усовершенствованный vi ). Одной документации с этим редактором приходит более трех с половиной мегабайтов. Как и emacs, vim следует рассматривать как среду редактирования текста, в которой поддерживается решение большинства задач, непосредственно связанных с редактированием. Осваивать vim стоит, как и всякую проективную систему, постепенно: для начала составить представление о его возможностях и способах использования, а затем не лениться искать в документации наиболее подходящий для решения каждой задачи инструмент. В конце концов у вас в руках окажется подмножество возможностей редактора, отвечающее вашему стилю работы с текстом и специфике задач.

Встроенная помощь

В лекции 6 мы пришли к мысли, что получение информации можно с удобством организовать теми же средствами, что и управление проективной системой. Поэтому разделы документации по vim удобнее всего читать при помощи самого vim: правила работы с документацией и ее заголовок доступны по команде :help. Документация vim – жестко гипертекстовая: любой объект vim имеет соответствующий ярлык в файле tags документации (их там без малого шесть с половиной тысяч). Значит, любое упоминание имени объекта в тексте служит одновременно контекстной ссылкой на описание этого объекта, так что команда ^] работает в файле помощи почти на каждом слове. Команда :help объект_vim работает так же, как :tag, только использует заранее определенный tags. Каждый параграф руководства vim снабжен ярлыком вида *название* ; не умножая сущностей, будем и мы оформлять таким способом ссылки на руководство.

Структура гипертекста достаточно приемлема: небольшая интерактивная обучающая среда для начинающих; руководство пользователя (учебник, "VIM User Manual"): три раздела по 6-12 глав, в лекции по 6-12 небольших параграфов; полная документация ("VIM Reference Manual"): девять разделов, при необходимости также поделенных на главы и параграфы, сводные таблицы-справочники. Не имея намерения пересказывать содержимое этой документации, мы ограничимся лишь описанием самых интересных, на наш взгляд, возможностей. Предполагается, что для изучения этих возможностей будет использована не наша книга, а сам vim. В частности, все отличия vim от ортодоксального vi кратко и внятно описаны в *vi-differences*.

Буферы и многооконность

В vi была возможность редактировать несколько файлов по очереди. Если при работе с одним файлом требовался режим autoindent, а при работе с другим – не требовался (например, текст на Си и текст на английском), приходилось после переключения с файла на файл всякий раз командовать то :se ai, то :se noai. В vim с каждым файлом связан буфер, в котором запоминаются настройки редактора ( *buffers* ). Многие настройки относятся по умолчанию к текущему буферу, но есть и возможность явно задать область их действия с помощью setlocal и setglobal. Локальная автоматическая метка '\' и другие автоматические метки, определенные в vim ( *mark-motions* ), локальные стили подсветки синтаксиса, форматирования и представления текста, о которых речь пойдет дальше.

Побочным эффектом введения буферов стала возможность показывать несколько файлов одновременно, не меняя соответствующих настроек. Экран терминала можно разбить на несколько прямоугольников и связать с каждым из них свой буфер. Переключаться между получившимися окнами можно с помощью ^W^W, а изменять их размер – с помощью ^W+, ^W- и ^W_. Именно в виде отдельного окна открывается страница помощи.

Типизация файлов и автокоманды

Различия в настройках для работы с разными файлами зависят прежде всего от типа файла. Для того чтобы при открытии файла на редактирование vim применял соответствующий набор настроек, пришлось реализовать распознавание типа файла ( *filetype* ), и одновременно механизм подключаемых модулей ( *filetype-plugins* ) – специальных файлов настройки vim, содержимое которых выполняется при открытии файла определенного типа. Если настройки, предлагаемые по умолчанию, не подходят, можно создать собственный файл настроек для определенного типа: например, подключаемый модуль для программ на Си будет лежать в ~/.vim/ftplugin/c.vim. Символ "~" означает здесь домашний каталог пользователя.

После того как vim научился распознавать типы файлов, многие полуавтоматические работы стали автоматическими. Целый раздел документации, *autocommand*, посвящен автоматическим командам. Автоматическая команда привязывается к типу файла и списку событий, с этим файлом происходящих. Например, команда :autocmd BufRead *.txt set expandtab привяжет к событию "чтение из файла" для файлов, чье имя заканчивается на .txt, включение настройки expandtab (превращать символы табуляции в последовательность пробелов).

< Лекция 15 || Лекция 16: 12345 || Лекция 17 >
Andranik Avakian
Andranik Avakian

41. УК РФ и Комментарии (ст. 273)

М. 2000 г. Издательство: ALT Linux, Институт Логики

Уголовный Кодекс РФ и комментарии к нему?

По ссылке открывается сайт документации Linux, раздел Linux Installation and Getting Started

Сергей Петровский
Сергей Петровский

У Вас написано:

ls -dt1 `grep -il отчет *` | head -1

если знания по шелу мне не изменяют, то должно быть:

ls -dt | `grep -il отчет *` | head -1

Владимир Данилов
Владимир Данилов
Россия, г. Санкт-Петербург