Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования для UnixΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 110

Автор Π Π΅ΠΉΠΌΠΎΠ½Π΄ Π­Ρ€ΠΈΠΊ Π‘Ρ‚ΠΈΠ²Π΅Π½

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ с Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ. Π’Ρ‹Π±ΠΎΡ€ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚Π΅ΠΌ указания строкового Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΊΠ°ΠΊ Π² ed, ΠΎΠ΄Π½Π°ΠΊΠΎ Sam ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ прСимущСство, благодаря Ρ‚ΠΎΠΌΡƒ Ρ„Π°ΠΊΡ‚Ρƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ мСньший Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, Ρ‡Π΅ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ строки. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ ΠΈ быстро ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ фокус ΠΌΠ΅ΠΆΠ΄Ρƒ Π±ΡƒΡ„Π΅Ρ€Π°ΠΌΠΈ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€), Sam Π½Π΅ нуТдаСтся Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅, эквивалСнтном стандартному (ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΌΡƒ) Ρ€Π΅ΠΆΠΈΠΌΡƒ vi. Π‘ΠΎΡ‚Π½ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ vi Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΎΠ½ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹. Π’ Ρ†Π΅Π»ΠΎΠΌ, Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Sam Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΎΠΊΠΎΠ»ΠΎ дСсятка ΠΊΠΎΠΌΠ°Π½Π΄ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ сСмнадцати ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ vi, ΠΈ ΠΎΠ±Ρ‰Π΅Π΅ количСство ΠΊΠΎΠΌΠ°Π½Π΄ Ρ€Π°Π²Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Ρ€ΠΈΠ΄Ρ†Π°Ρ‚ΠΈ.

Π§Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΈΠ· Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ Π² Sam ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ ΠΊ Π΄Π²ΡƒΠΌ унаслСдованным ΠΎΡ‚ ed(1) ΠΈ vi( 1), ΠΊΠ°ΠΊ способы примСнСния рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² цСлях Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ². Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΌ языкС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅, Π½ΠΎ эффСктивныС возмоТности ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ условных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Однако Π½Π΅ сущСствуСт способа для имСнования ΠΈΠ»ΠΈ записи Π² парамСтричСской Ρ„ΠΎΡ€ΠΌΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ языка. ΠšΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ язык Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ подпроцСссом.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Sam являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° Π΄Π²Π΅ части. БСрвСрная Ρ‡Π°ΡΡ‚ΡŒ, которая ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ выполняСт поиск, ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π° ΠΎΡ‚ клиСнтской части, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ экранный интСрфСйс. Π”Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† ΠΌΠΎΠ΄Π΅Π»ΠΈ "раздСлСния ядра ΠΈ интСрфСйса" ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ нСпосрСдствСнным прСимущСством -нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚ GUI-интСрфСйс, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌ соСдинСнии ΠΏΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ сСрвСрС. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, клиСнтская ΠΈ сСрвСрная части ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ просто ΠΏΠ΅Ρ€Π΅Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ.

Sam, ΠΊΠ°ΠΊ Π½Π΅Π΄Π°Π²Π½ΠΎ появившиСся вСрсии vi, ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ бСсконСчной ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ послСдних ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСкста Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, Π½ΠΈ синтаксичСский Π°Π½Π°Π»ΠΈΠ· Π²Ρ‹Π²ΠΎΠ΄Π°, Π½ΠΈ взаимодСйствиС с подпроцСссами.

13.2.4. Emacs

Emacs, Π±Π΅Π· сомнСния, самый ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² для программистов. Он прСдставляСт собой Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ, ΠΈΠ·ΠΎΠ±ΠΈΠ»ΡƒΡŽΡ‰ΡƒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ функциями ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с большой Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ настройки. Как отмСчаСтся Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ "Emacs Lisp" Π³Π»Π°Π²Ρ‹ 14, Emacs ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ†Π΅Π»Ρ‹ΠΌ встроСнным языком программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для написания Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎ ΠΌΠΎΡ‰Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ рСдактирования.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ vi, Emacs Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² интСрфСйса. ВмСсто этого ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ прСдставлСны ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ символами ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΡΡŽΡ‚ΡΡ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ клавиши ESC. Однако Π² Emacs Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ Π»ΡŽΠ±ΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ с ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ стандартныС ΠΈΠ»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ написанныС Lisp-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Emacs способСн Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Π±ΡƒΡ„Π΅Ρ€Π΅, ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ тСкста ΠΌΠ΅ΠΆΠ΄Ρƒ Π±ΡƒΡ„Π΅Ρ€Π°ΠΌΠΈ. ВСрсии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π² систСмС X, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ собствСнной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ.

Lisp-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, связанныС с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Emacs, ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ трансформации тСкста Π² Π±ΡƒΡ„Π΅Ρ€Π΅. Данная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ интСнсивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ вмСстС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ срСдствами для опрСдСлСния подсвСтки синтаксиса ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² рСдактирования тСкста Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ для дСсятков Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языков ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ (начиная с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ выдСлСния Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π‘-ΠΊΠΎΠ΄Π°, ΠΊΠ°ΠΊ Π² vi, Π½ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ выходя Π·Π° эти Ρ€Π°ΠΌΠΊΠΈ). ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ прСдставляСт собой просто Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Lisp-ΠΊΠΎΠ΄, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹ΠΉ ΠΏΠΎ запросу.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Emacs Lisp способны Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ подпроцСссами. НСкоторыС ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ слСдствия Π΄Π°Π½Π½ΠΎΠΉ возмоТности Π±Ρ‹Π»ΠΈ пСрСчислСны Ρ€Π°Π½Π΅Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π² качСствС клиСнтской части для систСм контроля вСрсий, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Emacs87 создали ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹Π΅ логичСскиС возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π² Π½Π΅ΠΌ для сотСн Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… спСциализированных Π·Π°Π΄Π°Ρ‡ рСдактирования. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Emacs ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠ±Ρ‰Π΅ΠΌ контСкстС всСх тСкстовых Π΄Π°Π½Π½Ρ‹Ρ… β€” Ρ„Π°ΠΉΠ»Ρ‹, ΠΏΠΎΡ‡Ρ‚Π°, новости, ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ символы. Π”Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π² качСствС настраиваСмой клиСнтской части для любой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ тСкстовый интСрфСйс.

Π‘Ρ€Π΅Π΄ΠΈ сторонников ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΈΠΊΠΎΠ² Emacs Π±Ρ‹Ρ‚ΡƒΠ΅Ρ‚ Π°Π½Π΅ΠΊΠ΄ΠΎΡ‚, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму, Π·Π°ΠΌΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€. Π­Ρ‚ΠΎ ΠΏΡ€Π΅ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ Emacs Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ исполняСт Ρ€ΠΎΠ»ΡŒ, ΠΎΡ‚Π²Π΅Π΄Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ срСдам Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Integrated Development Environments β€” IDE) Π² He-Unix-систСмах (рассмотрСниС Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΎ Π² Π³Π»Π°Π²Π΅ 15).

Но пСрСчислСнныС прСимущСства сопряТСны с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ слоТностями. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ настроСнный Emacs, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΈ сСбС Lisp-Ρ„Π°ΠΉΠ»Ρ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ настройки Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ настройки Emacs β€” Ρ†Π΅Π»ΠΎΠ΅ искусство. БоотвСтствСнно, Emacs слоТнСС Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ, Ρ‡Π΅ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ vi.

13.2.5. Wily

Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ wily6 β€” ΠΊΠ»ΠΎΠ½ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° acme ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Plan 9. Он ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ срСдства с Sam, Π½ΠΎ прСдусмотрСн для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ с Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ Π½Π°Π²Ρ‹ΠΊΠ°ΠΌΠΈ. Π₯отя wily, вСроятно, распространСн ΠΌΠ΅Π½Π΅Π΅ Ρ‡Π΅ΠΌ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΠ· рассматриваСмых Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², ΠΎΠ½ интСрСсСн Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΊΠΈΠΉ ΠΊ Unix способ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Emacs-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°.

Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ wily ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡ‚ΡΠΊΡƒΡŽ IDE-срСду, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ Π² Emacs-стилС Π±Π΅Π· дСсятков ΠΈΠ·Π»ΠΈΡˆΠ½ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’ Wily Π΄Π°ΠΆΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ поиск ΠΈ Π·Π°ΠΌΠ΅Π½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ условиСм для Unix-Ρ€Π΅Π΄Π°ΠΊ-Ρ‚ΠΎΡ€ΠΎΠ², ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ внСшними ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ. ВстроСнныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ связаны ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΌΠΈ опСрациями. Π’ конструкции Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Wily максимальноС использованиС ΠΌΡ‹ΡˆΠΈ прСдусмотрСно ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ.

Wily пытаСтся Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΊΠ½Π°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ xterm( 1). Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ любой Π±Π»ΠΎΠΊ тСкста Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит мноТСство Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΠΊΠΎΠ½ Wily) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ дСйствиС ΠΈΠ»ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для поиска. ЛСвая ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΌΡ‹ΡˆΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для выдСлСния тСкста, срСдняя β€” для выполнСния тСкста ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (встроСнной Π»ΠΈΠ±ΠΎ внСшнСй), Π° правая β€” для поиска тСкста Π»ΠΈΠ±ΠΎ Π² Π±ΡƒΡ„Π΅Ρ€Π°Ρ… Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, Π»ΠΈΠ±ΠΎ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС. Никаких постоянных ΠΈΠ»ΠΈ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΎΠΊΠΎΠ½ Π½Π΅ трСбуСтся.

Π’ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Wily ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π²Π²ΠΎΠ΄Π° тСкста. ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ использования ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Π° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… клавиш ΠΌΡ‹ΡˆΠΈ. Π”Π°Π½Π½Ρ‹Π΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ всСгда эквивалСнтны использованию срСднСй ΠΊΠ½ΠΎΠΏΠΊΠΈ для ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ встроСнной ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Wily Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² качСствС клиСнтской части для Π‘-, Python- ΠΈΠ»ΠΈ Perl-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, сообщая ΠΈΠΌ всякий Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠΊΠ½Π°, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ»ΠΈ поиска с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ. Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌ Emacs, Π½ΠΎ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² адрСсном пространствС Wily. ВмСсто этого ΠΎΠ½ΠΈ ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ с Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ посрСдством ΠΎΡ‡Π΅Π½ΡŒ простого Π½Π°Π±ΠΎΡ€Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€. Wily поставляСтся Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ с Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ xterm ΠΈ срСдством ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΡ‡Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс для рСдактирования тСкста.

Π’Π°ΠΊ ΠΊΠ°ΠΊ Wily ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ зависит ΠΎΡ‚ ΠΌΡ‹ΡˆΠΈ, ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π½ΠΈ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… дисплСях, Π½ΠΈ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅ Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π₯-Π΄Π°Π½Π½Ρ‹Ρ….

Как Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Wily ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для рСдактирования простого тСкста. Π’ Π½Π΅ΠΌ имССтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° ΡˆΡ€ΠΈΡ„Ρ‚Π° (ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΉ) ΠΈ отсутствуСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ рСдактирования Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ³ΠΎ тСкстового Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΈΠ»ΠΈ подсвСтки синтаксиса.

13.3. НСобходимый ΠΈ достаточный Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°