LINUX.ORG.RU
ФорумTalks

[Человечный консольный редактор в линухе] Наконец-то я его нашел. Я счастлив.


1

1

Здравствуйте!

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

Я дважды серьезно приступал к изучению 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 редактора), но щас привык, и выгода от удобства редактирования налицо. Я наконец-таки начал комфортно и быстро редактировать текст. Чего и вам желаю.

Скрин: http://rghost.ru/1731292/image.png Странно, что в заголовке окна написано «Администратор». Все запускается от обычного пользователя, видимо wine внутри себя держит какого-то пользователя-администратора. Не разбирался с этим, главное что редактор работает.

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


Ответ на: комментарий от xintrea

У меня в emacs'e текст не вылазит за переделы окна, любого (в том числе терминала). В других программах, запущенных в urxvt у меня так же текст переносится, а при копировании новые символы новых линий (\n) не появляются.

oh
()
Ответ на: комментарий от ef37

>>Не смеши меня, любитель windows-комбайнов. Ты предлагаешь замуровать этот функционал внутри Far. Это по твоему Unix-way ?

Я предлагаю слинковаться с enca и не городить ерунды по поводу -e. Это будет Unix-way. В винде они вынуждены вкомпилировать, если бы это было в системе по умолчанию, работало бы точно также как могло бы работать в Linux - через динамическую линковку или dlopen().

Для справки, enca в виде библиотеки используется многими проектами. Например, mplayer использует ее для определния кодировки субтитров.


Мне ты это можешь не рассказывать, расскажи это авторам редакторов

alex_custov ★★★★★
()
Ответ на: комментарий от oh

> У меня в emacs'e текст не вылазит за переделы окна, любого (в том числе терминала). В других программах, запущенных в urxvt у меня так же текст переносится, а при копировании новые символы новых линий (\n) не появляются.

Бедненький, как же ты глаза себе ломаешь.

И таки вопрос - что ты будешь делать, если нужно скопировать текст, длиной в полтора экрана по высоте? В два приема копировать?

xintrea
() автор топика
Ответ на: комментарий от xintrea

> Бедненький, как же ты глаза себе ломаешь.
поцчему?

И таки вопрос - что ты будешь делать, если нужно скопировать текст, длиной в полтора экрана по высоте? В два приема копировать?


Хмм.. честно говоря никогда такого не делал, всегда под иксами работаю.
Если весь файл надо, то наверное cat, а в urxvt можно нормально прокручивать.
Если не весь файл, то perl -pe «ТекстВПервойСтрочке..ТекстВПоследнейстрочке» file.txt, а дальше таким же макаром - через urxvt копировать.

Только я вот все равно не понимаю, зачем тебе именно КОНСОЛЬ? Фар-то ты все равно в отдельном окне запускаешь.

oh
()

и мне после этого будут пенять за то что я гоняю сетевые вендовые программы под вайном?

я протестую. весь тред это провокация!

:) :) :)

tommy ★★★★★
()
Ответ на: комментарий от oh

Фар-то ты все равно в отдельном окне запускаешь.


В смысле? Запускаешь FAR c нужными ключами и все Оk.

TGZ ★★★★
()
Ответ на: комментарий от xintrea

> И таки вопрос - что ты будешь делать, если нужно скопировать текст, длиной в полтора экрана по высоте?

запущу emacs в нормальном режиме.

ugoday ★★★★★
()
Ответ на: комментарий от xintrea

>Взаимоисключающие параграфы, не?

Не. VIM - надмножество, по умолчанию работает в режиме обратной совместимости, т.е. если знаешь vi и не нужно «шашечки» (типа вертикального блока) можешь пользоваться только стандартными командами.

kors
()
Ответ на: комментарий от ugoday

>> И таки вопрос - что ты будешь делать, если нужно скопировать текст, длиной в полтора экрана по высоте?

запущу emacs в нормальном режиме.


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

xintrea
() автор топика
Ответ на: комментарий от xintrea

Порты

Из портов OpenBSD последний. Собирать смысла не вижу.

anonymous_sama ★★★★★
()
Ответ на: комментарий от xintrea

> Вот это по-нашему, по линуксячьи.

а что не нравится?

Вместо того, чтобы иметь нормальный интсрумент и работать в нем, будем работать в огрызках.

бессмысленный набор буков

потратим время на запуск и открытие файла

чисто для справки: это меньше одной секунды

И это все только для того, чтоб скопировать кусок текста в буфер обмена.

Что характерно, у emacs'оводов всё работает быстро и хорошо, а неосиляторам только и остаётся что злиться и ругаться.

ugoday ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.