Собираем
информацию
по крупицам

Linux: как перестать удивляться, и начать работать

Как я искал текстовый редактор под Linux. Первые шаги
24-04-2014
22:03:10

Я очень трепетно отношусь к текстовым редакторам. Ведь текстовый редактор входит в тройку самых часто используемых инструментов для работы на компьютере. Делят с ним пальму первенства только файловый менеджер и веб-браузер.

 

Моим первым текстовым редактором, в котором я написал километры ассемблерного кода, был редактор ED*МИКРОН*, который работал на ПК "Микроша" - клоне радиолюбительского компьютера Радио-86 РК. У этого ПК было 32Кб оперативной памяти и микропроцессор, работавший на заниженной частоте в 1,8МГц. Несмотря на такие скромные характеристики, редактор текстов был не строковым, а полноэкранным. Конечно, аппаратные ограничения диктовали свой стиль построения пользовательского интерфейса. Он был минималистичным, и весь состоял из сочетаний клавиш, выполняющих те или иные действия. Никакой подсказки небыло (ведь память надо было экономить), и для того, чтобы редакторировать текст, надо было знать КАК редактором пользоваться. Иначе ничего не отредактируешь. В редакторе было три режима работы - режим набора, режим редактирования и режим поиска. Не правда ли, это так похоже на раритетный редактор VI/VIM, которой "только пищит и портит текст"?

 

Во времена DOS я активно использовал текстовый редактор из состава DosNavigator. По сравнению с ED*МИКРОН* это была просто сказка наяву. Обычно я использовал его для обработки небольших текстовых файлов. А для редактирования больших файлов запускал консольный MultiEdit. Оба эти редактора объединяла хорошо продуманная ориентация на пользователя. Изучить все возможности редактора было очень легко в процессе использования. Все действия, дотупные из в меню, имели подсказку по горячим клавишам, и через пару дней работы можно было быстро и качественно править тексты. К тому же эти редакторы создавались во времена, когда интернета небыло. И посему, полноразмерная система помощи была встроена в редактор, и что самое интересное - была актуальной. Самое главное, что было присуще этим обоим DOS-овым редакторам - это предсказуемость в работе, быстрота запуска и мгновенная скорость открытия файла.

 

Сейчас я использую для работы ОС Linux. И скажу так - на 2014 год под Linux еще не появилось ни одного нормального консольного текстового редактора. Во многом это произошло потому, что эмуляторы терминала (в простонародье - консоль) под *NIX имеют весьма специфическую реализацию, ограниченную исторически сложившимися требованиями к знако-символьным устройствам. Пара проблем, для иллюстрации:

 

  • Функции отрисовки сомволов по нужным координатам очень медленные. А согласно Unix Way, пользоваться прямой работой с видеопамятью текстового режима, как это повсеместно делалось в DOS, в терминале нельзя.
  • Нет никакой возможности отправить нажатие клавиши-модификатора (Alt / Ctrl / Shift) в терминал. Модификатор передается только в момент отправки основного символа.

 

Поэтому, и в силу других причин, для Linux появилась только одна более-менее стоящая библиотека текстового режима - NCurses. Других альтернатив для организации пользователь-ориентированного интерфейса в консоли под Linux просто нет. И поэтому все попытки создать удобный тектовый редактор заканчиваются созданием уродливого поделия, которое не решает проблемы пользователя, а загоняет его в рамки, созданные ограничениями платформы. Скажем точнее - созданные историческими ограничениями платформы, которые в настоящий момент практически не имеют никакого смысла, но влияют на архитектуру создаваемых приложений.

 

Я долго мучался, пытаясь привыкнуть хотя бы к одному консольному редактору в Linux. Основные требования у меня были следующие - предсказуемость интерфейса и возможность работы со стандартными сочетаниями клавиш. То есть, мне нужно, чтобы текст выделялся по Shift+стрелки, копирование было по Ctrl+C, вставка по Ctrl+V, отмена по Ctrl+Z и т. д. Всё. Однако ни один из опробованных редакторов оказался не способен удовлетворить таким минимальным требованиям. Я научился снимать биндинг с сочетаний Ctrl+C / V / X в консоли, чтоб освободить это сочетание для действий копипаста. Я измучил себя mcedit-ом, vim-ом, jed, nano, тратил время на настройку emacs, спрашивал советов на ЛОРе. В результате понял одно - ну нет под Linux нормального текстового редактора. Нет его. Хочешь редактировать тексты в Linux - или мучай мозг совершенно различными комбинациями клавиш: в консоли - одни, в и DE-шном окружении - другие, или используй редакторы с GUI. Третьего не дано.

 

Хотя нет, третье было. Я несколько лет использовал редактор Far под Wine! Когда я от отчаяния решился на такое, и увидел, что оно вполне работоспособно, я написал на ЛОРе следующий восторженный пост:

 

 

 

Десять лет, проведенные в линухе, омрачались многими вещами. Но самая мрачная вещь - это отсутствие удобного и понятного консольного текстового редактора.

 

Я дважды серьезно приступал к изучению vi, проходил встроенный туториал, записывал на бумажечку выученные команды. Но после небольших перерывов, начисто забывал что и как надо делать, помнил только спасительную комбинацию ":qEnter" чтоб выйти из этого ужосо. Я пробовал использовать emacs -nw, но это звиздец еще похуже vi. Чтобы в нем вызвать меню, или просто выйти из программы - нужно прочитать документацию, написанную абсолютно невменяемыми людьми. Другие редакторы, типа nano и jed - по факту являтся наколенными поделиями людей, которые совершенно не представляют себе, что значит пользовательский интерфейс.

 

Посему, за неимением альтернативы, приходилось пользоваться встроенным редактором Midnight Commander. Он, конечно, далек от идеала, но в нем хотя бы есть меню, через которое всегда можно выполнить редкие действия, и кривая строка подсказки по клавишам.

 

Я думал, что уже никогда не увижу человечного консольного редактора в линухе. И вот недавно мне в голову пришла мысль - а почему бы не воспользоваться встроенным редактором FAR, запустив его через wine? И произошло чудо - FAR действительно имеет опции, чтобы запускаться как редактор для указанного файла.

 

Я скачал FAR2 с офицального сайта, распаковал его в каталог /opt/far2, и с трепетом ввел команду:

wineconsole --backend=user /opt/far2/Far.exe /e myfile.txt 2>/dev/null

Господи! Я плакал! Все работает, просто абсолютно все!! Без всяких плясок с бубном! И какнадо!!!111 Всего не перечислишь, вот только то, что пишу навскидку:

 

- Работает выделение Shift+Стрелки.
Привет MC с его F3, и допиливание Konsole!

 

- Работает вертикальное выделение Alt+Стрелки.
Привет глюкам MC, в котором после вертикального выделения не поднять курсор выше отметки выделения.

 

- Полная интеграция с буфером обмена десктоп-окружения.
Привет обмену через cooledit.clip, через который невозможно засунуть и принять в DE-шный буфер обмена кириллицу. Досвидания кривой xclip!

 

- Возможность копирования в буфер обмена даже невидимого текста.
Ну да, выделяешь текст (пусть он даже вылазит за экран), нажимаешь Ctrl+C и текст в буфере. Это можно сделать не только в редакторе, но и в любом поле ввода. И в любом поле ввода можно сделать Ctrl+V, а не нажимать консольное сочетание «Вставка из буфера», специально для такого случая.

 

- Отмена действия и выход из редактора - одинарное нажатие Esc.
Досвидания двойным Esc в MC. Допиливать до одинарного нажатия нужды нет.

 

- Работает копи-паст по привычным сочетаниям Ctrl+C/Ctrl+V.
Досвидания F5, F6, F8 в MC, из-за которых по привычке невозможно работать в других DE-редакторах.

 

- Работает интеллектуальное Undo по привычному сочетанию Ctrl+Z.
Досвидания посимвольное Undo в MC по C-u.

 

- Есть грамотно отформатированная справка по всем клавиатурным сочетаниям, вызываемая по F1.
Досвидания кривая справка MC, в которой сочетания нужно выискивать в тексте. Досвидания сочетания вида «M-e» и «F17».

 

- Работает сохранение по F2 без вопроса «Действительно сохранить?»
Досвидания привычка тыкать F2 - Enter в MC.

 

- При нажатии Ctrl или Alt нижняя строка подсказки сразу показывает, какие действия будут выполняться при нажатии F1-F10.
Понимаю, понимаю, в консоли одиночные нажатия клавиш-модификаторов отследить проблематично.

 

- Безупречно работает автоопределение кодировки файла.
Еще ни разу не пришлось вручную перетыкать UTF-8, KOI-8 и CP1251. Просто открываешь файл и редактируешь.

 

- Замечательно работает подсветка синтаксиса через Colorer.
Досвидания кривая подсветка в MC, в которой при редактировании html-видов в файлах с расширением .php, требуется обязательное наличие тегов <?php ?>, а без них - каша.

 

- Работает быстрое перемещение к началу/концу текста по Ctrl+UP/Ctrl+Dn.
А в MC это давно и успешно разломали.

 

- Не возникает «лесенки» при вставке текста.
Досвидания http://www.midnight-commander.org/ticket/1603

 

- Не теряются символы переноса строк.
А в MC никогда на угадаешь, когда вставленный текст вставится в одну строку.

 

Чего не хватает? Ну да, единственной вещи - работы в консольном бакэнде. Пользоваться FAR в wine с опцией "--backend=curses" не представляется возможным.

 

Я прописал встроенный редактор FAR в качестве редактора в MC. Конечно, открытие нового окна с редактируемым текстом меня не радует. Хотелось бы, чтоб редактор был действительно консольным. Зачем, спрашивается, было огород городить, если с таким же успехом можно вызывать нативный Kate?

 

Но скажу честно - Kate не предназначен для работы через клавиатуру. А встроенный редактор FAR - предназначен. Так что я уже две недели работаю с FAR-редактором и не нарадуюсь. Поначалу раздражало новое окно, и чуть тормозной запуск (около 1 сек против мгновенного запуска встроенного MC редактора), но щас привык, и выгода от удобства редактирования налицо. Я наконец-таки начал комфортно и быстро редактировать текст. Чего и вам желаю.

 

Всем красноглазам привет.

 

 

Почему же я решил отказаться от FarEdit под Wine? Впринципе, меня в FarEdit всё устраивает. Решительно всё. Не устраивает только качество эмуляции самого Wine. На поверку оказалось, что консоль Wine не успевает за моей скоростью работы, и время от времени сегфолтится. Обычно эти сегфолты происходят при активной работе с клавишами-модификаторами. Сегфолты редки, но они есть. И это начинает утомлять, особенно когда перелопачиваешь большие объемы текста. Неприятно, знаете ли, десять минут править файл, и вместо сохранения результатов работы получить сегфолт.

 

Поэтому, коль уж мечте о консольном редакторе в Linux не суждено осуществиться, и даже FarEdit создает отдельное окно консольного бакэнда, то надо найти удобный GUI-редактор, заточенный на работу с клавиатурой.


К списку "Компьютерное"

Интересное на сайте


Гаджеты » Как я тестировал Multiclet

Не так давно екатеринбургская компания ОАО «Мультиклет» начала программу по активной популяризации своего микропроцессора, основанного на ...


Классическая анимация » Прыгающая подушка

Оборудование: Pentium-IV, Wacom Graphire3 CTE-630 Среда: Flash 8 Год: 2005   Первая и, видимо, последняя попытка нарисовать мини-мультфильм по т...


Скейтбординг » Самодельный слаломный скейт. Часть 1: Введение

В детстве я был счастливым обладателем советского скейта АПОМ, который по нынешним меркам классифицируется как слаломная доска. АПОМ по праву считаетс...

RSS подписка

Подпишитесь на новости сайта по RSS


http://polyfilter.ru/ продам кизельгуровый фильтр.

Внимание!

На этом сайте разрабатывается программа MyTetra и её родственные проекты.

Доступны к просмотру следующие базы знаний:

База Xintrea (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)

База Rarrugas (1, 2)

База Balas

База YellowRaven

База Yurons

База Lesnik757

База Shandor

База Sirrichar

 

Подробности на странице MyTetra Share.

 WebHamster.Ru
 Домик любопытного хомячка
Яндекс индекс цитирования
Почтовый ящик