Редактор joe Сравнение версий

Различия

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

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Следующая версия Следующая версия справа и слева
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 Консоль Система Редакторы_текста}}
 +