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 внутри себя держит какого-то пользователя-администратора. Не разбирался с этим, главное что редактор работает.

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


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

> QTCreator - приятная юзабельная штука. Он то чем не угодил?

Он всем угодил. Но корпоративный стандарт - Code::Blocks мать йего. По поводу этого кодеблокса можно отдельный холивар устраивать.

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

> Нет, я немецкий учил.
Это минус, да. Если мне будет не лень, напишу парочку фичреквестов, правда пока не знаю, для какого редактора.

Он всем угодил. Но корпоративный стандарт - Code::Blocks мать йего. По поводу этого кодеблокса можно отдельный холивар устраивать.

Тут я даже возражать не буду, кодблокс действительно уныл. А что за глупые стандарты и зачем они вообще? cmake или Makefile везде одинаковые.

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

>Я у него уже давно это спрашивал, он ничего внятного не ответил. Только и может, что на лоре плакаться о том, какой плохой линукс.

Да откровенно говоря у меня тоже складывается впечатление, что ТС лжёт:

Десять лет, проведенные в линухе...

Ибо за 10 лет вполне реально настроить или емакс или вим, под себя, как угодно. И за 10 лет не усвоить что в большинстве линуксовых дистрибутивов нет vi, а есть только vim, кажется мне несколько странным.

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

> предлагаю сделать скринкаст, как они лихо выделяют клавиатурой вертикальный блок в любимом emacs, и копируют его в буфер обмена GNOME/KDE/XFCE/Чеготамувас.

Какая прелесть. Дитё, ты вправду думаешь, что это составляет хоть малейшую проблему в emacs?

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

vim:
ctrl+v -> <выделил> -> ;y
;)
Буфер обмена GNOME/KDE/XFCE - вещь не существующая вообще, у иксов у самих есть 3 различных буфера, DE дополнительных туда не приделывают.

NekoExMachina
()
Ответ на: комментарий от iBliss

> Большинство линуховых редакторов губит расширяемость. Поскольку фичреквесты пользователей игнорируются с причиной «ну вам же дали скриптинг - скриптуйте».

пользователи естественным образом делятся на две части:

* те, кто заскриптуют нужные действия, и будут радоваться

* убогие нытики

завистливо глядя как спокойно работают владельцы маков в текстмейт.

и что такого он умеет, с чем не справится emacs?

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

> мутант с двадцатью фалангами

у человека, если чо, 20x3=60 фаланг. Вывод: emacs не любят только калеки и инвалиды.

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

> те, кто заскриптуют нужные действия, и будут радоваться

...или те, кто взял скрипты других людей, например. Делиться тоже никто не запрещает (:

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

>Ужас какой. Попробуй vimtutor.

Я, вот, тоже так и не осилил. Работать умею, конечно, но не переношу. Принцип работы vim'а идёт категорически поперёк моей натуры :)

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

> и что такого он умеет, с чем не справится emacs?

Абсолютно ничего нового. Просто скорость развертывания засчет встроенных фич высокая. При смене направления деятельности маркап/кодинг все меняется в несколько кликов.

А минус скриптинга не в том что он время занимает, а в том что изначально он был для решения нетривиальных задач, а в результате получилось решение must have фич нетривиальными методами.

Emacs вообще никогда не понимал. Не ну если вдоску функциональщик - это понятно. Но когда он применяется для повседневных задач... Вобщем рекомендую посмотреть на емаксера вынужденного что-то сделать в мэйнстримном редакторе - жалкое зрелище.

iBliss
()

Ясно что Фар лучше всех «настоящих хакерских редакторов».

Фар изначально был коммерческим продуктом и поэтому он сделан для очень быстрого обучения. Фар сделан быть привлекательным и красивым.

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

Поэтому вйим и ёмакс нужно закопать. Пусть продалжают разлагаться.

gamecoder
()

Весь тред не осилил, но было весело. Доставляют ниасилившие элементарнейший vim.

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

> Абсолютно ничего нового.

а зачем он тогда нужен?

Просто скорость развертывания засчет встроенных фич высокая.

Скорость развёртывания чего?

При смене направления деятельности маркап/кодинг все меняется в несколько кликов.

не понятно что имеется в виду.

а в том что изначально он был для решения нетривиальных задач

нет. Скриптинг не для этого. Он нужен, чтобы решать задачи на простом языке, а не на низкоуровневом ужосе.

а в результате получилось решение must have фич нетривиальными методами.

что же нетривиального в скриптинге?

Emacs вообще никогда не понимал. Не ну если вдоску функциональщик - это понятно.

Какое emacs имеет отношение к функциональщине?

Вобщем рекомендую посмотреть на емаксера вынужденного что-то сделать в мэйнстримном редакторе - жалкое зрелище.

а мэйнстрим редактор это у нас что?

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

> и что такого он умеет, с чем не справится emacs?

Много чего, и много же чего не умеет. С системами контроля версий интеграции нет, changelog-mode, в общем, нет. То, что есть — все, что попадает под категорию «функции текстового редактора» (почту не читает, булочки маслом не намазывает).

Единственное преимущество — Textmate не надо со старта чему-нибудь учить, все, что он умеет, умеет из коробки.

Я же поставил Aquamacs, впендюрил в него yas, и не догоняю, зачем мне платный и проприетарный textmate.

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

> Много чего,

всё же хотелось бы пример, чего emacs не умеет.

все, что попадает под категорию «функции текстового редактора»

а чем же он тогда выделяется из сонма других убогих текстовых редакторов, коих понаписали уже дофига штук?

все, что он умеет, умеет из коробки.

Это логично. Если прога ничего не умеет, то и в настройке она не нуждается.

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

> а зачем он тогда нужен?

Для работы

Скорость развёртывания чего?

Нового проекта

не понятно что имеется в виду.

Смена типов выполняемых задач без ковыряния вики на предмет наличия ёпрсml-mode. Да ничего неизучимого нет, но тратить время и нервы на вещь которая мне пригодится раз в год смысла не вижу, и так в жизни на всё времени не хватает. А тут программирование текстового редактора...

Он нужен, чтобы решать задачи на простом языке, а не на низкоуровневом ужосе.

Вот как раз-таки низкоуровневый ужос легче запомнить потому что он простой и его мало. Конечно если взять в корень лисп еще проще - знаки припинания, но ковырятся в цепочках (екаранный-бабай (какаятострока ' ващехерпроссышьаббревиатура)) для того чтобы скажем ковыряться в файлах с несложной структурой - для меня как то странно.

что же нетривиального в скриптинге?

Сааамая простая задача - автодополнение. Есть она в емаксе неналиспе? Неа.

Какое emacs имеет отношение к функциональщине?

Да никакого... бейсик там... бейсик

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

>За вертикальное выделение в vim надо заморить голодом всех детей уганды.

Да это же вообще киллер-фича!

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

> Для работы

А почему именно он? emacs'у он проигрывает, преимущества перед другими редакторами нет.

Нового проекта

что такое проект?

Смена типов выполняемых задач

Хочется поясняющий пример, раскрывающий загадочную фразу: «ри смене направления деятельности маркап/кодинг все меняется в несколько кликов». Ибо звучит уж очень по-маркетинговски.

без ковыряния вики на предмет наличия ёпрсml-mode.

emacs'овы режимы существуют для упрощения работы. Не хочешь учиться использовать, например, abbrev-mode --- не учи. Не желающий работать головой волен работать руками.

Вот как раз-таки низкоуровневый ужос легче запомнить потому что он простой

это C --- простой?

и его мало.

тривиальные elisp конструкции разворачиваются в сильно дохера c-кода.

ковырятся в цепочках (екаранный-бабай (какаятострока ' ващехерпроссышьаббревиатура)) для того чтобы скажем ковыряться в файлах с несложной структурой - для меня как то странно.

ну да, традиционное екаранный-бабай(какаятострока(ващехерпроссышьаббревиатура)) гораздо понятьнее

Есть она в емаксе неналиспе? Неа.

и что?

Да никакого... бейсик там... бейсик

Месье изволит выражаться загадками.

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

Конечно, emacs не удобно использовать, если тыкать в клаву одним пальцем, но ведь печатать можно используя несколько пальцев сразу.

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

>>единственный недостаток фара упирается в ось - необходимость жать Alt+F1 и Alt+F2 для выбора диска

В патченном mc показываются точки монтирования. В Far под Linux это сделать не проблема.

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

> всё же хотелось бы пример, чего emacs не умеет.

Трудно говорить, у них несколько разные, ээээ, парадигмы. Мне понравилось там «управление проектом» а-ля минималистичная IDE, то же самое в емаксе, думаю, к 24-й версии только сделают на уровне (http://piranha.org.ua/blog/2010/03/28/project-root/).

> все, что попадает под категорию «функции текстового редактора»


а чем же он тогда выделяется из сонма других убогих текстовых редакторов, коих понаписали уже дофига штук?


Тем, что он _очень_ хорошо интегрирован в макось и использует как ее графические плюшки в плане UI, так и ее юниксовую сторону (то бишь, например, можно создать команду, по которой либо список открытых файлов, либо текущий файл, либо выделенный фрагмент текста будет подан на вход любой внешней программе, а результат будет впаян обратно). Еще им можно управлять через AppleScript — значит, куча готовых программ, манипулирующих другими программами, будут с ним работать.

Нечто среднее между Textedit и XCode, короче.

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

> А почему именно он?

Он интуитивен и большинство действий характерных для текстового редактора в нем присутствуют из каробки. Большего от редактора не требуется.

что такое проект?

Набор файлов изменяемых для выполнения конечной задачи.

Хочется поясняющий пример,

Веб приложение - (магазин/типаCRM/еще какая приблуда) тут и кодинг (php/java/python/а иногда вперемешку). ХЗ какой индус как что писал и какой допиливал и что в конечном итоге хочет клиент. Можно долго ковырять html/css извращаясь в художествах или переписывать чьи-то закидоны в коде (добавляя свои закидоны). Здесь больше нужна голова и простой послушный инструмент. А не головоломко-пальцеломка.

это C --- простой?

Причем тут С? Где это скриптинг на С?

тривиальные elisp конструкции разворачиваются в сильно дохера c-кода.

Человеческая мысль «а не сходить ли поссать» - разворачивается в дохера elisp-кода и к чему это?

Месье изволит выражаться загадками.

Emacs был написан функциональщиком с охренительно большим кол-вом свободного времени. Легко догадаться что было использовано для скриптинга.

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

>>Обращаю внимание на -e, --encoding <name> Кодировка открываемого файла. Т.е. даже исходники править не надо. Hint: enca

Сенсация! В новом kate добавлена возможность автоопределения кодировки файла. Она заключается в ключе -e, через который пользователю нужно вручную указать кодировку. Таким образом, kate абсолютно автоматически определяет кодировку.

:)

alex_custov ★★★★★
()
Ответ на: Впечатление от anonymous_sama

> Нулевое, запускается долго и почему-то ничего не работает, конечно можно все свалить на wine.

Да, у меня тоже не работало, пока не обновил wine.

Но я очень хотел, и потому зашел на офицальный сайт, взял *.deb для дебиана, установил, и теперь у меня есть прелестный текстовый редактор.

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

изгибать руки в десяти направлениях сразу в любом случае не удобно.

NekoExMachina
()
Ответ на: комментарий от Lockywolf

> Вообще, меня очень радует трэд. 40 лет Юниксу, а человеческого текстового редактора для админа нету. Для прогера есть, а для админа нету.

есть. ви(м). очень удачный редактор, особенно для админа

val-amart ★★★★★
()
Ответ на: комментарий от val-amart

особенно для админа

+1, отдельное спасибо авторам за нормальную работу на медленных линиях. Хоть я и не админ, но как-то приходилось для суппорта своего проекта править конфиги в Грузии через GSM из Украины. Даже не представляю, что бы я делал без вима, изучал бы ed наверное :-).

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

> но ведь печатать можно используя несколько пальцев сразу.

А можно и без емакса.

Пример. Проект на qt4 - открываем в емаксе. Ага куюшки автодополнение. Натыкаемся кажется на единственный мануал по дружбе емакса и кутей от Алекса Отта (настырный видать товарищ). Делаем по мануалу - куюшки автодополнение. Версии староваты (дебиан). Ниче подключаем сторонний репозитарий ставим свежак. Скачиваем свежий цедет - куюшки автодополнение. Ковыряем мануал по цедет (уже порядком подза...авшись играццо в переустановочки - время не резиновое). Ага настраиваем - автодополнение на уровне вима с сископом и ситагсом (ага вот радость то после стольких телодвижений), еще чуть чуть ковыряем - все приплыли - при попытке автодополнения фриз всего редактора (мегакомбайн для честно мультизадачной операционки висит) Он когда кстати от кривых скриптов умирать перестанет? В каком году? Или таки грамотно спроектировать инструмент повседневного пользование это не мозоли с пяток жрать? Запускаем нетбинс. Да сожрала всю оперативу. Да стартовала как асфальтоукладчик на педальной тяге. Но просто показали ей - «инклюды здесь, работать!» - И все работает. Без чтения мануалов. Без ковыряний конфигов. Честное автодополнение, подсветка и остальные плюшки. Просто делаем работу и все. Странно правда?

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

куюшки автодополнение
Да сожрала всю оперативу. Да стартовала как асфальтоукладчик на педальной тяге

Это называется свобода выбора.

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

Сенсация! В новом kate добавлена возможность автоопределения кодировки файла. Она заключается в ключе -e, через который пользователю нужно вручную указать кодировку. Таким образом, kate абсолютно автоматически определяет кодировку.

Еще один неосилятор :-)

Кодировку предлагалось определять при помощи enca и передавать ее kate при помощи того самого параметра вообще-то.

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

это называется отсутствие автоопределения кодировки. В отличие от far, в котором это уже 100 лет без костылей типа -e

alex_custov ★★★★★
()

Про вертикальный блок и буфер обмена Х Window

Не емакс конечно (я не пытался осилить, как-то необходимости не было, хотя надо бы :) ).
В X Window и OS X у меня вертикальное выделение и копирование в общий буфер обмена отлично работает в gvim/macvim. Если надо - скринкаст запишу.

Через curses естественно так работать не будет (и это правильно - не хватало еще чтобы vi(m) на серверах за собой Х либы тянул для копи-пейста, и залипал на операциях с буфером при включенном Х forwarding :) ) - ну дык твой редактор от фара тоже не через curses ни фига.
По-моему все-таки имеет смысл выучить редактор, описанный в стандарте (плюс расширения специфичные для vim), и не мучать себе мозг...

По поводу ремаппинга ^q - а что будет делать уважаемый автор, если случайно нажмет (по привычке) в терминале ^s (например желая сохранить файл :) ) ?

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

>Это называется отсутствие автоопределения кодировки. В отличие от far, в котором это уже 100 лет без костылей типа -e

Такой подход называется Unix-way, но пользователям Far в Windows конечно он незнаком, наверное :-)

ef37 ★★
()

> По-моему все-таки имеет смысл выучить редактор, описанный в стандарте (плюс расширения специфичные для vim), и не мучать себе мозг...

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


По поводу ремаппинга ^q - а что будет делать уважаемый автор, если случайно нажмет (по привычке) в терминале ^s (например желая сохранить файл :) ) ?


Во-первых, файл я сохраняю по F2.

Во-вторых, количество опрераций копипаста и сохранения файла различаются в разы.

В-третьих, щас специально нажимал в терминале Ctrl+S - ничего не происходит.

xintrea
() автор топика

> В X Window и OS X у меня вертикальное выделение и копирование в общий буфер обмена отлично работает в gvim/macvim. Если надо - скринкаст запишу.

Я и не сомневался. Emacs в иксовом режиме тоже в буфер копирует. А в консольном - хренушки.

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

>Unix-way в этом случае - объеденить несколько утилит в одном месте, как это делает Far

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

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

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

> А можно и без емакса.

Подтверждаю. Можно. cat, echo, head и tail достаточно для редактирования текста. Но с emacs'ом это как-то удобнее.

Проект на qt4 - открываем в емаксе.

Xrefactory спасёт отца русской демократии.

при попытке автодополнения фриз всего редактора

а вот это действительно серьёзная проблема

Он когда кстати от кривых скриптов умирать перестанет?

Не знаю. У меня ни разу не умирал.

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

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

нет.

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

> А в консольном - хренушки.

можно полюбопытствовать в чём великий смысл запуска в Х11 emacs в консольном режиме?

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

>> А в консольном - хренушки.

настрой в терминали копирование тогда


И что ты будешь копировать в буфер, если текст длиннее окна терминала? По кусочкам копировать?

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

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

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