Коротка довідка по редактору VI, Linux, Операційні системи, статті

В процесі роботи в системі вам необхідно буде створювати і редагувати текстові файли. Всі ці дії можна виконати за допомогою екранного текстового редактора ‘vi’, якому pасположена в каталозі ‘/usr/bin/vi’


Для початку спробуємо створити новий файл, наприклад ‘testvi’:


$ vi testvi

З’явиться порожній екран з курсором в першому рядку. Решта рядків (також порожні) будуть починатися з символу ~ (тильда). У самій останньому рядку буде повідомлення приблизно такого змісту:


testvi: new file: line 1.

Надалі цей рядок буде також використовуватися і для введення команд.


Трохи відвернемося від нашого файлу і розглянемо систему команд ‘vi’. Більшість команд – це поодинокі клавіші або комбінації клавіш, які виконують прості функції редагування. ‘Vi’ працює в двох основних режимах – в режимі “Введення тексту” і в режимі “Команд”.


Після запуску ‘vi’ оказиается в режимі “Команд”. Для переходу в режим “Введення тексту” необхідно натиснути на клавішу ‘a’ або ‘i’ (звертаємо вашу увагу на регістр клавіш). Після цього можна набирати текст. Кожну введену рядок належить, як це прийнято, завершувати натисканням клавіші [Enter].


Виконайте наступні дії. Натисніть клавішу ‘a’, перейдіть в режим введення тексту і наберіть 3 рядки:



Line 1
Line 2
Line 3

Для переходу в командний режим натисніть на клавішу ‘Esc’. Ця ж клавіша використовується для скасування не до кінця набраної команди. Якщо ви неправильно ввели команду, редактор соощіт вам про це поодиноким звуковим сигналом.


Припустимо вам необхідно вкласти в початок другого рядка ще одне слово. Для цього в режимі команд перейдіть куpсоpа на потрібний рядок, встановити курсор в першу позицію і натисніть клавішу ‘i’. Після цього вставте потрібний текст, наприклад слово ‘Insert’:



Line 1
Insert Line 2
Line 3

Для переходу в командний режим знову натисніть клавішу ‘Esc’, призначення якої сподіваємося ви вже зрозуміли. Якщо ви з якихось причин заплуталися в якому режимі ви знаходитесь, натисніть два рази поспіль ‘Esc’. Редактор видасть звуковий сигнал, повідомляючи таким чином, що ви перебуваєте в командному режимі.


Щоб зробити редактор трохи по балакучий, в команді режимі введіть наступну команду в нижньому рядку:


:set verbose showmmode [Enter]

(В даному прикладі символ ‘:’ означає ознака введення команди.)


Після виконання цієї команди редактор буде вам повідомляти про досягнення кінця рядка і файлу, перехід в командний режим і т.д.


Для переміщення курсору по тексту в командному режимі можна використовувати клавіші управління курсором, а також такі клавіші:

















h або ПРОБІЛКурсор на один символ ліворуч.
l або BACKSPASEКурсор на один символ вправо.
jКурсор вниз на один рядок.
kКурсор вгору на один рядок.
^Перемістити курсор на початок першого слова поточного рядка.
$Перемістити курсор у кінець поточного рядка.
|Перемістити курсор в першу позицію поточного рядка.
wПеремістити курсор вперед на початок наступного cлова.
bПеремістити курсор назад на початок поточного слова.
eПеремістити курсор у кінець слова.
(Перемістити курсор на початок пропозиції (назад).
)Перемістити курсор в кінець речення (вперед).
{Перемістити курсор на початок параграфа (назад).
})Перемістити курсор у кінець параграфа (вперед). (Параграфи можуть бути розділені порожніми рядками).

Якщо перед натисненням на клавішу набрати будь-яке число, то курсор буде переміщено на відповідне число позицій або рядків.





‘Чісло’ПРОБЕЛПеремістити курсор на вказане ‘число’ позицій вправо.
‘Чісло’BACKSPASEПеремістити курсор на вказане ‘число’ позицій вліво.

Також для пеpемещения по тексту можна використовувати наступні команди:





‘Чісло’GПеремістити курсор в зазначену рядок.
‘Число’ |Перемістити курсор у вказану позицію поточного рядка.

В даному випадку ‘число’ обначает кількість повторів команд, яке необхідно виконати.


Для пошуку тексту можна використовувати команду /. Після неї необхідно ввести рядок для пошуку і натиснути . Наприклад:


:/Line 5[Enter]

Після завершення пошуку курсор буде знаходиться на першому символі рядка.


Знак питання ‘?’ працює також, тільки пошук у файлі ведеться назад (тобто у зворотному напрямку)


Для переходу в режим введення тексту можна використовувати наступні команди:







aВставити текст після курсора.
iВставте текст перед курсором.
oВставити новий рядок після поточної.
OВставити новий рядок перед поточної.

(Поточною будемо називати рядок в якій розташований курсор, а поточним символом – символ в якому знаходиться курсор).


В режимі команд можна виконувати редагування набраного тексту за допомогою наступних команд.:










xВидалити поточний символ.
ddВидалити поточний рядок.
‘Чісло’ddВидалити вказане ‘число’ рядків починаючи з поточної.
dwВидалити поточне слово.
‘Чісло’dwВидалити вказане ‘число’ слів починаючи з поточного.
rЗамінити поточний символ на символ, набраний слідом за ‘r’.
‘Число’sЗамінити вказане ‘число’ символів на таке ж ‘число’ набраних слідом символів.

Взагалі останній віддалений фрагмент тексту не втрачається, а зберігається в спеціальному буфері і може бути оперативно (відразу після видалення) відновлений і вставлений в будь-яке місце файла. Таку можливість можна використовувати для перенесення рядків з одного місця в інше. Наприклад, вам необхідно поміняти місцями рядки 3 та 2 нашого файлу:


Для цього перейдіть в командний режим (‘Esc’), встановіть курсор у другий рядок, натисніть комбінацію ‘dd’. Рядок ‘Line 2’ буде видалена (поміщена в буфер) і весь текст зрушиться до верху. У поточній рядку з’явиться рядок ‘Line 3’:



Line 1
Line 3

Далі натисніть клавішу ‘p’. Після поточного рядка (‘Line 3’) з буфера буде відновлена ​​і стане поточної рядок ‘Line 2’:



Line 1
Line 3
Line 2

Відповідно для вставки віддаленої рядка перед поточної можна використовувати команду ‘P’.


Якщо вам необхідно зберегти в буфері рядок без її видалення використовуйте команду ‘yy’. Надалі цей рядок можна скопіювати в інше місце файлу. Для роботи з буфером і для переміщення (копіювання) рядків можна використовувати наступні команди:









ywЗберегти слово в буфері.
‘Чісло’ywЗберегти вказане ‘число’ слів в буфері.
yyЗберегти поточний рядок в буфері.
‘Чісло’yyЗберегти вказане ‘число’ рядків в буфері.
pСкопіювати і помістити інформацію з буфера після поточного рядка.
PСкопіювати і помістити інформацію з буфера перед поточної рядком.

(Після копіювання інформації з буфера не видаляється і її можна використовувати ще).


Існує ще одна цікава команда -. (Точка). Вона виконує останню введену команду. Наприклад, якщо за допомогою команди ‘dd’ була видалена рядок, то натискання на клавішу. призведе до видалення наступного рядка. Якщо рядок була поміщена у вікно редагування з буфера по команді ‘p’, то натискання на. призведе до приміщення у вікно редагування ще однієї копії рядка.


При запуску ‘vi’ можна вказати наступні параметри:








viРедагує тимчасовий файл, якому при збереженні тексту необхідно дати ім’я.
vi +45 fileПереходить на рядок з номером 45.
vi +/word fileШукає перше входження слова “word”
$ Vi-c командаВиконати команду [cmd] негайно після початку сеансу редагування.
$vi -rВідновити вказані файли, якщо пpоізошел аваpійний вихід з pедактоpом або раптове завеpшения системи. Якщо файли не опpеделен, вивести список файлів, якому можуть бути восстанволени.

Для виходу з редактора і збереження тексту використовуєте наступні команди:








:wзберегти текст без виходу з редактора
: W ім’я_файлуЗберегти текст у вказаному файлі.
: Wq або: xЗберегти текст і вийти з редактора.
:qВийти з редактора. Якщо файл був модифікований, вам буде запропоновано для виходу без збереження використовувати команду: q!
:q!Вийти з редактора без збереження тексту.

Насправді ‘vi’ працює з копією вашого файлу, тому в разі збою ваш вихідний файл навряд чи постраждає.

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


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

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

Ваш отзыв

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

*

*