Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
wiki:joe [2010/07/30 20:59] |
wiki:joe [2010/07/30 21:36] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ======Текстовый редактор joe ====== | + | ======Редактор joe ====== |
+ | <style right> | ||
//Автор: Алексей Федорчук | //Автор: Алексей Федорчук | ||
2001-2002 гг // | 2001-2002 гг // | ||
+ | </style> | ||
+ | |||
+ | {{:wiki:joe.png?350 }} | ||
+ | |||
Эта статья была написана достаточно давно, по данным для joe версий 2.8.X-2.9.X. До недавнего времени ее нельзя было считать устаревшей, так как проект joe практически не развивался. Однако последнее время в нем наметилась определенная активность, ознаменовавшаяся выходом версий серии 3.X. Которые привнесли, кроме нескольких мелких усовершенствований, два кардинальных новшества - подсветку синтаксиса и возможность работы с кодировкой UTF-8. В результате чего исходно хороший редактор стал еще лучше... | Эта статья была написана достаточно давно, по данным для joe версий 2.8.X-2.9.X. До недавнего времени ее нельзя было считать устаревшей, так как проект joe практически не развивался. Однако последнее время в нем наметилась определенная активность, ознаменовавшаяся выходом версий серии 3.X. Которые привнесли, кроме нескольких мелких усовершенствований, два кардинальных новшества - подсветку синтаксиса и возможность работы с кодировкой UTF-8. В результате чего исходно хороший редактор стал еще лучше... | ||
**Текстовый редактор joe** - типичный представитель консольных редакторов командного стиля, то есть ориентированных не на действие через меню, а на управление с помощью прямых директив. Название его можно перевести примерно как "редактор дядюшки Джо". Он создан Джозефом Алленом (Joseph H. Allen) при участии Ларри Форда (Larry Foard) и Гари Грея (Gary Gray). Это - открытая и бесплатная программа, доступная в исходниках на http://joe.sourceforge.net. Она реализована для всех, насколько я знаю, Unix- и Unix-подобных систем. А некоторые конкретные врсии были собраны для Windows всякого рода и даже для DOS. | **Текстовый редактор joe** - типичный представитель консольных редакторов командного стиля, то есть ориентированных не на действие через меню, а на управление с помощью прямых директив. Название его можно перевести примерно как "редактор дядюшки Джо". Он создан Джозефом Алленом (Joseph H. Allen) при участии Ларри Форда (Larry Foard) и Гари Грея (Gary Gray). Это - открытая и бесплатная программа, доступная в исходниках на http://joe.sourceforge.net. Она реализована для всех, насколько я знаю, Unix- и Unix-подобных систем. А некоторые конкретные врсии были собраны для Windows всякого рода и даже для DOS. | ||
Строка 34: | Строка 39: | ||
Таковы возможности справочной системы joe по умолчанию. Как будет показано ниже, пользователь может не только изменять имеющиеся секции, но и создавать собственные, в любом количестве и для любых целей. | Таковы возможности справочной системы joe по умолчанию. Как будет показано ниже, пользователь может не только изменять имеющиеся секции, но и создавать собственные, в любом количестве и для любых целей. | ||
Если мне удалось убедить читателя, что joe - вещь стоящая, имеет смысл подробнее ознакомиться с его характерными особенностями. | Если мне удалось убедить читателя, что joe - вещь стоящая, имеет смысл подробнее ознакомиться с его характерными особенностями. | ||
- | |||
=====Характерные особенности ===== | =====Характерные особенности ===== | ||
Для эффективного использования joe следует четко уяснить, что это - командный редактор в чистом виде. То есть все действия по редактированию текста осуществляются соответствующими встроенными командами, к которым привязаны комбинации клавиш. В сущности, как будет показано ниже, это - макросы на собственном языке **joe**. Из чего следует, что, с одной стороны, система команд может быть сколь угодно наращена, с другой - что клавишные комбинации для них могут быть переопределены произвольным образом. | Для эффективного использования joe следует четко уяснить, что это - командный редактор в чистом виде. То есть все действия по редактированию текста осуществляются соответствующими встроенными командами, к которым привязаны комбинации клавиш. В сущности, как будет показано ниже, это - макросы на собственном языке **joe**. Из чего следует, что, с одной стороны, система команд может быть сколь угодно наращена, с другой - что клавишные комбинации для них могут быть переопределены произвольным образом. | ||
Строка 41: | Строка 45: | ||
Здесь же я приведу только основные примеры. | Здесь же я приведу только основные примеры. | ||
- | **Комбинация Control+B (от backward) перемещает курсор на один знак влево, | + | * **Комбинация Control+B** (от backward) перемещает курсор на один знак влево, |
- | Control+F (от forward) - на один знак вправо, | + | * **Control+F** (от forward) - на один знак вправо, |
- | Control+Z - переход к предыдущему слову, | + | * **Control+Z** - переход к предыдущему слову, |
- | Control+X - к последующему слову, и так далее. ** | + | * **Control+X** - к последующему слову, и так далее. |
В некоторых случаях в качестве управляющей клавиши используется клавиша Meta (напомню, что ее эквивалент - нажатие и отпускание клавиши Escape): если в комбинации | В некоторых случаях в качестве управляющей клавиши используется клавиша Meta (напомню, что ее эквивалент - нажатие и отпускание клавиши Escape): если в комбинации | ||
- | **Meta+W - курсор переместится на строку вверх, | + | * **Meta+W** - курсор переместится на строку вверх, |
- | Meta+Z - на строку вниз.** | + | * **Meta+Z** - на строку вниз. |
Кроме того, Meta служит для вызова проверки правописания для слова (Meta+N) и всего файла (Meta+L). Нажатие клавиши Meta два раза подряд приводит к установке закладки (bookmark), которая маркируется произвольной цифрой, а Meta+# (где # - эта самая цифра) вызывает переход к установленной закладке. Правда, очевидно, что закладок не может быть больше 10; и к тому же по завершении сеанса они не сохраняются. | Кроме того, Meta служит для вызова проверки правописания для слова (Meta+N) и всего файла (Meta+L). Нажатие клавиши Meta два раза подряд приводит к установке закладки (bookmark), которая маркируется произвольной цифрой, а Meta+# (где # - эта самая цифра) вызывает переход к установленной закладке. Правда, очевидно, что закладок не может быть больше 10; и к тому же по завершении сеанса они не сохраняются. | ||
- | Все клавишные комбинации в joe не чувствительны к регистру, причем не только для буквенных, но и символьных клавиш. Так, для отмены последней операции (как уже говорилось, многоуровневой) зарезервирована комбинация | + | Все клавишные комбинации в joe не чувствительны к регистру, причем не только для буквенных, но и символьных клавиш. Так, для отмены последней операции (как уже говорилось, многоуровневой) зарезервирована комбинация **Control+_** (знак подчеркивания), а для возврата отмененного действия — **Control+^** oднако в первом случае работает также комбинация **Control+-** (дефис или минус), во втором - **Control+6**. |
- | + | Кроме того, все двухклавишные комбинации не чувствительны и к раскладке клавиатуры: сочетание клавиш, например, **Control+T** будет вызывать систему настройки joe и при кириллической раскладке. Интересно, что для пролистывания страниц помощи вперед и назад при кириллической раскладке следует нажимать Escape и точку (или, соответственно, запятую) также в ее положении на русифицированной клавиатуре (то есть в нижнем правом углу для Windows-клавиатур и на верхнем регистре цифр 5 и 7, если мне не изменяет память, - для клавиатур с DOS-маркировкой). | |
- | **Control+_ (знак подчеркивания), а для возврата отмененного действия — Control+^;** | + | Для более сложных или редких действий используются трехклавишные комбинации. Это почти исключительно одновременно нажатые **Control+K**, после чего нажимается литерная клавиша. Так, операции с блоками осуществляются следующим образом: |
- | однако в первом случае работает также комбинация Control+- (дефис или минус), во втором - Control+6. | + | |
- | Кроме того, все двухклавишные комбинации не чувствительны и к раскладке клавиатуры: сочетание клавиш, например, Control+T будет вызывать систему настройки joe и при кириллической раскладке. Интересно, что для пролистывания страниц помощи вперед и назад при кириллической раскладке следует нажимать Escape и точку (или, соответственно, запятую) также в ее положении на русифицированной клавиатуре (то есть в нижнем правом углу для Windows-клавиатур и на верхнем регистре цифр 5 и 7, если мне не изменяет память, - для клавиатур с DOS-маркировкой). | + | |
- | Для более сложных или редких действий используются трехклавишные комбинации. Это почти исключительно одновременно нажатые Control+K, после чего нажимается литерная клавиша. Так, операции с блоками осуществляются следующим образом: | + | |
**Control+K - B отмечает начало выделяемого блока, | **Control+K - B отмечает начало выделяемого блока, | ||
Строка 97: | Строка 98: | ||
Таковы основные возможности joe для редактирования текстов общего характера. Кроме этого, имеется ряд команд специального назначения, используемых при программировании (поиск ошибок, компилирование и проч.), однако их я за ненадобностью (мне) не изучал. | Таковы основные возможности joe для редактирования текстов общего характера. Кроме этого, имеется ряд команд специального назначения, используемых при программировании (поиск ошибок, компилирование и проч.), однако их я за ненадобностью (мне) не изучал. | ||
Однако и сказанного достаточно для представления возможностей редактора joe. | Однако и сказанного достаточно для представления возможностей редактора joe. | ||
+ | |||
=====Макрокоманды ===== | =====Макрокоманды ===== | ||
Если же штатных команд редактора joe оказывается недостаточно, можно прибегнуть к их самостоятельному конструированию. | Если же штатных команд редактора joe оказывается недостаточно, можно прибегнуть к их самостоятельному конструированию. | ||
Строка 157: | Строка 159: | ||
Это необходимо для правильного отображения символов кириллицы - иначе они будут показаны латинской транслитерацией. | Это необходимо для правильного отображения символов кириллицы - иначе они будут показаны латинской транслитерацией. | ||
- | Полезным представляется также установка опций: *-lightoff ** обеспечивающей выключение подсветки выделенного блока после его перемещения или копирования, - иначе выделение это будет маячить перед глазами; **-marking ** дающей подсветку текста между началом выделяемого блока и текущей позицией курсора. | + | Полезным представляется также установка опций: |
+ | * **-lightoff ** обеспечивающей выключение подсветки выделенного блока после его перемещения или копирования, - иначе выделение это будет маячить перед глазами; | ||
+ | * **-marking ** дающей подсветку текста между началом выделяемого блока и текущей позицией курсора. | ||
Можно отменить также создание страховых копий или, напротив, определить место для их помещения, отличное от исходных файлов. Это достигается включением опций **-nobackups ** или **-backpath path** соответственно. | Можно отменить также создание страховых копий или, напротив, определить место для их помещения, отличное от исходных файлов. Это достигается включением опций **-nobackups ** или **-backpath path** соответственно. | ||
Строка 166: | Строка 170: | ||
<code>-lmsg \i%k%T%W%I%X %n %m%R %M </code> | <code>-lmsg \i%k%T%W%I%X %n %m%R %M </code> | ||
указывает, что в левой части статусной строки в инвертированном виде (черным по белому, **\i** должны быть выведены | указывает, что в левой части статусной строки в инвертированном виде (черным по белому, **\i** должны быть выведены | ||
- | префиксные ключи**%k**, | + | * префиксные ключи **%k**, |
- | маркирующие включение режимов вставки/замены **%T**, | + | * маркирующие включение режимов вставки/замены **%T**, |
- | переноса слов (%W), | + | * переноса слов **%W**, |
- | автоотступа **%I**, | + | * автоотступа **%I**, |
- | прямоугольного выделения **%X; | + | * прямоугольного выделения **%X**; |
- | имя редактируемого файла **%n**; | + | * имя редактируемого файла **%n**; |
- | указание на модификацию файла **%m** | + | * указание на модификацию файла **%m** |
- | и на режим "только для чтения" **%R**; | + | * и на режим "только для чтения" **%R**; |
- | индикатор включения протоколирования макросов **%M** | + | * индикатор включения протоколирования макросов **%M** |
Строка же вида | Строка же вида | ||
<code>-rmsg Row %r Col %c %o %O %u </code> | <code>-rmsg Row %r Col %c %o %O %u </code> | ||
- | + | * выводит в правой части статусной линии номер текущей строки **Row %r** | |
- | + | * колонки **Col %c** файла, смещение от начала в байтах (в десятичной, **%o**, и шестнадцатеричной, **%O**, | |
- | выводит в правой части статусной линии номер текущей строки **Row %r** | + | * формах, системное время в 24-часовом формате **%u**. |
- | колонки **Col %c** файла, смещение от начала в байтах (в десятичной, **%o**, и шестнадцатеричной, **%O**, формах, | + | |
- | системное время в 24-часовом формате **%u**. | + | |
Возможен вывод и иной информации, как то: | Возможен вывод и иной информации, как то: | ||
системного времени в 12-часовом формате **%t**; | системного времени в 12-часовом формате **%t**; | ||
- | индикации измененного файла символом *; | + | индикации измененного файла символом *****; |
- | ASCII-кода символа под курсором в десятичной (%a) или шестнадцатеричной **%A** форме; | + | ASCII-кода символа под курсором |
- | процента просмотра файла до позиции курсора **%p**; | + | * в десятичной **%a** или |
- | общего количества строк в файле **%l**; | + | * шестнадцатеричной **%A** форме; |
- | индикации запуска встроенной оболочки **%S**. | + | * процента просмотра файла до позиции курсора **%p**; |
+ | * общего количества строк в файле **%l**; | ||
+ | * индикации запуска встроенной оболочки **%S**. | ||
Кроме того, внешний вид статусной строки можно изменить, придав ему, вместо или помимо инверсии, атрибуты | Кроме того, внешний вид статусной строки можно изменить, придав ему, вместо или помимо инверсии, атрибуты | ||
- | подчеркивания **\u**, | + | * подчеркивания **\u**, |
- | полужирного начертания **\b**, | + | * полужирного начертания **\b**, |
- | мерцания **\f**. | + | * мерцания **\f**. |
Вторая секция конфигурационного файла - это локальные опции, которые можно определить отдельно для файлов различных типов. Для этого в ее составе создаются субсекции вида | Вторая секция конфигурационного файла - это локальные опции, которые можно определить отдельно для файлов различных типов. Для этого в ее составе создаются субсекции вида | ||
* * все файлы | * * все файлы | ||
Строка 224: | Строка 228: | ||
Первый - возможность переопределения клавиатурных комбинаций, назначенных для штатных команд joe по умолчанию. Например, если вам не нравится, что пролистывание экрана осуществляется комбинациями | Первый - возможность переопределения клавиатурных комбинаций, назначенных для штатных команд joe по умолчанию. Например, если вам не нравится, что пролистывание экрана осуществляется комбинациями | ||
- | **Control+U** назад | + | * **Control+U** назад |
- | **Control+V* вперед | + | * **Control+V** вперед |
можно присвоить им иные значения (из числа свободных, разумеется). | можно присвоить им иные значения (из числа свободных, разумеется). | ||
Строка 237: | Строка 241: | ||
для спеллинга всего текста и отдельных слов, соответственно. Они просто описывают параметры вызова внешней программы проверки орфографии (по умолчанию - ispell). И подключение русского словаря при этом, разумеется, не предусмотрено. Чтобы осуществить это, следует просто добавить к обеим строкам после вызова исполнимой команды ispell опцию -d russian, в результате чего строки эти примут вид: | для спеллинга всего текста и отдельных слов, соответственно. Они просто описывают параметры вызова внешней программы проверки орфографии (по умолчанию - ispell). И подключение русского словаря при этом, разумеется, не предусмотрено. Чтобы осуществить это, следует просто добавить к обеим строкам после вызова исполнимой команды ispell опцию -d russian, в результате чего строки эти примут вид: | ||
- | <coide>:def spellfile filt,"cat >ispell.tmp;ispell -d russian ispell.tmp \ | + | <code> |
+ | :def spellfile filt,"cat >ispell.tmp;ispell -d russian ispell.tmp \ | ||
</dev/tty >/dev/tty;cat ispell.tmp;/bin/rm ispell.tmp",rtn,retype | </dev/tty >/dev/tty;cat ispell.tmp;/bin/rm ispell.tmp",rtn,retype | ||
:def spellword psh,nextword,markk,prevword,markb,filt,"cat \ | :def spellword psh,nextword,markk,prevword,markb,filt,"cat \ | ||
>ispell.tmp;ispell -d russian ispell.tmp </dev/tty >/dev/tty;tr -d | >ispell.tmp;ispell -d russian ispell.tmp </dev/tty >/dev/tty;tr -d | ||
- | \<ispell.tmp '\\012';/bin/rm ispell.tmp",rtn,retype,nextword </code> | + | \<ispell.tmp '\\012';/bin/rm ispell.tmp",rtn,retype,nextword |
+ | </code> | ||
Символы обратного слэша в конце строк означают только то, что каждая строка на самом деле не должна прерываться - вносить их в тело макроса не следует (нужно только позаботиться, чтобы опция переноса слов в редакторе была отключена). | Символы обратного слэша в конце строк означают только то, что каждая строка на самом деле не должна прерываться - вносить их в тело макроса не следует (нужно только позаботиться, чтобы опция переноса слов в редакторе была отключена). | ||
Дополнительные настройки | Дополнительные настройки | ||
- | В начале своего повествования я упоминал, что ныне (начиная с версии 3.0) в joe появилась возможность подсветки синтаксиса для ряда языков программирования и разметки. Чтобы ей воспользоваться, нужно, во-первых включить соответствующую опцию в конфигурационном файле **~/.joerc - она расположена в секции Default local options** и имеет вид | + | В начале своего повествования я упоминал, что ныне (начиная с версии 3.0) в joe появилась возможность подсветки синтаксиса для ряда языков программирования и разметки. Чтобы ей воспользоваться, нужно, во-первых включить соответствующую опцию в конфигурационном файле **~/.joerc** - она расположена в секции **Default local options** и имеет вид |
<code>-highlight </code> | <code>-highlight </code> | ||
- | Далее, требуются файлы описания цветов для синтаксических элементов различных языков. Примеры таких файлов расположены в /usr/local/etc/joe/synatx и охватывают языки Си (c.jsf), Assembler (asm.jsf), Fortran (fortran.jsf) и многие другие. Есть здесь и файлы описания языков командных оболочек (sh.jsf и csh.jsf), diff-файлов (diff.jsf), конфигов (conf.jsf), а также языков разметки (html.jsf и xml.jsf). Единственное, что остается с ними сделать - это отредактировать их в соовтетствие с предпочтительной цветовой гаммой (и, вероятно, сохранить в собственном домашнем каталоге под именами типа .html.jsf и так далее). | + | Далее, требуются файлы описания цветов для синтаксических элементов различных языков. Примеры таких файлов расположены в **/usr/local/etc/joe/synatx** и охватывают языки |
+ | |||
+ | * Си (c.jsf), | ||
+ | * Assembler (asm.jsf), | ||
+ | * Fortran (fortran.jsf) | ||
+ | * и многие другие. | ||
+ | |||
+ | Есть здесь и файлы описания языков | ||
+ | * командных оболочек (sh.jsf и csh.jsf), | ||
+ | * diff-файлов (diff.jsf), | ||
+ | * конфигов (conf.jsf), | ||
+ | * а также языков разметки (html.jsf и xml.jsf). | ||
+ | |||
+ | Единственное, что остается с ними сделать - это отредактировать их в соовтетствие с предпочтительной цветовой гаммой (и, вероятно, сохранить в собственном домашнем каталоге под именами типа .html.jsf и так далее). | ||
Наконец, последнее - это проверить соответствие файлов описаний в главном конфигурационном файле **~/.joerc**. По умолчанию в какждой языковой субсекции они указываются там в виде: | Наконец, последнее - это проверить соответствие файлов описаний в главном конфигурационном файле **~/.joerc**. По умолчанию в какждой языковой субсекции они указываются там в виде: | ||
Строка 380: | Строка 399: | ||
* Meta+M ввод регулярного выражения; | * Meta+M ввод регулярного выражения; | ||
* Meta+H отправка сообщения (нечто вроде команды write, но на одном и том же терминале). | * Meta+H отправка сообщения (нечто вроде команды write, но на одном и том же терминале). | ||
+ | |||
+ | ------------- | ||
+ | |||
+ | {{tag>howto Консоль Система Редакторы_текста}} | ||
+ |