vim? nano? emacs? mcedit? JOE! Текстовый редактор JOE...

Пример внешнего вида редактора joeПостоянно вижу в сети холивары на тему vim vs emacs vs nano vs ещё что-нибудь, но в этих святых войнах никогда не видел упоминание редактора JOE. Сей недостаток холиваров я и хочу этой своей заметкой исправить познакомив своих читателей с простым, но вполне годным консольным текстовым редактором.

JOE — Joe's own editor (собственный редактор Джо, видимо Джо как и многие юниксоиды любитель рекурсивных акронимов). Он наверняка есть в репозитории вашего дистрибутива, и не смотря на то что о нем почему-то редко можно где-то в русскоязычной сети услышать он всё же продолжает развиваться.

Примечательной особенностью JOE является возможность эмулировать другие редакторы. Вот выдержка из экранной документации aka man
JOE также эмулирует несколько других редакторов. JSTAR - это имитация WordStar со многими расширениями JOE. JPICO - имитация текстового редактора PICO, используемого в почтовой системе PINE, но со многими расширениями и улучшениями. JMACS - это имитация GNU-EMACS. JICE - настроенный на использование функциональной клавиатуры в традиционном PC-стиле редактор, рекомендуемый для использования в комплексе программ бухучета iceB. RJOE - урезанная версия JOE, которая позволяет редактировать только файлы, указанные в командной строке.
(pico это именно то что хотел клонировать редактор nano, т.е. перейти с nano на jpico должно быть не трудно)
Не хочется копировать сюда man, который, кстати, полностью переведен на русский язык, поэтому я всего лишь опишу основные возможности и скажу пару слов и своих мыслей по поводу редактора.

Начнем, пожалуй, с основных возможностей:
  • Поддержка UTF-8 и возможность смены кодировок с автоопределением выбираемого файла (с cp1251 были проблемы и приходслось иногда выбирать его в меню, но с тех пор файлы с этой кодировкой мне не попадались)
  • Подсветка синтаксиса (на данный момент в комплекте уже имеются файлы для подсветки 4gl, ada, asm, awk, c, cobol, conf, csh, css, diff, fortran, haskell, html, java, joerc, jsf_check, jsf, lisp, lua, m4, mail, mason, matlab, ocaml, pascal, perl, php, ps, python, rexx, ruby, sed, sh, skill, sml, spec, sql, tcl, tex, troff, verilog, vhdl, xml, ну и свои создовать никто не запрещает)
  • Редактирование нескольких файлов одновременно с возможностью разбивки экрана на регионы аля gnu screen
  • Макросы (метакоманды) благодаря чему появляется некоторая расширяемость функций редактирования
  • Редактирование файлов размером больше чем оперативная память.
  • Копирование/вставка блоков
  • Режим для рисования ASCII графики
  • Неограниченное Undo/Redo
  • Что-то похожее на автокомплит
  • Меню настроек, т.е. настройки редактора можно задавать не только с помощью параметров командной строки или файла конфигураций, но и интерактивно. В меню можно изменить не только настройки но и выбрать кодировку или подсветку, перейти в режим hex-редактора и прочее
  • Полная настройка горячих клавиш
  • Поддержка мыши
  • Интересно организованная справка (о ней ниже)
  • Переход к строке, пометке
  • Возможность компиляции прямо из редактора
  • Поиск/замена с использованием регулярных выражений
  • Работа на большинстве Unix-подобных систем (в том числе Mac OS X и BeOS), а по слухам его можно собрать для Windows и даже для DOS
И много чего ещё...

Пример автокомплита в joeПри запуске редактора joe с дефолтными конфигами вверху мы видим статусную строку — в ней же справа мы видим надпись Ctrl-K H for help, т.е. для вызова справки надо нажать ^+K и H. Справка до ужаса проста и похожа на то что можно видеть в редакторе nano при его запуске, но в joe она сверху и уже многоэкранная — пролистывать можно с помощь Meta+. и Meta+,. В справке описаны все хоткеи, помощь по поиску/замене, команды и прочее. Скрывается справка тем же сочетанием клавиш что и открывается. Стоит заметить что самая полная справка в joe по-умолчанию, без эмуляции типа jmacs, ибо именно в файле конфигурации и прописана сама справка....

Полный список функций и особенности управление самим редактором можно найти в man'e, а сдесь же я просто скажу о паре достоинств для меня.

Конечно же главное достоинство joe это вовсе не функционал (хотя он весьма и весьма не беден), а кажущаяся простота и относительная легкость освоения. По легкости освоения он, естественно, уступает меню-ориентированным текстовым редакторам, однако быстрота выполнения основных операций по редактированию текста оставит такие редакторы далеко позади, собственно большинство командо-ориентированных редакторов это делают (правда для этого надо определенные навыки работы с ними, но c joe сие достигается достаточно быстро).
Ну и не стоит забывать о настраиваимости. Настраивается всё — каждая настройка может быть изменена не только в конфиге, но и с помощью параметров командной строки, а так же большинство из них может быть изменено уже в запущенном joe с помощью меню. Так же при недостатке уже встроенных комманд по управлению текстом можно создать свои команды и макросы, к примеру, готовые макросы для html есть на оффсайте. Клавишные комбинации можно менять как душе угодно абсолютно все, именно эта особенность и позволина эмулировать разные текстовые редакторы, т.е. запуская jmacs мы запускает тот же joe но указывая в качестве параметра файл с глобальными настройками jmacsrc в котором и описаны все настройки клавиатуры схожие с настройками emacs.

В общем хватит расхваливать, ведь лучше один раз попробывать да прочитать man.
Когда-то попробовал и я, и для меня сей чудный редактор тогда оказался идеальным в соотношении порог вхождения - функциональность - настраиваемость. В консоли использую именно его.
Этот заметка написана именно в joe
PS Изначально хотел написать немного технических аспектов и небольшое руководство по началу использования, но за меня это сделал Алексей Федорчук в далеком 2002 году. Причем сделал это замечательно и его заметка до сих пор остается неплохой вводной (хотя немного и устаревшей). Правда благодаря русскому man'у многим теперь она покажется бесполезной, но именно такая подача информации лично мне ближе чем сухость официального мануала. В итоге вместо вводной по использованию у меня получилась просто ода joe и его реклама =) а рекламы ему действительно не хватает.
cray 10-10-2010
Неплохо, но я как-то все на vi, да на vi
Гость 10-10-2010
>неконсистентных монстров типа vim

есть же vi

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

Да и в коробке на удаленном серваке vi есть в 99% случаев, в отличие от. А локально я уже в комфортном и настроенном под себя емаксе редактирую.
muhas 10-10-2010
Старался что бы не было холиваров, но не получилось...

> есть же vi
есть ed, есть sed и много чего... я писал про joe, который, кстати, никто не запрещает поставить и на удаленный сервак ;)
Rost 10-10-2010
Мои иностранные коллеги почти каждый второй его (Joe) используют!
muhas 10-10-2010
@Rost странно почему на руси о нем мало кто знает и мало кто пользует. хочется как-то исправить это — редактор-то чудный
Гость 10-10-2010
>Старался что бы не было холиваров
тогда нужно было просто описать редактор, без упоминания "убогих и неконсистентных монстров"
>есть sed
если есть возможность - пользуюсь и им, отличный инструмент
>никто не запрещает поставить и на удаленный сервак
как раз таки иногда запрещает. А еще бывают машины без интернета.
phil 10-10-2010
Пользовался joe, когда не смог осилить емакс в первый раз.

Может vi и неконсистентный (плохо его знаю), а вот emacs в этом обвинить никак нельзя - видимо, автор его недостаточно использовал, раз так утверждает.
ixti 10-10-2010
При всём уважении, muhas, но я также должен согласиться с предыдущими ораторами, что про "достаточно неконсистентных монстров типа vim/emacs" это был достаточно субъективная точка зрения попахивающая началом священной войны! ;))

От себя могу добавить то, что лично я однажды привык к vim и теперь честное слово чувствую себя очень не комфортно в других редакторах, пусть они хоть сколько удобны третьим лицам. Пробовал joe но после vim'а просто не понравилось. Да, порог вхождения в vim заметно выше. Но и выхода порог тоже получается не низкий ;))
muhas 10-10-2010
> достаточно неконсистентных монстров типа vim/emacs
ейбогу, я не хотел оскорбить чуства вимеров и емаксеров. эта строка про убогий(в плане возможностей) nano и неконсистентные(в плане единообразия модели выполнения команд) emacs(vim) есть сугубо субьективная(как собственно и большинство записей в этом блоге), причем как вы должны понимать я не вимер и не емаксер (несмотря на то что оба иногда использую) и знаю их достаточно плохо, поэтому сколь-нибудь объективно в этом плане не могу судить - вот такое вот личное мнение сложилось о вим и емакс по поводу единообразия... по поводу монструозности думаю никто не против ведь размер на жестком диске говорит сам за себя
Если у кого-то другое о них мнение то я только за

Может удалить или заменить эту строк? (на мое мнение её наличие или отсутствие не влияетя=))

>Да, порог вхождения в vim заметно выше. Но и выхода порог тоже получается не низкий ;))
это наверное главное достоинство но и главная проблема командно-ориентированных редакторов с достаточной функциональностью =) если к ним привыкаешь то заменить их уже очень трудно ибо часто используемые команды доводятся до автоматизма

> как раз таки иногда запрещает.
бывает если сервера чужие или размер на их диске крайне мал, а бывает и windows сервера где и vi нету =)

>А еще бывают машины без интернета.
это, имхо, к возможности установить на них программы мало имеет отношения
Вон 10-10-2010
Такие же пальцераздерающие хоткеи с контролом, как и в емаксе, лол.

А вообще — каждый дро^W^W тут всё очень субъективно. После vim очень трудно переключиться на редакторы с хоткеями на контроле: они кажутся неудобными и корявыми.

По поводу монстров тоже не соглашусь. Хоткеи в joe далеко не интуитивные.
muhas 10-10-2010
> Такие же пальцераздерающие хоткеи с контролом, как и в емаксе, лол
можешь и без контролов использовать, они полностью настраиваемы =)
Вон 10-10-2010
Так и в других редакторах всё настраивается.

> если к ним привыкаешь то заменить их уже очень трудно ибо часто используемые команды доводятся до автоматизма
Это вообще недостаток всего, чего угодно: если привык, и всё устраивает, то перейти на что-то другое уже сложно. И, думается мне, joe не исключение.
Вон 10-10-2010
Но спасибо за пост в любом случае: холивары холиварами, а редактор взял на заметку. Как-нибудь попробую поподробнее освоить.
muhas 10-10-2010
к сожалению не всего, а только то что 100% устраивает или доведена работа с этим до автоматизма

> Так и в других редакторах всё настраивается.
все ли хоткеи можно переопределить в том же vim/emacs/geany/gedit/kate?
codedot 10-10-2010
В POSIX есть только один экранный текстовый редактор, и это vi(1).


muhas 10-10-2010
так и vim,emacs,bash,zsh тоже не POSIX =)
просто vi есть всегда в posix системах
Johnny 10-10-2010
Лично мой ненавязываемый выбор - mcedit :) И vi - для открытия больших файлов, ибо кроме него какой-нить лог на пару сотен метров больше никто открыть не может. Здесь никакого упоминания про открытие файлов большого размера не нашел...
Вон 10-10-2010
> все ли хоткеи можно переопределить в том же vim/emacs/geany/gedit/kate?
Трудно сказать. В виме базовые хоткеи навигации точно можно заменить (находятся кадры, которые меняют hjkl на jkl;), насчёт команд не уверен.

emacs не осилил (всё те же пальцераздирающие хоткеи с контролом). Gedit и kate (главным образом последний: в нём удобно переключать кодировки) использую только для того, чтобы читать оказавшиеся в домашнем каталоге текстовые файлы.
codedot 10-10-2010
VIM — самая популярная реализация vi(1). Bash — самая популярная реализация sh(1). Как и любая реализация чего-либо, это не только выполнение требований стандарта, но и добавление дополнительных опций. А вот emacs(1) и zsh(1) с позиксом несовместимы.
muhas 10-10-2010
@Johnny> ненавязываемый выбор
хорошо сказано, а то я свой выбор немного всё же навязываю =) надо немного подредактировать пост дабы навясчивость убрать

по поводу больших файлов не знаю, обычно у меня логи не более метров десяти, с ними joe справляется так же как и с файлами в килобайт. вроде в описании на оффсайте есть "Swap file allows editing files larger than memory"

@codedot>Bash — самая популярная реализация sh(1)
пожалуй если заставить всех писать на баше без башизмов то я даже соглашусь, а так буду думать про какой-нить dash или bash --posix

ps. отредактировал пост немножко (убрал что сходу заметил от холиваров подальше, и добавил немного возможностей - режим рисования, ундо/редо и файлы большого размер)
Johnny 10-10-2010
@muhas> все ли хоткеи можно переопределить в том же vim/emacs/geany/gedit/kate?
Так статья же вроде про консольные едиторы...
Если начать обсуждать гуёвые, то флуд еще на десяток страниц разойдется
muhas 10-10-2010
@Johnny да, просто я отметил полную настраиваемость клавиш как достоинство, в том же mcedit до недавнего времени об это не задумывались (хорошо что взялись вновь развивать mc)

а вообще я гляжу в линуксе у многих текстовый редактор и файловый менеджер это больные темы =)
Вон 10-10-2010
> а вообще я гляжу в линуксе у многих текстовый редактор и файловый менеджер это больные темы =)
Ну так наиболее часто используемый софт же. Можно ещё на тему аудиопроигрывателей порассуждать и похоливарить. ;)
codedot 10-10-2010
Я вообще-то на Mac OS X, которая-таки POSIX, в отличие от GNU/Linux.

>@codedot>Bash — самая популярная реализация sh(1)
>пожалуй если заставить всех писать на баше без башизмов то я даже соглашусь

...А если не заставить, то не согласитесь? Еще раз, реализация не обязана ограничиваться стандартом, она обязана его поддерживать.
muhas 10-10-2010
> Еще раз, реализация не обязана ограничиваться стандартом, она обязана его поддерживать.
если бы в тех же загрузочных скриптах был posix sh без закидонов (на памяти только debian)... а так я не против того что это posix, я против того что эти расширения слишком уж "помогают" писать не posix совместимые скрипты. отсюда и некоторый диссонанс между bash и posix sh
codedot 10-10-2010
Какие у Вас туманные представления об IEEE 1003.1, однако. «Implementation conformance» и «application conformance» — две разные вещи, причем второе имеет три варианта:

http://www.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap02.html
muhas 10-10-2010
да такие же самые представления, просто некоторый диссонанс именно на баше у меня возникает
sakal 10-10-2010
Можно ли в joe настроить подсветку текущей строки и текущего столбца?
muhas 10-10-2010
@sakal судя по ману нельзя, но не берусь утверждать
Прохожий 10-10-2010
>если к ним привыкаешь то заменить их уже очень трудно ибо часто используемые команды доводятся до автоматизма

а зачем менять?

>После vim очень трудно переключиться на редакторы с хоткеями на контроле: они кажутся неудобными и корявыми.

viper/vimpulse в руки и/или контрол на капс

>все ли хоткеи можно переопределить в том же vim/emacs/geany/gedit/kate?

в емаксе - 99.9%

и вообще, оценивать редактор по дефолтным хоткеям - глупо, надо на возможности смотреть, а тут емаксу равных нет

http://unix.rulez.org/~calver/pictures/curves.jpg

>ибо кроме него какой-нить лог на пару сотен метров больше никто открыть не может.

а зачем открывать логи в редакторе?
Тормоз 10-10-2010
Оценивать редактор по умолчальным настройкам в некоторых случаях вполне оправданно.
Человек, может, сразу работать хочет, а не тратить недели и месяцы на допиливание редактора.
muhas 10-10-2010
> а зачем менять?
лучшее враг хорошего =)

> а зачем открывать логи в редакторе?
как минимум на месте этого моего текста должен быть смайлик с нинзей хакерюгой. да и редакторы навигацию по тексты лучше всяких most/less/more обеспечивают - т.е. банально просматривать зачастую удобнее (даже в ro)

> Человек, может, сразу работать хочет, а не тратить недели и месяцы на допиливание редактора.
полностью согласен, я это тоже отношу к порогу вхождения
Прохожий 10-10-2010
>Человек, может, сразу работать хочет, а не тратить недели и месяцы на допиливание редактора.

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


>да и редакторы навигацию по тексты лучше всяких most/less/more обеспечивают - т.е. банально просматривать зачастую удобнее (даже в ro)

хз, мне обычно с головой хватает awk/sed/grep/perl/$PAGER(обычно most)
muhas 10-10-2010
> опять же, по своему опыту, настройка происходит постепенно, практически фоном в процессе работы

а если сразу не знать возможностей о настройке редактора, то так же бибикалка и портилка текстов отворачивают надолго от vi(m)
по меньшей мере когда-то давно это произошло со мной...

> мне обычно
ты мне сейчас Ъ анонимуса напомнил в схожести с "я не пользую значит не нужно" =)
bolzamo 10-10-2010
> вверху мы видем мы видем статусную строку
Доставляет :)
muhas 10-10-2010
баден-баден, блин. fixed
@bolzamo ты, видимо, первый из комментаторов кто прочел полностью =)
diesel 10-10-2010
Помню joe из первых экспериментов со слакой: joe и jed. Они не бибикали, и ничего не портили, в отличии от "текстового редактора шесть". Правда мне тогда больше jed приглянулся.
mvuets 10-10-2010
Помню, какое-то время назад решил найти для себя альтернативный редактор (вместо vim-а). После осмотра десятка кандидатов остановился на jed и joe. В результате joe победил (: Но я так и не начал им пользоваться: наткнулся на какие-то ошибки, кажется. А когда увидел, что его поддержка и развитие давно прекратились, тслоа совсем грустно.
Пожалуй, я бы ставил joe там где сейчас ставят nano.
alv 10-10-2010
> его поддержка и развитие давно прекратились
А что в нём можно развивать? Подсветку синтаксиса добавили, поддрежку UTF добавили. Это же не проприетарный софт, к которому можно до бесконечности прикручивать сопелки, свистелки, перделки и кофе-в-постель-подавалки
mvuets 10-10-2010
alv, нет предела совершенству. Для начала поработать над ошибками: http://sourceforge.net/tracker/?group_id=23475&atid=378598 Потом есть TODO: http://joe-editor.hg.sourceforge.net/hgweb/joe-editor/joe-editor/file/tip/joe/TODO
Смотрю, недавно автор Joseph Allen вносил какие-то изменения: http://joe-editor.hg.sourceforge.net/hgweb/joe-editor/joe-editor/summary Жаль активность прекратилась также внезапно как и появилась.
Тормоз 10-10-2010
Mvuets, редко такое бывает, чтобы человек хотел променять Vim на что-то другое :) Что именно побудило к поиску альтернативы, если не секрет? Что не нравилось (или не нравится)?

Muhas, что-то у тебя отписка от комментариев не работает.
muhas 10-10-2010
странно, я вроде в репозитории гляжу joe нет нет да и обновиться (крайне редко но за последние пару лет вроде пару раз обновлялся)

@Тормоз, да вроде работало. стукни в будни на jabber если не лень
Тормоз 10-10-2010
Не то чтобы лень, но...
http://brokenbrake.biz/2008/09/16/icq.html

В общем, я тебе сообщил, тебе проблема известна.
Сейчас ещё раз попробовал отписаться, если не придут уведомления - зайду сюда глянуть ещё в течение суток. Ну а если придут, значит не работает у тебя отписка, разбирайся.
Тормоз 10-10-2010
И ещё косяк, форма не помнит мои желания. Я вот отписался от комментов, а флажок "подписаться" всё равно стоит.
alv 10-10-2010
2 mvuets
> нет предела совершенству
В опенсорсе - есть. Существует много утилит, которые совершенствовать сами по себе уже некуда. Только добавлять новые фичи, которые а) не обязательно нужны и б) могут безнадёжно испортить оригинал.
В Joe можно было бы добавить всяко разного - но тогда он перестанет быть нашим joe, а превратиться в ухудшенный vim или emacs. Оно нам надо?
Мы (как я понимаю, кроме меня это ещё как минимум автор этого блога :) ) любим его таким, каков он есть: легким, быстрым, простым в освоении и обращении - в том числе и для совсем некомпьютерных пользователей.
А на предмет расширения функционала - есть макросы, которые каждому легко сделать индивидуально, под свои конкретные задачи.
mvuets 10-10-2010
Тормоз, повзрослел я. Надоело конфигурировать-конфигурировать-конфигурировать... (: Что именно в виме раздражает я уже забыл --- прошло около 14 месяцев с тех пор, я смирился.

alv, не нужно кофе в постель. Нужно улучшить user experience существующего ф-нала, исправить баги, поддерживать актуальность jsf файлов.
Тормоз 10-10-2010
Mvyets, а зачем постоянно конфигурировать-то? :) Я вот последний раз недавно внёс изменения в .vimrc, всего лишь две полезные строчки (http://brokenbrake.biz/2010/10/18/Vim-Color-Picker), а до этого месяца два или три просто пользовался. Странно.

Muhas, отписка сработала! Видимо, какой-то временный глюк был.
John 10-11-2010
joe - мой любимый редактор с 1994 года. vi я тоже могу, от безысходности, но без joe я как без рук :)