Різноманітні команди – ЧАСТИНА 3

Буфери оболонки надають історію раніше введених команд Щоб знову використовувати команди оболонки, збережені в історії, використовуйте команди редагування Mp, Mn, Mr і Ms Вони працюють так само, як команди історії мінібуфера, за тим лише винятком, що діють на текст наприкінці буфера оболонки, де ви вставляли б текст для відправки оболонці

Mp вставляє більш ранню команду оболонки в буфер оболонки Послідовне застосування Mp витягує послідовно все більш ранні команди оболонки, кожен раз заміщаючи будь-який текст, вже існував в якості потенційного введення для оболонки Mn працює схоже, але послідовно знаходить більш пізні команди оболонки з цього буфера

Команди пошуку в історії, Mr і Ms, зчитують регулярний вираз і проводять пошук збігається команди в історії Крім надання вибору, яку саме команду ви хочете витягти, вони працюють точно так само, як M-p і M-r Якщо ви введете пусте регулярний вираз, буде використано то регулярний вираз, яке ви надали в останній раз

Коли ви знайшли бажаний попередній введення, ви можете знову послати його, натиснувши

hRETi, Або спочатку відредагувати і потім послати, якщо хочете

Часто буває корисно заново виконати кілька послідовних команд оболонки, які раніше виконувалися по порядку Щоб зробити це, спочатку знайдіть і виконайте першу команду в послідовності Потім наберіть C-c C-x це витягне таку команду – ту, яка йшла за щойно повтореною Потім натиснітьhRETi, Щоб заново виконати цю команду Ви можете повторити кілька послідовних команд, набираючи Cc Cx hRETзнову і знову

Ці команди отримують текст більш ранніх команд оболонки зі спеціального списку історії, не з самого буфера оболонки Тому редагування буфера оболонки або навіть знищення великих його частина не впливає на історію, до якої звертаються ці команди

Деякі оболонки зберігають історії їхніх команд в файлах, щоб ви могли послатися на старі команди з попередніх сеансовx Emacs зчитує файл історії команд для обраної вами оболонки, щоб проініціалізувати свою власну історію команд Цей файл називається ~ / Bash_history в bash, ~ / Sh_history в ksh і

‘~ / History в інших оболонках

30242  Копіювання історії оболонки

Cc Cp Переміщає точку до попередньої підказкою (comint-previous-prompt)

Cc Cn Переміщає точку до наступної підказкою (comint-next-prompt)

C-c hRETi     Копіює команду введення, в якій знаходиться точка, вставляючи її копію в кінець буфера (comint-copy-old-input) Це корисно, якщо ви перемістили точку назад до попередньої команді Після того, як ви скопіювали цю команду, ви можете надіслати копію в якості введення, натиснувши hRETi Якщо ви хочете, ви можете відредагувати копію перед відправленням

Переміщення до попереднього введенню і подальше його копіювання за допомогою Cc hRETдає той же результат – те ж вміст буфера – який ви отримали б застосуванням Mp достатню кількість раз, щоб витягти цю стару команду зі списку історії Однак, C-c hRETкопіює текст з буфера, які може відрізнятися від того, що знаходиться в списку історії, якщо ви редагували в буфері введений текст після того, як він був посланий

30243  Посилання на історію оболонки

Різні оболонки, включаючи csh і bash, підтримують посилання на історію, які починаються з !’ І ^. Режим Shell може розуміти такі конструкції і робити для вас підстановку Якщо ви вставили посилання на історію і натиснули hTABi, Це призведе до пошуку збігається команди в історії введення, підстановці, якщо вона необхідна, і приміщенню в буфер результату на місце заслання Наприклад, ви можете витягти саму недавню команду, що починається на mv, за допомогою m v hTABi Ви можете відредагувати цю команду, якщо хочете, і потім надіслати її оболонці, натиснувши hRETi

Посилання на історію діють тільки після підказки оболонки Мінлива shellprompt-pattern вказує, як розпізнати підказку Взагалі, режими Comint використовують для визначення підказки змінну comint-prompt-regexp режим Shell використовує shell-prompt-pattern, щоб встановити локальне значення comint-prompt-regexp

У режимі Shell є можливість розкривати посилання на історію, коли ви відправляєте їх оболонці Щоб зажадати це, встановіть змінну comint-input-autoexpand рівний input

Ви можете зробити так, щоб hSPCi  виробляв розкриття історії, привязавши hSPCi  до команди comint-magic-space

3025  Параметри режиму Shell

Якщо змінна comint-scroll-to-bottom-on-input не дорівнює nil, команди вставки і відновлення прокручують вибране вікно донизу перед вставкою

Якщо comint-scroll-show-maximum-output не дорівнює nil, то прокрутка через надходження виведення намагається розмістити останній рядок тексту на нижньому рядку вікна, щоб ви бачили якомога більше корисного тексту (Це імітує поведінку прокрутки на багатьох терміналах) За замовчуванням ця змінна дорівнює nil

Установкою comint-scroll-to-bottom-on-output ви можете зробити так, щоб точка перескакувала в кінець буфера всякий раз при надходженні виводу – незалежно від того, де точка була раніше Якщо значення одно this, точка перескакує в обраному вікні Якщо значення дорівнює all, точка перескакує в кожному вікні, що показує цей буфер Comint Якщо значення дорівнює other, точка перескакує у всіх невибраних вікнах, що показують поточний буфер За умовчанням це nil, що означає, що точка не повинна переміщатися в кінець

Мінлива comint-input-ignoredups каже, чи потрібно зберігати в історії послідовні однакові рядки введення Відмінне від nil значення велить опускати введення, ідентичний попередньому За замовчуванням ця змінна дорівнює nil це означає, що зберігається будь введення, навіть якщо він еквівалентний попередньому

Завершення імен файлів управляється трьома змінними Мінлива comintcompletion-addsuffix каже, вставляє чи завершення пробіл або косу риску, щоб позначити повністю завершене імя файлу або каталогу (Не-nil велить вставляти пробіл або косу риску) comint-completion-recexact, якщо не дорівнює nil, вказує hTABi вибирати найменше можливе завершення, якщо звичайний алгоритм завершення Emacs не може додати навіть одного знака comint-completion-autolist, якщо не дорівнює nil, велить перераховувати всі можливі завершення, коли не можна знайти точне завершення

Команда comint-dynamic-complete-variable завершує імя змінної, використовуючи установки змінних середовища усередині Emacs Змінні, керуючі завершенням імен файлів, застосовуються і до завершення імен змінних Ця команда зазвичай доступна через меню

При завершенні команд зазвичай розглядаються тільки виконувані файли Якщо ви встановите shell-command-execonly рівний nil, розглядатимуться також імена і неісполняемих файлів

Ви можете конфігурувати поведінку pushd. Є змінні, які вказують, чи веде себе pushd, як cd, якщо їй не заданий аргумент (shell-pushd-tohome), виштовхує чи вона каталог, а не прокручує, якщо їй заданий числовий аргумент (shell-pushddextract), і додає вона каталоги в стек тільки в тому випадку, якщо їх ще немає в ньому (shell-pushd-dunique) Вибрані вами значення повинні, зрозуміло, відповідати вашої оболонці

3026  Оболонка на віддаленій машині

Emacs надає дві команди для заходу на інший компютер і спілкування з ним через буфер Emacs

M-x telnet hRETімямашини hRETi

Встановлює з компютером імямашини зєднання по Telnet

M-x rlogin hRETімямашини hRETi

Встановлює з компютером імямашини зєднання по Rlogin

Використовуйте Mx telnet, щоб встановити зєднання по Telnet з іншим компьюте-

ром (Telnet – це стандартний протокол Internet для заходу на віддалену систему) Вона

зчитує в мінібуфер імя іншого компютера як аргумент Коли зєднання встановлено, спілкування з іншим компютером працює схоже на спілкування з подоболочкі: ви можете редагувати введення за допомогою звичайних команд Emacs і посилати його порядково, набираючи hRETi Висновок вставляється в буфер упереміш зі введенням

Використовуйте Mx rlogin для установки зєднання по Rlogin Rlogin – це інший протокол спілкування з віддаленої системою, багато в чому схожий на Telnet, але не сумісний з ним і підтримуваний тільки на деяких системах Переваги Rlogin полягають у тому, що ви можете зробити так, щоб вам необовязково було здавати імя користувача та пароль при спілкуванні між часто використовуваними машинами, і що ви можете встановити восьмібітного зєднання (Щоб зробити це в Emacs, встановіть rloginexplicit-args рівний (-8) перед запуском Rlogin)

Mx rlogin встановлює каталог за замовчуванням даного буфера Emacs, щоб отримувати доступ до віддаленої машині через FTP (див Розділ 141 [Імена файлів], с 105), і відстежує команди оболонки, які змінюють поточний каталог, так само, як режим Shell

Є два способи відстеження каталогів в буфері Rlogin – або за допомогою імен віддалених каталогів / машина: кат /, або за допомогою локальних імен (це працює, якщо дистанційна машина поділяє файлові системи з вашої початкової машиною) Ви можете використовувати команду rlogin-directory-tracking-mode, щоб перемикати ці режими Відсутність аргументу позначає використання імен віддалених каталогів, позитивний аргумент позначає використання локальних імен, а негативний вимикає відстеження каталогів

303  Використання Emacs в якості сервера

Різні програми, такі як mail, можуть викликати обраний вами редактор для редагування певного тексту, наприклад, що відправляється За угодою, більшість цих програм використовують змінну середовища EDITOR, щоб визначити, який редактор треба запускати Якщо ви встановите EDITOR рівний emacs, вони викличуть Emacs – але незручним способом, запускаючи новий окремий процес Emacs Це незручно, бо займає час і тому що новий процес Emacs не поділяє буфери з існуючим процесом

Джерело: Річард Столмен, Керівництво по GNU Emacs

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*