Дмитро Ковальов

Б╕льш, н╕ж стандартний редактор

                                vi ма╓ два режими роботи: 
                                 - перший, це той в якому в╕н пищить;
                                 - ╕ другий, в якому в╕н не пищить.

                                  З Юн╕кс╕вського фольклору 

В manpage до редактора ed в Юн╕кс╕ традиц╕йно писалося, що "ed ╓ стандартним текстовим редактором Юн╕кса". ╤ цим практично все сказано: н╕хто не вправ╕ чекати в╕д "стандартного" текстового редактора чогось особливого - якихось там менюшок чи кнопочок "Start".

На в╕дм╕ну в╕д ed vi - не ╓ вже "стандартним" в такому спартанському розум╕нн╕. Назва vi походить в╕д VIsual . Тобто, це - повноекранний редактор. Але людину, яка сво╓ комп'ютерне життя починала з В╕ндовс╕в, Мак╕нтош╕в (або нав╕ть ╕ ╕з Нортона Командера) vi може довести до сл╕з.

Тому виника╓ природн╓ запитання: "А нащо ж оц╕ вс╕ розмови про vi , якщо ╓ Microsoft Word?" (Людина з б╕льш принциповими поглядами на життя в цьому випадку спитала б: "У мене ╓ emacs . Чого ти до мене ч╕пля╓шся з╕ сво╖м vi ?")

Що ж - цей тв╕р для людей закоханих у життя, для тих, кого не перестали ще хвилювати ╕ звеселяти звичайн╕ радощ╕ земного життя, для тих, хто спроможен розум╕ти справжню поез╕ю... Тобто, це пишеться для системних адм╕н╕стратор╕в Юн╕кса. Ви не системний адм╕н╕стратор? Дос╕? А чи ви хочете бути "ес-ей"? Це вже залежить в╕д вас. Якщо у вас виника╓ якесь таке лоскотне в╕дчуття п╕д ложечкою в╕д сл╕в "Юн╕кс ╜уру", читайте дал╕.

А коли трошки серйозн╕ше... ╢ ситуац╕╖, де vi - ваш незам╕нний друг. В сучасному св╕т╕, бувають ╕ще Юн╕кси без emacs '╕в, але уявити Юн╕кс без vi вже майже неможливо. Тим паче - без ed . ╤ якщо вже так трапилось, що ваша система не ма╓ vi , а вам конче необх╕дно редагувати файл, то знаючи команди vi , ви з таким же самим усп╕хом можете користуватися ed 'ом.

Ви без проблем можете користуватися emacs 'ом для того, щоб писати сво╖ CGI скрипти в Перл╕ чи Питон╕. Але я певен, що серед сотн╕ людей, яким потр╕бно зм╕нити один рядок в /etc/passwd , навряд чи знайдеться нав╕ть десяток бажаючих сид╕ти мовчки перед екраном, чекаючи, поки запуститься emacs . З ц╕╓╖ ж причини н╕хто з ц╕╓╖ сотн╕ н╕коли в житт╕ не буде користуватися Word'ом. (Ну, Ворд - це особливий випадок, ╕ кожен з ц╕╓╖-ж само╖ сотн╕, наведе мен╕ ще десяток власних причин, чому в╕н/вона не користу╓ться н╕ Вордом, н╕ В╕ндовс взагал╕). Тому, зовс╕м не пагано знати обидва редактори ( emacsvi ) ╕ користуватися кожним в залежност╕ в╕д потреб (продовжуючи тему додам, що зовс╕м нема╓ н╕чого паганого в тому, щоб знати, як користуватися Word'ом. Але знати ╕ користуватися - це зовс╕м р╕зн╕ реч╕).

vi (як, до реч╕ ╕ дуже багато чого в Юн╕кс╕) не належить до таких редактор╕в, як╕ можна опанувати за к╕лька годин. Не належить в╕н також ╕ до тих редактор╕в, як╕ можна зрозум╕ти до к╕нця на протяз╕ к╕лькох м╕сяц╕в. Це редактор, який опанову╓ться пост╕йно в ход╕ його використання, але нав╕ть опанувавши деяк╕ його можливост╕ ви зможете ним користуватися ╕ (можливо) полюбите його.

Про себе особисто додам, що деяк╕ реч╕ робляться набагато швидше у vi , н╕ж у emacs '╕, ╕ коли мен╕ треба зробити зам╕ну чогось на щось (дуже часто ╕з регулярними виразами) у величезному текст╕, мен╕ часто бува╓ швидше записати файл на диск, в╕дкрити його у vi , натиснути в ньому одну або дв╕ клав╕ш╕ ╕ п╕сля цього повернутися в emacs .

Про те, що збива╓ з пантелику користувача vi

Почати сеанс роботи з редактором дуже просто. Практично будь-який текстовий редактор у Юн╕кс╕ запуска╓ться командою

        <назва_редактора> <назва_файлу>.

Не в╕др╕зня╓ться цим в╕д ╕нших ╕ vi .

Тож, щоб в╕дкрити новий чи вже ╕снуючий файл у vi , з командного рядка надрукуйте:

        $ vi mytest.txt

При цьому в╕дбува╓ться те, що ╕ збива╓ з пантелику будь-якого користувача редактора. Екран терм╕налу очища╓ться, курсор переходить в л╕вий гор╕шн╕й кут екрану, а крайн╕й л╕вий стовпчик екрану заповню╓ться т╕льдами (~). В нижньому рядку екрана друку╓ться щось под╕бне на:

       "mytest.txt" 

╤, що саме головне, на будь-яку натиснуту клав╕шу vi в╕дпов╕да╓ або безглуздим б╕б╕канням, або зовс╕м н╕чого не в╕дпов╕да╓.

Саме тут ╕ почина╓ться пан╕ка. Не працю╓ жодна з тих клав╕ш, як╕ виручають в ╕нших под╕бних ситуац╕ях: н╕ CTRL-C , н╕ CTRL-D .

Сама головна команда редактора

Що-ж, якщо ви вже в╕дкрили файл так, як писалося в попередньому параграф╕, не дочитавши до цього м╕сця, зараз якраз саме час повернутися до читання. Не треба великого розуму, щоб почати редагувати файл. Але треба трохи подумати, коли прийшов час виходити з текстового редактора.

К╕лька простих крок╕в, як╕ ми да╓мо тут без пояснень (це так би мовити акс╕ома користування vi ) - вих╕д з сеансу редагування з vi .

  1. Перш за все натисн╕ть Esc . Це поверне вас з будь-якого режиму в режим, в якому vi схоче сприймати ваш╕ команди.
  2. Дал╕ введ╕ть таку комб╕нац╕ю клав╕ш:
        :wq Enter 

Отримавши це vi запише файл, який ви в╕дкрили для редагування ╕ вийде в командну оболонку. Як, мабуть, вже зрозум╕в здогадливий читач, w походить в╕д write, а q - в╕д quit. Це ╓ насправд╕ дв╕ окрем╕ команди, як╕ просто об'╓днан╕ на одному рядку. Кр╕м того vi може сприймати "довг╕" верс╕╖ команд - записан╕ нормальною людською англ╕йською. Тобто, команда наведена вгор╕ анало╜╕чна двом наступним вар╕антам:

            :w  Enter 
            :q  Enter 
            :write Enter 
            :quit Enter 

Надал╕ я буду користуватися обома формами команд - повною та скороченою. Оск╕льки обидв╕ форми абсолютно р╕вноправн╕, д╕я ╖х буде однаковою. А здогадуватися де саме коротка форма, а де повна, залишу як невеличку розминку для читача.

Що якщо вам не потр╕бно записувати зм╕ни до файлу? Тод╕ не потр╕бно редактору казати щоб в╕н записував файл. Але це просте твердження ╓ неабиякою мукою для початк╕вця.

Якщо ви на сво╓ горе в╕дкрили файл ╕ зробили в ньому як╕сь зм╕ни ╕ тепер не зна╓те як вийти з редактора не записуючи зм╕ни (ви постирали як╕сь л╕тери в пол╕ парол╕в в файл╕ /etc/passwd ╕, звичайно ж, не пам'ята╓те як╕ саме то були л╕тери) ╕ ви вже в котрий раз пробу╓те надрукувати одну ╕ ту ж команду: :q Enter . Але у в╕дпов╕дь на це vi в╕дпов╕да╓ т╕льки одним рядочком внизу екрану:

     ~
     No write since last change (use ! to override)

Бачите оте " use ! to override "? Це vi п╕дказу╓ вам, що для того щоб змусити його все-таки вийти з цього злополучного файлу ╕ залишити на м╕сц╕ вс╕ т╕ парол╕, на нього треба крикнути. Але голосно! Тобто до команди "quit" треба ще додати знак оклику: " :quit! " (або :q! ). А про себе ще пошепки додати - "Та quit же ти, зараза!".

Цей же самий фокус спрацьову╓, коли ви п╕сля важких ╕ довгих зам╕н раптом виявля╓те, що в╕дкрили файл, на який не ма╓те доступу на запис. В таких випадках спрацьову╓ :write! . Але, звичайно-ж, т╕льки в тих випадках, коли ви ╓ власником файлу.

╤ останн╕й вар╕ант - вам треба зм╕нити назву файлу. Скаж╕мо, ви внесли зм╕ни до файлу, а пот╕м подумали, що зовс╕м не варто записувати його з тим самим ╕менем, яке в╕н мав. В цьому випадку допоможе команда

        :write <нова_назва>  Enter 

Режими роботи редактора vi

Складн╕сть початкового ознайомлення з vi поляга╓ в тому, що в╕н ма╓ р╕зн╕ режими роботи. Два основних режими, це - в╕зуальний режим редагування тексту ╕ командний режим. (Звичайно ж команди служать теж для редагування тексту, але звично вид╕ля╓ться окремий режим, в якому зд╕йсню╓ться "╕нтерактивне" редагування на в╕дм╕ну в╕д, так би мовити "пакетного" редагування за допомогою виконання команд.)

В╕зуальний режим - це режим, в якому користувач пересува╓ться по текстовому файлу ╕ робить необх╕дн╕ зм╕ни в текст╕. Це нагаду╓ режим роботи будь-якого ╕ншого текстового редактора (або нав╕ть ╕ текстового процесора - якщо комусь так подоба╓ться це така модне к╕лька рок╕в тому слово). У в╕зуальному режим╕ роботи користувач ма╓ можлив╕сть проводити редагування тексту шляхом вставки, стирання чи зам╕ни окремих л╕тер, сл╕в та текстових блок╕в.

Командний режим (або, як в деяких джерелах його називають "л╕н╕йним", чи скор╕ше нав╕ть "по-рядковим" - linear) режим роботи, принципово в╕др╕зня╓ться в╕д в╕зуального режиму тим, що в процес╕ роботи користувач р╕дко бачить на власн╕ оч╕, що саме в╕дбува╓ться з текстом. Робота поляга╓ у друкуванн╕ команд на командному рядку, ╕ в отриманн╕ результат╕в. Це дуже нагаду╓ процес роботи з командною оболонкою Юн╕кса.

В╕зуальний режим редагування

Оск╕льки в╕зуальний режим роботи значно прост╕ший для початкового ознайомлення, саме з нього ми й почнемо.

Для переходу з режиму л╕н╕йно редагування в в╕зуальний режим ╕снують к╕лька способ╕в. Дал╕ ми будемо розглядати деяк╕ з них по черз╕. Але в╕дразу ж запам'ята╓мо, що для виходу з режиму вводу ╕сну╓ всього один спос╕б - натистути та в╕дпустити Esc . В командному режим╕ клав╕ша Esc н╕чого не означа╓, тому працюючи в vi виробля╓ться сво╓р╕дна звичка - перш, н╕ж виконувати будь-яку команду натискати Esc (нав╕ть к╕лька раз╕в) - згубна звичка для тих, хто працю╓ в emacs '╕.

Деяк╕ верс╕╖ vi (це стосу╓ться практично вс╕х верс╕й vi , як╕ розповсюджуються з Л╕наксом) друкують в нижньому рядку екрану п╕дказку, коли вони знаходяться в режим╕ вставки тексту. Ця п╕дказка - це рядок

     "-- INSERT -- "

внизу екрану. Але нав╕ть на це розраховувати не доводиться, бо таку п╕дказку видають далеко не вс╕ vi . Тому основне правило при робот╕ з vi було ╕ залиша╓ться - завжди пам'ятати в якому режим╕ ви знаходитесь, а якщо не певн╕ - натискайте зайвий раз Esc ╕ повертайтеся в в╕зуальний режим.

Вставка тексту

Перейти в режим вставки тексту можна к╕лькома способами. Ось к╕лька з них (вс╕ л╕тери команд - англ╕йськ╕ л╕тери, мал╕ л╕тери та велик╕ мають р╕зн╕ функц╕╖ в vi ):

        i - почина╓ вставку тексту л╕воруч в╕д курсора;
        a - почина╓ вставку тексту праворуч в╕д курсора;
        A - дода╓ текст до к╕нця рядка.

Просте пересування по тексту

vi ма╓ надзвичайно багато способ╕в пересуватися по тексту, але для початку нам вистачить самих основних - перех╕д праворуч-л╕воруч на один символ та вгору-вниз на один рядок.

Знову ж таки, в залежност╕ в╕д вашо╖ удач╕, ваш vi може або п╕дтримувати або не п╕дтримувати пересування по тексту за допомогою клав╕ш ╕з стр╕лками. Це може залежати не т╕льки в╕д верс╕╖ Юн╕кса, але нав╕ть в╕д терм╕налу, на якому ви працю╓те. Наприклад, при робот╕ в X Window в SunOS або Solaris можна користуватися стр╕лками, а при користуванн╕ vi на текстов╕й консол╕ в цих же системах вони не працюють.

Якщо стр╕лки працюють, то тут нема про що б╕льше говорити - просто натискайте стр╕лку вгору, щоб перейти на попередн╕й рядок, л╕воруч - щоб перейти л╕воруч ╕ т.д. Якщо ж н╕, то вам потр╕бно буде користуватися алфав╕тними клав╕шами для цього. Для пересування по екрану використовуються так╕ клав╕ш╕:

        h - л╕воруч;
        j - вниз;
        k - вгору;
        l - праворуч.

Намагатися запам'ятати ц╕ клав╕ш╕ зовс╕м не потр╕бно (╕ взагал╕ - марна справа). На клав╕атур╕ вони вс╕ знаходяться поруч - в одному ряду. Тому, якщо ви покладете п'ястки, так, що вказ╕вний палець припада╓ на h , то будете мати керування вс╕м сво╖м редактором на пальцях одн╕╓╖ руки (право╖, якщо ви цього ще не зрозум╕ли). Вказ╕вний палець та м╕зинець рухають курсор л╕воруч та праворуч в╕дпов╕дно. А середн╕й та без╕м'янний - вниз та вгору.

Кр╕м цих команд для пересування по тексту спрацьовують також так╕ клав╕ш╕:

        Enter - вниз;
        SPACE - праворуч;
        Del   - л╕воруч.

Ще до цього потр╕бно додати, що такий рух можливий т╕льки там, де вже ╓ вставлен╕ рядки. Тобто, в нашому приклад╕ ви не дуже то ╕ поруха╓тесь. Перш, н╕ж тиснути вс╕ чотири клав╕ш╕ по черз╕ з нульовим результатом, треба ввести хоча б к╕лька рядк╕в у в╕кн╕ vi .

Проста зам╕на тексту

Для початку розглянемо найпрост╕ш╕ способи зам╕ни тексту - зам╕на одного символа та зам╕на к╕лькох символ╕в.

Щоб зам╕нити один символ, пересуньте курсор так, щоб в╕н знаходився п╕д символом, що ви його хочете зам╕нити. Натисн╕ть r ╕ п╕сля цього той символ, на який ви хочете зм╕нити.

Щоб зм╕нити п╕дряд к╕лька символ╕в пересуньте курсор так, щоб в╕н знаходився п╕д першою ╕з л╕тер, як╕ ви збира╓тесь зм╕нити ╕ натисн╕ть R . П╕сля цього починайте друкувати новий текст. Новий текст буде зм╕нювати старий в ход╕ того, як ви будете друкувати. В к╕нц╕ зам╕ни натисн╕ть Esc для того, щоб вийти з режиму зам╕ни.

Т╕льки що поданих команд взагал╕-то кажучи достатньо для м╕н╕мального користування vi , ╕ багато чи╖ знання обмежуються саме цим необх╕дним м╕н╕мумом. Як кажуть знавц╕ - цей редактор вивчити досконало просто неможливо, завжди буде щось таке, що залиша╓ться нев╕домим.

Складн╕ш╕ методи пересування по тексту та команди зам╕ни тексту

Пересуватися туди-сюди по одн╕й л╕тер╕ чи рядку досить велика морока, така ж сама морока ╕ натискати r кожного разу, коли вам потр╕бно зам╕нити одну ╓дину л╕теру.

Тож тут дал╕ (в досить стиснен╕й форм╕) команди для пересування та зам╕ни:

        e - перейти в к╕нець слова;
        b - перейти на початок слова;
        E - перейти в к╕нець слова;
        B - перейти на початок слова;
        ^ - перейти на початок рядка;   
        $ - перейти в к╕нець рядка.

        cw - зам╕нити слово (в к╕нц╕ вводу слова натисн╕ть  Esc );
        cW - зам╕нити слово (в к╕нц╕ вводу слова натисн╕ть  Esc );
        cl - зам╕нити л╕теру

А також операц╕╖ для стирання л╕тер та блок╕в тексту:

        x - стерти л╕теру в позиц╕╖ (праворуч в╕д) курсора;
        X - стерти л╕теру л╕воруч в╕д курсора;
        dw - стерти слово (в╕д позиц╕╖ курсора праворуч до к╕нця
             слова);
        dW - стерти слово (в╕д позиц╕╖ курсора праворуч до к╕нця
             слова);
        dd - стерти рядок, на якому сто╖ть курсор (повн╕стю, не
             залежно в╕д позиц╕╖ курсора в цьому рядку);
        D - стерти все, починаючи в╕д курсора до к╕нця рядка;
        s - стира╓ л╕теру в позиц╕╖ курсора ╕ переводить в режим вводу
            тексту в ц╕й же позиц╕╖ (вих╕д з режиму вводу -  Esc ).

В к╕лькох випадках вгор╕ приведен╕ команди, як╕, судячи з опису н╕би-то роблять одне ╕ те, але в╕др╕зняються тим, що в одному випадку використовуються мал╕ л╕тери, а в ╕нших - велик╕. Р╕зниця в цих командах поляга╓ в тому, як тракту╓ться "слово" в цих командах.

В командах з малими л╕терами (e, b, cw, dw) п╕д словом розум╕╓ться все, що склада╓ться з л╕тер. "А з чого ж ще може складатися слово?" Ось про це саме мова йде в розмов╕ про команди, що складаються з великих л╕тер. П╕д словом в цих командах розум╕╓ться все, що склада╓ться з л╕тер (алфав╕тно-цифрових символ╕в) та розд╕лових знак╕в.

Продемонстру╓мо це на таких прикладах:

           +-------------------------------------------------
           | Hei, malyi, skazhy malomu-khai malyi malomu skazhe
           |                    ^
            Положення курсора до виконання команди 

           +-------------------------------------------------
           | Hei, malyi, skazhy malomu-khai malyi malomu skazhe
           |                         ^
            Положення курсора п╕сля виконання команди  :e

           +-------------------------------------------------
           | Hei, malyi, skazhy malomu-khai malyi malomu skazhe
           |                              ^
            Положення курсора п╕сля виконання команди  :E

Теж саме стосу╓ться ╕ ╕нших команд, як╕ в╕др╕зняються т╕льки великими та малими л╕терами (кр╕м команд x та X). Так, команда :dw в попередньому приклад╕ з╕тре одне слово - "malomu", в той час як команда :dW з╕тре два слова з'╓днан╕ деф╕сом - "malomu-khai".

Багаторазове виконання команд

Дуже часто бува╓ потр╕бно виконувати одну ╕ ту ж команду по к╕лька раз╕в. Наприклад, стерти три п╕дряд слова чи п'ять наступних рядк╕в. Чи, може, перейти л╕воруч на 20 л╕тер.

╢ дуже при╓мна новина - редактор дозволя╓ виконувати команди пачками. По к╕лька команд за раз. ╤ робити це у vi дуже просто, Але для початку ми розглянемо найпрост╕ший вар╕ант. Скаж╕мо, ви виконали якусь команду, а пот╕м подумали соб╕: "А чи не виконати мен╕ цю команду ще раз? Дуже вже вона мен╕ сподобалась!" ╤ ви вир╕шу╓те: "Виконаю!" ╤ ... натиска╓те ... крапку(!?) Так, саме крапку. Крапка у vi означа╓ повтор т╕льки-що виконано╖ команди.

Наприклад:

           +-------------------------------------------------
           | Hei, malyi, skazhy malomu-khai malyi malomu skazhe
           |                    ^
            Положення курсора до виконання команди 

           +-------------------------------------------------
           | Hei, malyi, skazhy -khai malyi malomu skazhe
           |                    ^
            Положення курсора п╕сля виконання команди  :dw

           +-------------------------------------------------
           | Hei, malyi, skazhy malyi malomu skazhe
           |                    ^
            Положення курсора п╕сля виконання команди  "."   Увага!!! Тут ╓ крапка!  

           +-------------------------------------------------
           | Hei, malyi, skazhy malomu skazhe
           |                    ^
            ... ╕ ще п╕сля одн╕╓╖  "."    ... ╕ тут теж ... 

Можлива також ╕нша форма команди. Практично вс╕ команди vi можуть сприймати числовий параметр, який ставиться перед командою. Цей числовий параметр означа╓ к╕льк╕сть повтор╕в дано╖ команди. Тод╕ вс╕ наведен╕ вище команди перетворюються на щось таке:

        Ne - перейти в к╕нець слова (N раз╕в);
        Nb - перейти на початок слова (N раз╕в);
        NE - перейти в к╕нець слова (N раз╕в);
        NB - перейти на початок слова (N раз╕в);

        Ncw - зам╕нити слово (N раз╕в);
        NcW - зам╕нити слово (N раз╕в);
        Ncl - зам╕нити л╕теру

        Nx - стерти л╕теру в позиц╕╖ (праворуч в╕д) курсора (N раз╕в);
        NX - стерти л╕теру л╕воруч в╕д курсора (N раз╕в);
        Ndw - стерти слово (в╕д позиц╕╖ курсора праворуч до к╕нця
             слова) (N раз╕в);
        NdW - стерти слово (в╕д позиц╕╖ курсора праворуч до к╕нця
             слова) (N раз╕в);
        Ndd - стерти рядок, на якому сто╖ть курсор (повн╕стю, не
             залежно в╕д позиц╕╖ курсора в цьому рядку) (N раз╕в);
        Ns - стира╓ л╕теру в позиц╕╖ курсора ╕ переводить в режим вводу
            тексту в ц╕й же позиц╕╖ (N раз╕в - тобто стира╓ N л╕тер ╕
            пот╕м переводить в режим вводу);
        Nh - л╕воруч (N раз╕в);
        Nj - вниз (N раз╕в);
        Nk - вгору (N раз╕в);
        Nl - праворуч (N раз╕в).

В ус╕х вище наведених командах N - це будь-яке число надруковане на клав╕атур╕. Коротше кажучи, щоб перейти на 5 рядк╕в вниз по тексту набер╕ть на клав╕атур╕ 5j , щоб стерти 5 рядк╕в (вниз в╕д того м╕сця, де ви знаходитесь) - набер╕ть 5dd , ╕ т.д.

Це також стосу╓ться команд вводу тексту. Якщо вам потр╕бно вставити 20 однакових рядк╕в в текстовий файл, пророб╕ть таке: натисн╕ть 20i , п╕сля цього вводьте ваш текстовий рядок, зак╕нч╕ть вв╕д натисканням Enter ╕ врешт╕-решт зак╕нч╕ть все це натисканням Esc. vi сприйма╓ все це (що почина╓ться з i ╕ зак╕нчу╓ться Esc ) як одну команду ╕ повторить ╖╖ 20 раз╕в.

        Приклад:
           +-------------------------------------------------
           | 
           | 

           3iCei ryadok povtoryt'sya 3 razy Enter Esc 

           +-------------------------------------------------
           | Cei ryadok povtoryt'sya 3 razy
           | Cei ryadok povtoryt'sya 3 razy
           | Cei ryadok povtoryt'sya 3 razy
           | 

Якщо т╕льки-що наведений приклад проробити без Enter , то буде таке:

        Приклад:
           +-------------------------------------------------
           | 
           | 

           3iCei ryadok povtoryt'sya 3 razy  Esc  

           +-------------------------------------------------
           | Cei ryadok povtoryt'sya 3 razy Cei ryadok povtoryt'sya 3 razy Cei ryadok povtoryt'sya 3 razy 
           | 
           | 
           | 

╤ на зак╕нчення ц╕╓╖ теми: к╕лька команд для пересування по тексту ц╕лими екранами, та б╕льшими шматками - на початок файлу та в к╕нець файлу.

            Ctrl -f - перейти на один повний екран вперед;
            Ctrl -b - перейти на один повний екран назад;
           :1         - перейти на перший рядок файлу;
           :$         - перейти в к╕нець файлу.

Natalya and Dmytro Kovalev
Пиш╕ть нам за адресою: kov@tokyo.email.ne.jp
Домашня стор╕нка: http://www.asahi-net.or.jp/~as9d-kvlv
Thu Nov 11 15:45:30 JST 1999
Counter: