- Текстовые редакторы
- Содержание
- Выбор текстового редактора в консоли Linux
- Многообразие выбора
- О консольных текстовых редакторах Зачем они нужны и какие бывают
- Медицинское вступление
- Vi и ViM — классика мира Unix
- Текстовый редактор Pico
- Текстовый редактор Joe
- Текстовый редактор Jed
- Текстовый редактор Midnight Commander
- Заключение
Текстовые редакторы
Содержание
Редактирование текстовых файлов (с текстами на естественном языке, либо с текстами программ) — одна из наиболее часто выполняемых работ на любом компьютере и в любой операционной системе. Может быть, поэтому для Linux разработано уже очень много текстовых редакторов (на www.linuxlinks.com перечислены около 100 наименований, и это еще, вероятно, не все). Так что выбрать есть из чего. И стоит уделить некоторое время оптимальному выбору редактора.
Конечно, чтобы такой выбор был обоснован, в идеале надо опробовать все редакторы или большинство из них. Это, очевидно, невозможно, так что приходится положиться либо на случай, либо на мнение кого-то из знакомых или авторов компьютерных книг. (Кстати, неплохой, на мой взгляд, обзор текстовых редакторов содержится в книге А.Федорчука «Офис, графика, Web в Linux». Я тоже попробую изложить свои впечатления о некоторых текстовых редакторах для Linux.)
Из всего множества различных текстовых редакторов рядовой пользователь обычно выбирает два-три, с которыми постоянно работает. Он заучивает до автоматизма управляющие комбинации клавиш, привыкает определенным образом, через пункты меню или щелчки мышкой, выполнять стандартные операции редактирования и, вообще, приноравливается к среде редактора. Поэтому для смены редактора должны быть достаточно веские причины.
По моему мнению, рядовому пользователю, часто использующему компьютер для редактирования файлов, необходимо освоить по крайней мере 3 редактора.
И все же надо уметь пользоваться и одним из консольных текстовых редакторов, потому что Вы, как единственный пользователь (и даже суперпользователь) персонального компьютера, должны уметь отредактировать конфигурационные файлы, причем в любой ситуации, даже тогда, когда графический режим не загружается. Выбор редакторов этого типа очень широк: vi, vim, bvi, Nvi, Elvis, Levee, vile, Wily, joe, aee, Fred, gred, le, lpe, Zed, Emacs, CoolEdit. Давние приверженцы UNIX чаще всего используют vi или его усовершенствованную версию vim, но тем, кто переходит на Linux из среды Windows проще будет освоить CoolEdit, имеющий большое сходство со встроенными редакторами программ Norton Commander и FAR.
Источник
Выбор текстового редактора в консоли Linux
Виртуальные серверы Linux не оснащены графическим интерфейсом, поэтому их администрирование осуществляется через консоль — или посредством , встроенной в панель управления Xelent, или же по SSH. Часто у администратора возникает потребность отредактировать файл конфигурации сервера.
Проблем с этим, как правило, никаких нет — запускаешь предпочитаемый текстовый редактор, открываешь файл, редактируешь и сохраняешь. Однако редактирование некоторых файлов конфигурации, в частности /etc/sudoers, осуществляется только посредством специальных утилит (в данном случае — visudo или crontab — при редактировании расписания планировщика), которые запускают текстовый редактор для консоли Linux по умолчанию. Таковым является vi, перекочевавший в современные дистрибутивы Linux с годов и его нельзя назвать удобным.
В этой заметке будут рассмотрены некоторые текстовые редакторы, и будет показано, как по умолчанию установить понравившийся, чтобы он вызывался при редактировании некоторых специальных файлов конфигурации, которые нельзя редактировать в ручном режиме.
Многообразие выбора
Самый удобный и простой, из известных мне, текстовый редактор Linux консоль — nano (раньше он назывался pico и входил в состав почтового клиента pine). Nano изображен на рис. 1.
Внизу (под текстом) есть подсказка по комбинациям клавиш для управления редактором. Символ ^ означает . То есть для выхода из ytuj нужно нажать комбинацию клавиш + , а для сохранения текста — + .
В некоторых системах (например, в FreeBSD) вместо nano используется ee (в Linux его нет). Он похож на nano, но существуют и различия — подсказки выводятся до текста (вверху экрана), а не после него, но идея та же. Также довольно удобен joe. Скажем так, текстовый редактор Linux консоль nano будет удобнее, он поддерживает подсветку синтаксиса, внизу есть панель с подсказками, но это дело привычки.
В пакет mc (файловый менеджер) входит хороший и довольно удобный mcedit, который запускается при нажатии клавиши в mc (рис. 3). Но вы можете запустить консольные текстовые редакторы в Linux отдельно:
Классический синий фон, подсказки функциональных клавиш внизу Не менее удобен, чем nano. Консольные текстовые редакторы в Linux joe, nano и ee запускаются аналогично:
Мы только что рассмотрели три текстовых редактора для Linux (один был для FreeBSD). Выбор конкретного зависит от ваших личных предпочтений. Но в любом случае, каждый из представленных вариантов будет удобнее, чем стандартный vi.
Источник
О консольных текстовых редакторах
Зачем они нужны и какие бывают
Медицинское вступление
Зачем нужны текстовые редакторы вообще, когда имеется множество развитых текстовых процессоров с изобилием всяческих функций? А вот именно поэтому. Поскольку от текстового редактора в большинстве случаев требуется только одна функция — обеспечить комфортный ввод текста и минимальные с ним манипуляции (вырезание и вставка, поиск и замена, проверка орфографии). По крайней мере это касается длинных связных текстов содержательного характера — то есть от научных статей до любовных романов. И всякие потуги на форматирование (конечно, это мое личное мнение) только рассеивают внимание при создании оригинального материала. В результате чего и то, и другое получается плохо (конечно, это мое личное мнение).
Хорошо, но зачем редактор должен быть консольным? — спросите вы меня. Когда все прогрессивное человечество уже пол десятилетия работает в графических средах. На этот вопрос не трудно ответить любому обладателю близорукости пяти и более диоптрий, проводящему за редактированием текстов пять и более часов. Потому что, не смотря на все безусловные достоинства графического режима, режим текстовый (при мало-мальски нормальном мониторе) обеспечивает существенно меньшую нагрузку на зрение. А в Linux это усугубляется еще и тем, что шрифты графического режима, особенно кириллические, далеки, мягко говоря, от совершенства.
Кроме того, в ряде случаев требуется слегка подправить какой-либо конфигурационный файл. Для чего нелепо вызывать какой-либо редактор графического режима — ведь вся работа в нем займет меньше времени, чем время его загрузки.
А бывает и хуже — сбой системы просто не позволяет загрузить графический режим до внесения соответствующих исправлений. Которые, естественно, можно осуществить только консольным текстовым редактором.
Поэтому необходимость в консольных редакторах будет сохраняться всегда. И Linux (как, впрочем, и Unix вообще) удовлетворяет эту потребность различными способами.
Во первых, в Linux имеется непременный атрибут любой Unix-системы — редактор Vi. Во вторых, есть EMACS — редактор, положивший основу всему открытому программному обеспечению. В третьих, в большинстве дистрибутивов присутствуют (и обычно устанавливаются по умолчанию) редакторы pico, joe, jed. И, наконец, в составе файлового менеджера Midnight Commander имеется встроенный редактор, доступный по клавише F4 (аналогично Norton’у, известному).
Что из себя представляют эти программы, для чего предназначены, на что способны? И какой из них выбрать?
Чтобы решить этот вопрос (по крайней мере, для себя), я решил провести эксперимент. На самом себе, как это принято, говорят, в медицине. А именно, загрузил в отдельной консоли каждый из этих редакторов и начал описывать свои впечатления о них. Пользуясь базовыми средствами, доступными по умолчанию. При этом я не старался не только описать, но даже постигнуть все потенциальное богатство описываемых систем, а только пытался определить, насколько они удобны для поставленной цели — составления «из головы» оригинального текста и его элементарного редактирования; а также — объединения нескольких текстов, перемещения блоков текста между ними и прочих операций, обычных при составлении длинных документов.
Все получившиеся тексты я свел воедино в том редакторе, который показался мне наиболее пригодным для моих целей. Каком — пока не скажу. В нем же и написал это вступление и грядущее заключение. Результатом и явилась настоящая заметка.
Vi и ViM — классика мира Unix
Не могу сказать, что Vi и его модификация — Vim, показались мне чрезвычайно удобными в использовании. Да простят меня старого закала, но от Vi веет какой-то допетровской Русью. Тем не менее, поскольку Vi присутствует абсолютно во всех Unix-системах и обычно является системным редактором по умолчанию, некоторое представление о нем иметь необходимо.
Основная сложность в освоении Vi для человека, привыкшего к редакторам с более или менее, но все же человеческим лицом, является наличие трех режимов: командного, ввода и построчного редактирования. После запуска программы (а это делается просто: vi имя_файла, существующего или нового) перед вами возникает черный экран с тильдами по левому краю каждой строки (рис. 1).
Рис. 1. Текстовый редактор Vim
Пользователь DOS, помнящий еще о WordPerfect версия 4 и 5 (прекрасный был, к стати, процессор) попытается тут же начать ввод текста — и не получит ничего, кроме звукового cигнала. Поскольку находится в режиме командном, ввода не допускающем. То есть нажатия на клавиши интерпретируются не как коды букв, а как команды программы.
Для перехода в режим ввода нужно нажать клавишу a (app) или i (insert); первая позволяет добавлять текст после курсора, вторая — вставлять перед. Теперь-то можно и печатать буковки, как в любом другом редакторе или процессоре. Можно перемещаться по тексту с помощью стрелок управления курсором.
Следует помнить только, что нажатие таких клавиш, как End и Home, не даст привычного для пользователя DOS результата. И, более того, автоматом переведет редактор в командный режим. Для всякого рода сложных перемещений (на слово влево и в право, в начало и конец строки, на стоку вверх и вниз, и так далее) используются всякого рода нажатия клавиш в командном режиме. То же относится и к операциям удаления и замены слов и текстовых блоков: клавиши delete или insert не окажут никакого действия на выделенные фрагменты; нужно перейти в командный режим и выполнить соответствующие действия уже там.
А вот сохранение файла и выход из него требуют еще одного режима — построчного редактирования. Для этого нужно из режима ввода в командный (нажатием клавиши Escape) и набрать :, а после (без пробела) букву для соответствующего действа; например, w — для сохранения, q — для выхода (если файл был изменен, последует предложение сохранить изменения командой :w) или q! — для выхода без сохранения изменений.
Следует заметить, что далеко не всегда ясен текущий режим редактора. В той версии, к которой я набираю эти строки (Vim) режим ввода маркируется строчкой —INSERT— внизу экрана; но в общем случае — это не обязательно. Косвенно текущий режим можно определить нажатием клавиши escape: в случае режима ввода это переведет редактор в командный режим, а в командном — просто вызовет звуковой сигнал.
В наших условиях сложность работы с Vi усугубляется русскими буквами: если вы перешли в командный режим непосредственно из кириллической раскладки (да еще и забыли об этом) — никакие его команды работать не будут. Вызывая жалобное попискивание. А поскольку в консоли раскладка клавиатуры не индицируется (по крайней мере, мне неизвестно, как это можно сделать) — можно провести некоторое время в недоумении, пока не сообразишь переключиться на латиницу.
Думаю. сказанного достаточно для обоснования моего мнения: Vi — далеко не самый удачный инструмент для набора длинных связанных текстов. Однако в критических случаях он может оказаться единственным инструментом для правки, скажем, конфигурационных файлов после сбоя системы. И потому не вредно получить о нем некоторое представление. Путем чтения соответствующего раздела в практически любой толстой книжке про Linux (или Unix вообще). EMACS
Текстовый редактор EMACS часто рассматривается как универсальный инструмент, позволяющий решать почти любые задачи — от правки конфигурационных файлов до написания исходников программ в многие тысячи строк. Мы же посмотрим, насколько адекватно он соответствует нашей задаче — ввода и редактирования длинных связанных текстов.
Функционально EMACS существенно ближе к текстовым редакторам DOS. Он имеет один-единственный режим — режим редактирования. Включающийся сразу же после запуска редактора (рис. 2). А всякого рода манипуляции осуществляются с помощью управляющих клавиш Control, Escape и Alt в комбинации с буквенными. Что особенно приятно нашему человеку, комбинации эти работают не зависимо от раскладки клавиатуры.
Рис. 2. Редактор EMACS
В основе концепции EMACS лежит понятие буфер — то есть области оперативной памяти, в которой и осуществляются манипуляции с текстом. При запуске программы по умолчанию открывается пустой буфер. С буфером возможны следующие манипуляции:
- в него может быть считано содержимое уже существующего файла ([Control+x] — общий компонент для всех операций с буферами и окнами, затем [Control+f] — от слова file, как я понимаю);
- вновь созданный в буфере текст может быть записан как файл ([Control+x], [Control+s] — вероятно, от Save;
- несколько текстовых файлов могут быть объединены в одном буфере последовательным выполнением команды ([Control+x] i), за которой следует запрос имени файла.
EMACS позволяет работать в одной консоли с несколькими файлами одновременно.Для этого для каждого файл посредством ([Control+x] b) создается новый буфер со своим именем (которое никакого отношения к имени файла иметь не обязано).
В каждом буфере можно работать с любым количеством окон, сколько их поместится на экране. Разделение экрана на два окна осуществляется командой ([Control+x] 2), переход между окнами командой ([Control+x] o). Фрагменты текста могут переноситься из окна в окно либо штатными командами EMACS, либо путем выделения мышью и вставки в позицию курсора щелчком средней ее клавиши.
Очень приятной особенностью EMACS является нормальное, с точки зрения пользователя DOS, поведение клавиш Home и End, перемещающих курсор, соответственно, в начало и конец экранной (не истинной!) строки. И еще: перенос слов на границе экрана осуществляется без разрыва строки, то есть, в терминологии текстовых процессоров, без образования нового абзаца (возникающего только при нажатии клавиши Enter). Что очень полезно, если в дальнейшем предполагается экспорт в какой-либо текстовый процессор типа Word: искоренение лишних Enter’ов, возникающих при переносе слов во многих редакторах, в Word — занятие не из самых жизнерадостных.
EMACS обладает довольно эффективными инструментами для редактирования введенного текста. Они основываются на понятии блока — то есть текстового фрагмента, расположенного между меткой (вводимой комбинацией [Control+@] и текущим положением курсора. Блок может быть изъят (аналог Cut в Windows) командой [Control+w] и вставлен (в текущем окне или буфере, или в ином другом) командой [Control+y]. Имеется также многоуровневая отмена последовательностю команд ([Control+x] u).
В общем, пользователь, имеющий навыки работы со старыми текстовыми процессорами для DOS, основанными на использовании клавишных комбинаций, способен без большого труда освоить EMACS. А доведя манипуляцию ими до автоматизма — и эффективно его использовать. Недостаток его (впрочем, характерный почти для всех консольных редакторов Linux) — крайне непривычное, для пользователей DOS использование мыши: с ее помощью можно только выделять фрагменты текста, но на текущую позицию курсора она никакого влияния не оказывает. Кроме того, мерцание последнего раздражает (по крайней мере, меня).
Текстовый редактор Pico
Pico — командно-ориентированный редактор, входящий в состав почтовой системы pine. Он очень компактен, что позволяет использовать его на слабых машинах. Все манипуляции в нем осуществляются посредством комбинации Control+буква. Что работает и при кириллической раскладке клавиатуры. Основные клавишные комбинации постоянно присуствуют в нижней части экрана, не требуя чрезмерного напряжения памяти (рис. 3).
Рис. 3. Редактор pico
Этот редактор не позволяет работать с несколькими файлами или окнами в одной консоли; однако возможна вставка любого числа текстовых файлов с диска в текущий файл.
А так возможности редактирования довольно убоги: можно удалить ([Contol+k] Cut — в том же значении, что и в Windows) строку текста, на которой находится курсор, а затем вставить ее куда либо еще — переместив курсор на новую строку и выполнив команду [Contol+u], то есть UnCut. Есть еще функции поиска, проверки орфографии, а также своеобразно понимаемая опция Justify — вписывание строк, выходящих за границы экрана, в его пределы.
В целом pico, конечно, не пригоден для работы с объемными текстами. Однако, как мне представляется, почти идеален для правки конфигурационных файлов. Поскольку интуитивно более понятен, чем Vi, и много проще в использовании.
Текстовый редактор Joe
Этот редактор многолик. Поскольку способен эмулировать все прочие — и Vi, и Emacs, и pico, а также еще пару. Но собственно Joe — это командно-ориентированный, управляемый путем комбинации Control+буква-[буква]. Что, как и следовало ожидать, не работает при кириллической раскладке клавиатуры. Делая этот редактор малопригодным для работы с объемными русскоязычными документами.
При запуске Joe появляется черный экран, доступный для ввода и редактирования текста. Присутствует также статусная строка, содержащая имя файла, текущие линию и колонку, а также указание для вызова помощи ([Control+k] h); последняя, правда, занимает около трети экрана, но может быть убрана вторичным вводом той же клавишной комбинации (рис. 4).
Рис. 4. Редактор Joe
Редактирование текста основывается на понятии блока и не производит впечатления богатства возможностей. Можно отметить начало и конец блока командами ([Control+b] h) и ([Control+k] k), соотвественно.
Редактирование текста основывается на понятии блока и не производит впечатления богатства возможностей. Можно отметить начало и конец блока командами ([Control+b] h) и ([Control+k] k), соответственно, скопировать или переместить его в другое место, а также удалить. Понятия вставки удаленного фрагмента (аналогичного буферу изъятия в EMACS) — нет.
Интересно, что клавиша Home ведет себя, как в редакторах для DOS, то есть перемещает курсор в начало экранной строки. Подсознательно и от клавиши End ожидаешь правильного поведения. Но не тут-то было — вместо этого она вставляет тильду перед позицией курсора. Что крайне раздражает. Хуже этого только необходимость переключаться на латиницу перед выполнением любой манипуляции. В общем, Joe не показался мне пригодным для использования в мирных целях, по крайней мере в русскоязычной стране.
Текстовый редактор Jed
Jed — редактор меню-ориентированный, что делает его, казалось бы, более привычным для пользователя, пришедшего из мира DOS-Windows. Во всяком случае, при запуске можно видеть строку меню достаточно стандартного вида — с пунктами File, Edit, Search, Buffers, Windows, System, Help, с выделенными горячими клавишами, активизация которой происходит по нажатии F10, прямо как в Лексиконе (рис. 5).
Рис. 5. Редактор Jed
Однако если Jed был загружен без имени файла, он долго и упорно будет требовать введения такового в командной строке внизу экрана. И на File-Open реагировать не пожелает. Пока не додумаешься выполнить File-Cancel Operation. Только после этого потребный файл можно будет открыть обычным (вернее, привычным) образом.
Дальше — еще интереснее. Ну, то, что ни Home, ни End не работают — ладно, пора уже бы и привыкнуть. Но не работает и delete — удалить введенное можно только клавишей backspace. И меню абсолютно не реагирует на мышь, хотя внутри текста манипуляции мышью осуществляются обычным для Linux-консоли способом.
Как я уже говорил, в меню цветом выделены горячие клавиши, вызывающие соответствующие действия при его активизации. Однако — только при латинской раскладке клавиатуры, что полностью обесценивает эту полезную опцию.
К достоинствам Jed можно отнести возможность работы с несколькими файлами. Что реализуется через новые буферы, аналогично тому, как это сделано в EMACS. Можно также работать с двумя (как будто бы, не больше) окнами. В которых может быть открыт один и тот же файл, или разные.
Предусмотрены также различные режимы (кроме основного, текстового) для поддержки различных языков программирования (C, TeX, Forttan и другие; HTML, к сожалению, среди них нет). Однако это не делает Jed более пригодным для решения поставленной в этой заметке задачи.
Текстовый редактор Midnight Commander
Входящий в состав этой оболочки текстовый редактор — пожалуй, наиболее близкое и родное Linux-создание для старого пользователя DOS. Поскольку напоминает видом редактор из советского народного Командира Нортона. И почти таков же нравом.
Все здесь радует глаз (рис. 6): и привычный синий фон с нерезко белыми буквами, и статусная строка в верхней части экрана, и линейка нумерованных (по функциональным клавишам) операций — внизу. Привычно работают клавиши Home и End, delete и backspace; и щелчок мышью в тексте приводит к перемещению курсора в эту позицию. Правда, в отместку за это не работает вставка выделенного фрагмента по щелчку средней клавиши.
Рис. 6. Встроенный редактор Midnight Commander
Как и в Нортоне, по умолчанию отключен перенос слов на краю экрана; что можно оценивать двояко: с одной стороны, при экспорте в текстовые процессоры не плодятся лишние абзацы, с другой — редактировать текст, перемещаясь туда-сюда на два-три экрана (никакого горизонтального скроллирования, разумеется, нет) — не верх удобства. Правда, режим переноса можно включить — динамически или на фиксированном числе знаков.
Назначение функциональных клавиш также более или менее совпадает. Хотя в MC есть специфика, касающаяся копирования, перемещения и удаления; так, последнюю операцию можно выполнить только через F8, но не через delete.
Выделение текстовых фрагментов — самое разнообразное, и по клавише F3, и мышью, и клавишами управления курсором при нажатом Shift. Правда, не лучшим образом осуществляется копирование и перемещение: если предназначенный для этого фрагмент выделен мышью, курсор в новую позицию можно переместить только стрелками, иначе выделение пропадет. Но зато — есть выделение прямоугольных столбцов.
Приятна также полная русификация программы. И все сочетания управляющих и буквенных клавиш работают как при латинской, так и кириллической раскладке клавиатуры.
В отличие от оригинального Нортона, я не обнаружил никаких ограничений на размер открываемого файла. По крайней мере, файл размером в 400 Кбайт был открыт безропотно.
Правда, в редакторе MC нет функции создания текстового файла. Его можно вызвать только для просмотра уже существующего файла, хотя бы пустого. Но ведь эта проблема решается просто:
и пустой файл готов. Можно наполнять его своими бесценными мыслями. Нет также и встроенной проверки орфографии. Что, при наличие русского ispell, также не доставляет неудобств.
В общем, редактор хороший. Правда, я не освятил всех его достинств. Но подробно о нем можно прочитать у Виктора Костормина .
Заключение
Как и положено, в заключение проведу небольшое сравнение. Не претендующее не только на полноту, но и на объективность. Поскольку оценка производилась соответственно задачам, поставленным во вступлении. То есть созданию оригинальных текстов содержательного характера.
И потому на первое место я все же поставил бы EMACS. Поскольку набор в нем осуществляется традиционным для DOS способом, освоить управляющие комбинации — большого труда не составляет, использование их достаточно эффективно. А на выходе получается чистый plain text без лишнего разбиения на строки.
Для мелкомасштабного редактирования (скажем, конфигурационных файлов) оправдано использование pico. Редактор из MC также вполне подходит для этой цели. Позволяя, в то же время, и создание оригинальных текстов средней длинны.
Что касается традиционного Vi, на мой взгляд (заранее прошу прощения у его адептов), освоение его специфики нецелесообразно для любого, не впитавшего привычку к этому редактору с молоком матери. Joe практически не имеет специфических особенностей, оправдывающих трудозатраты и неудобства. Ну а меню-ориентированность Jed не искупает неудобства реализации.
Во избежание необоснованных упреков, повторяю, что моя оценка не относится к качеству рассматриваемых редакторов как таковых. А исключительно к применению их к декларированной задаче — сочинению оригинальных текстов содержательного характера. Типа этой статьи, например. Вполне возможно, что применительно к другим задачам любой из забракованных мной редакторов окажется вполне эффективным.
Алексей Федорчук
Писано на Поселке 26 февраля 2000 г.
Источник