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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:joe [2010/07/30 21:12]
wiki:joe [2021/01/06 01: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**. Из чего следует,​ что, с одной стороны,​ система команд может быть сколь угодно наращена,​ с другой - что клавишные комбинации для них могут быть переопределены произвольным образом. ​
Строка 40: Строка 44:
 Полный список встроенных команд и привязанных к ним клавишных комбинаций дан в заключительном разделе этой статьи. ​ Полный список встроенных команд и привязанных к ним клавишных комбинаций дан в заключительном разделе этой статьи. ​
  
-Здесь же я приведу только основные примеры. ​ +Здесь же я приведу только основные примеры. Комбинация ​ 
-**Комбинация 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+K**,​ после чего нажимается литерная клавиша. Так, операции с блоками осуществляются следующим образом: ​
  
-**Control+_ (знак подчеркивания),​ а для возврата ​отмененного действия — Control+^;​** +  * **Control+K** - B отмечает начало выделяемого блока, ​ 
-однако в первом случае работает также комбинация Control+- (дефис или ​минус), во втором - Control+6.  +  * **Control+K** - K - его конец 
-Кроме того, все двухклавишные комбинации не чувствительны и к раскладке клавиатуры:​ сочетание ​клавиш, например, Control+T будет вызывать систему настройки joe и при кириллической раскладке. Интересночто для ​пролистывания страниц помощи вперед и назад при кириллической раскладке следует ​нажимать Escape и точку (илисоответственно,​ запятую) также в ее положении на русифицированной клавиатуре (то есть ​в нижнем правом углу ​для Windows-клавиатур и на верхнем регистре цифр 5 и 7, если мне не изменяет память,​ - для клавиатур с DOS-маркировкой).  +  * **Control+K** - C - копирует, ​ 
-Для ​более сложных или редких действий используются трехклавишные комбинации. Это почти исключительно одновременно нажатые Control+K, после чего нажимается литерная ​клавиша. Так, операции ​с блоками осуществляются следующим образом: ​+  * **Control+K** - M - перемещает выделенный блок в позицию курсора
  
-**Control+K - B отмечает начало выделяемого блока,  +и так далее. Трехклавишные комбинации также не чувствительны к регистру. И работают также и при кириллической раскладке клавиатуры. В этом случае только необходимо нажимать вторую литерную клавишу вместе с той же клавишей Control: то есть запись текущего файла при включении кириллической раскладки потребует комбинации ​**Control+K - Control+D**, вызов нового файла - **Control+K - Control+E**, и так далее. ​
- +
-Control+K - K - его конец,  +
- +
-Control+K - C - копирует,​  +
- +
-Control+K - M - перемещает выделенный блок в позицию курсора,​ ** +
- +
-и так далее. Трехклавишные комбинации также не чувствительны к регистру. И работают также и при кириллической раскладке клавиатуры. В этом случае только необходимо нажимать вторую литерную клавишу вместе с той же клавишей Control: то есть запись текущего файла при включении кириллической раскладки потребует комбинации Control+K - Control+D, вызов нового файла - Control+K - Control+E, и так далее. ​+
 В joe нет отдельной функции для переименования файла. Но при любой записи текущего документа следует запрос на подтверждение имени файла, изменить которое при этом никто не запрещает. Следует только помнить,​ что дальнейшая работа происходит с исходным,​ а не  В joe нет отдельной функции для переименования файла. Но при любой записи текущего документа следует запрос на подтверждение имени файла, изменить которое при этом никто не запрещает. Следует только помнить,​ что дальнейшая работа происходит с исходным,​ а не 
 переименованным файлом. ​ переименованным файлом. ​
 Кроме того, в joe доступны еще некоторые действия с файлами. Так, комбинация ​ Кроме того, в joe доступны еще некоторые действия с файлами. Так, комбинация ​
  
-**Control+K - R вставляет текст из существующего файла в позицию курсора,​  +  * **Control+K - R** вставляет текст из существующего файла в позицию курсора,​  
-Control+K - W - записывает выделенный блок в виде нового файла (разумеется,​ запросив предварительно его имя).  +  * **Control+K - W** - записывает выделенный блок в виде нового файла (разумеется,​ запросив предварительно его имя).  
-С помощью комбинации ​Control+K - E можно открыть для редактирования другой существующий файл. ​**+  * **Control+K - E** можно открыть для редактирования другой существующий файл.
  
 При этом следует предложение ввести путь и имя, причем и для того, и для другого работает режим дополнения клавишей табуляции,​ как в командных средах bash или tcsh.  При этом следует предложение ввести путь и имя, причем и для того, и для другого работает режим дополнения клавишей табуляции,​ как в командных средах bash или tcsh. 
 Между одновременно открытыми файлами возможен обмен данными:​ или с помощью команд joe (то есть выделением блока в первом файле и его копированием или перемещением во второй),​ или с помощью мыши - стандартным выделением и вставкой щелчком средней ее клавиши. Второй способ,​ естественно,​ может применяться и для обмена между разными копиями joe, запущенными на отдельных виртуальных консолях. ​ Между одновременно открытыми файлами возможен обмен данными:​ или с помощью команд joe (то есть выделением блока в первом файле и его копированием или перемещением во второй),​ или с помощью мыши - стандартным выделением и вставкой щелчком средней ее клавиши. Второй способ,​ естественно,​ может применяться и для обмена между разными копиями joe, запущенными на отдельных виртуальных консолях. ​
-Одновременно открытые файлы могут быть представлены как в полноэкранном виде, так и каждый в своем окне. Для переключения между однооконным и многооконным режимами служит комбинация **Control+K - I**. Размер каждого из выведенных окон может быть увеличен или уменьшен **(Control+K - G и Control+K - T, соответственно),​ правда,​ только с шагом в одну экранную строку. Переключение между открытыми документами,​ вне зависимости от режима,​ осуществляется комбинациями Control+K - N (вперед или вниз) и Control+K - P (назад или вверх).** +Одновременно открытые файлы могут быть представлены как в полноэкранном виде, так и каждый в своем окне. Для переключения между однооконным и многооконным режимами служит комбинация **Control+K - I**. Размер каждого из выведенных окон может быть увеличен или уменьшен **(Control+K - G** и **Control+K - T**, соответственно),​ правда,​ только с шагом в одну экранную строку. Переключение между открытыми документами,​ вне зависимости от режима,​ осуществляется комбинациями ​**Control+K - N** (вперед или вниз) и **Control+K - P** (назад или вверх).
 К слову сказать,​ в joe возможен и независимый просмотр разных частей документа в отдельных окнах, для чего предназначена функция расщепления окна (Control+K - O). Ну и, конечно же, фрагменты из одной части файла могут быть легко перенесены в другую. ​ К слову сказать,​ в joe возможен и независимый просмотр разных частей документа в отдельных окнах, для чего предназначена функция расщепления окна (Control+K - O). Ну и, конечно же, фрагменты из одной части файла могут быть легко перенесены в другую. ​
  
  
  
-====Универсальной комбинацией для окончания любой операции в joe является ​+Универсальной комбинацией для окончания любой операции в joe является ​
  
-Control+C. С ее помощью закрывается окно с текущим документом;​ если он был единственным в данном сеансе,​ одновременно происходит и выход из редактора. В обоих случаях следует запрос на сохранение изменений,​ буде таковые имелись. Отказаться от выхода или закрытия файла можно повторным нажатием той же комбинации Control+C. Она же используется для прекращения любой длящейся во времени (спеллинг,​ поиск) или требующей подтверждения операции. ​+**Control+C**. С ее помощью закрывается окно с текущим документом;​ если он был единственным в данном сеансе,​ одновременно происходит и выход из редактора. В обоих случаях следует запрос на сохранение изменений,​ буде таковые имелись. Отказаться от выхода или закрытия файла можно повторным нажатием той же комбинации Control+C. Она же используется для прекращения любой длящейся во времени (спеллинг,​ поиск) или требующей подтверждения операции. ​
 Кроме этого, непосредственно из joe, без выхода,​ можно обращаться к командам оболочки (shell), причем - различными способами. Так, комбинация **Control+K - Z** обеспечивает временный выход в оболочку,​ где можно вводить любые ее команды. А по завершении операций - вернуться в среду joe можно комбинацией fg. То есть в данном случае мы имеем дело с обычной приостановкой текущей задачи. ​ Кроме этого, непосредственно из joe, без выхода,​ можно обращаться к командам оболочки (shell), причем - различными способами. Так, комбинация **Control+K - Z** обеспечивает временный выход в оболочку,​ где можно вводить любые ее команды. А по завершении операций - вернуться в среду joe можно комбинацией fg. То есть в данном случае мы имеем дело с обычной приостановкой текущей задачи. ​
 Кроме этого, есть и более интересная возможность:​ открытие внутри joe, посредством комбинации **Control+K - '** (апостроф),​ самостоятельного окна с собственной командной оболочкой. Здесь можно выполнять любые команды с выводом их результатов на экран. После чего стандартной командой exit осуществляется выход из среды, а все результаты сохраняются обычным для joe образом в виде текстового файла: возможность неоценимая при создании и редактировании всякого рода скриптов. ​ Кроме этого, есть и более интересная возможность:​ открытие внутри joe, посредством комбинации **Control+K - '** (апостроф),​ самостоятельного окна с собственной командной оболочкой. Здесь можно выполнять любые команды с выводом их результатов на экран. После чего стандартной командой exit осуществляется выход из среды, а все результаты сохраняются обычным для joe образом в виде текстового файла: возможность неоценимая при создании и редактировании всякого рода скриптов. ​
Строка 97: Строка 95:
 Таковы основные возможности joe для редактирования текстов общего характера. Кроме этого, имеется ряд команд специального назначения,​ используемых при программировании (поиск ошибок,​ компилирование и проч.), однако их я за ненадобностью (мне) не изучал. ​ Таковы основные возможности joe для редактирования текстов общего характера. Кроме этого, имеется ряд команд специального назначения,​ используемых при программировании (поиск ошибок,​ компилирование и проч.), однако их я за ненадобностью (мне) не изучал. ​
 Однако и сказанного достаточно для представления возможностей редактора joe.  Однако и сказанного достаточно для представления возможностей редактора joe. 
 +
 =====Макрокоманды ===== =====Макрокоманды =====
 Если же штатных команд редактора joe оказывается недостаточно,​ можно прибегнуть к их самостоятельному конструированию. ​ Если же штатных команд редактора joe оказывается недостаточно,​ можно прибегнуть к их самостоятельному конструированию. ​
Строка 226: Строка 225:
  
 Первый - возможность переопределения клавиатурных комбинаций,​ назначенных для штатных команд joe по умолчанию. Например,​ если вам не нравится,​ что пролистывание экрана осуществляется комбинациями ​ Первый - возможность переопределения клавиатурных комбинаций,​ назначенных для штатных команд joe по умолчанию. Например,​ если вам не нравится,​ что пролистывание экрана осуществляется комбинациями ​
-**Control+U** назад  +  * **Control+U** назад  
-**Control+V* вперед+  ​* ​**Control+V** вперед
 можно присвоить им иные значения (из числа свободных,​ разумеется). ​ можно присвоить им иные значения (из числа свободных,​ разумеется). ​
  
Строка 239: Строка 238:
 для спеллинга всего текста и отдельных слов, соответственно. Они просто описывают параметры вызова внешней программы проверки орфографии (по умолчанию - 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**. По умолчанию в какждой языковой субсекции они указываются там в виде: ​
Строка 382: Строка 396:
   * Meta+M ввод регулярного выражения; ​   * Meta+M ввод регулярного выражения; ​
   * Meta+H отправка сообщения (нечто вроде команды write, но на одном и том же терминале). ​   * Meta+H отправка сообщения (нечто вроде команды write, но на одном и том же терминале). ​
 +
 +{{tag>​howto Консоль Система Текстовый_редактор}}