[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Vi

Шта је vi?

По целом вашем рачунару је разбацано хиљаде текстуалних фајлова. Новим корисницима ово може да делује збуњујуће, али за конфигурацију готово свега у Слаквер Линуксу се користе текстуални фајлови. Ово омогућује кориснику да измене у систему чини брзо, лако и интуитивно. У петом поглављу смо се дотакли неких команди као што су cat и less које можемо користити за читање оваквих фајлова, али шта ако желимо да начинимо измене у истим? У ту сврху нам је потребан уређивач текста, а vi је прави избор за то.

Укратко, vi је један од најстаријих и најмоћнијих уређивача текста који се користи и данас. Он је омиљен код администратора, програмера, хобиста и осталих корисника широм света. Заправо, скори цела ова књига је написана уз помоћ vi уређивача текста; једино следеће поглавље о Емаксу је написано Емаксом.

Потребно је мало дубље објашњење како би се схватило шта је vi данас, како Слаквер Линукс технички не садржи vi. Уместо тога, Слаквер нуди два vi клона: elvis(1) и vim(1). Ови клонови садрже многе додатне функционалности у односу на vi, као што су истицање синтаксе, режими бинарног уређивања и подршку за мрежу. Нећемо ићи много дубоко по питању детаља везано за ове карактеристике. Подразумевано, ако покренете vi у Слаквер Линуксу, користићете elvis, тако да ће се сви примери у овом поглављу односити на коришћење поменутог клона. Уколико сте раније користили другу Линукс дистрибуцију, сигурно сте се упознали са vim-јем. Уколико је тако, можда ћете желети да промените симболички линк за /usr/bin/vi да указује на /usr/bin/vim, или да додате алиас у покретачке скрипте шкоњке. Сматра се да је vim много богатији функцијама од elvis-а, али је elvis много мањи програм и садржи све оне функције које ће већини корисника бити потребне.

vi је веома моћан, а у исто време гломазан и захтеван за нове кориснике који желе да га науче. Ипак, овладавање vi-јем је важна вештина за било ког администратора који држи до себе, јер је vi укључен у скоро сваку Линукс дистрибуцију, сваки БСД систем, и сваки Јуникс систем који постоји. Чак је укључен и у МекОС X. Једном, када научите vi, нећете имати потребу за изучавањем других уређивача текста, како бисте радили на било ком од ових система. Заправо, vi клонови су портовани на Мајкрософт Виндоуз системе, тако да га и тамо можете користити.

Различити режими у vi уређивачу

Нови корисници су углавном фрустрирани када први пут користе vi. Када се позове без аргумената, vi ће приказати овакав екран:

~
~
~
~
~
~
~
~
~
~
~
                                     Command

Овде ће корисник почети да куца очекујући да се тастери које је притиснуо појаве у документу. Уместо тога, десиће се нешто сасвим чудно. Разлог за ово је једноставан. vi има различите оперативне режиме. Постоји командни режим (енгл. command mode)и режим уписивања текста (енгл. insert mode). Подразумевани је командни режим; у овом режиму свака команда (тастер) представља одређену акцију као што је померање курсора, брисање текста, умножавање текста, претрага итд.

Отварање, снимање и напуштање

У реду, дакле одлучили сте се да учите коришћење vi-ја. Прва ствар коју треба да научите је како да отворите и снимите документе. Отварање фајлова је прилично лак посао. Једноставно укуцајте име фајла као аргумент у командној линији и vi ће га учитати. На пример,

vi chapter_11.xml

отвара фајл chapter_11.xml и учитава његов садржај на екрану. Али шта кад завршимо са документом и желимо да га снимимо? То можемо учинити из командног режима коришћењем команде :w. У командном режиму притиском на тастер : позиционирате курсор на само дно прозора и тиме добијате могућност уношења потребних команди. (Ово је стручно познато као ex-режим по цењеној ex апликацији коју нећемо овде документовати). Команда за снимање тренутног рада је :w. Када буде извршена, vi ће исписати промене начињене у баферу у фајл. Уколико желите да отворите други документ, једноставно користите команду :e други_документ и vi ће га отворити. Ако сте начинили измене у баферу и нисте их снимили, :e се неће извршити и штампаће поруку упозорења у доњој линији. Можете заобићи ово упозорење :e! командом. Многе команде се могу присилити додавањем знака !. Ово говори vi уређивачу да желите да одбаците измене које сте начинили у баферу и да отворите нови документ.

Али шта ако ми се не свиђају измене и желим да напустим документ или да почнем испочетка? То се, такође, лако постиже. Извршавањем команде :e! без аргумената поново отварате тренутни документ испочетка. Напуштање vi уређивача је исто тако крајње једноставно: извршавањем :q команде уколико нисте начинили измене у баферу, или :q! команде уколико желите да одбаците начињене измене и напустите vi уређивач.

Кретање

Новим корисницима је најтежа ствар за учење управо кретање кроз vi. vi традиционално не користи тастере стрелице за померање курсора, мада је то у Слакверу опција. Уместо тога, кретање је само још једна команда покренута у командном режиму. Разлог за ово је крајње једноставан. vi је старији од тастера стрелица на тастатури. Зато је за померање курсора морало да се изабере неколико преосталих тастера и одабрани су тастери који се при слепом куцању користе као орјентир за десну руку, а то су h, j, k, и l. Овим тастерима се помера курсор увек кад је vi у командном режиму. Ово је мала табела како бисте схватили како ови тастери функционишу.

Команда Резултат
hПомера курсор за једно место лево
jПомера курсор за једно место доле
kПомера курсор за једно место горе
lПомера курсор за једно место десно

Кретање је мало моћније од овог простог примера. Попут многих командних тастера, овим тастерима за кретање могу бити додати нумерички аргументи. На пример, 10j ће померити курсор 10 линија доле. Можете се, такође, померити на крај или почетак тренутне линије тастером $ односно ^.

Уређивање документа

Сада када знамо како да отворимо и напустимо документ, као и да се крећемо унутар њега, време је да научимо како да га уређујемо. Основно значење уређивања је улажење у режим уписивања текста притиском на тастере i или a. Ови командни тастери уносе текст на тренутну позицију курсора или га додају иза тренутне позиције курсора. Када једном приступите режиму уписивања текста, можете нормално да куцате текст који ће бити смештен у документу. Како бисте снимили текст, потребно је да напустите дати режим и пређете у командни притиском на тастер ESC.

Листа пречица у Vi уређивачу текста

С обзиром да vi може бити тежак за учење, овде сам припремио листу пречица које ће вам помоћи при обављању основних задатака док се не опустите.

Команда Резултат
hПомера курсор за једно место лево
jПомера курсор за једно место доле
kПомера курсор за једно место горе
lПомера курсор за једно место десно
10jПомера курсор 10 линија доле
GПомера курсор на крај документа
^Помера курсор на почетак линије
$Помера курсор на крај линије
ddУклања линију (и складишти је у бафер за умножавање)
5ddУклања 5 линија (и складишти их у бафер за умножавање)
dwУклања једну реч (и складишти је у бафер за умножавање)
5dwУклања 5 речи (и складишти их у бафер за умножавање)
yyYank (умножава) линију (и складишти је у бафер за умножавање)
ywYank (умножава) једну реч (и складишти је у бафер за умножавање)
5ywУмножава 5 речи (и складишти их у бафер за умножавање)
pНалепљује садржај бафера за умножавање на позицију курсора
PНалепљује садржај бафера за умножавање изнад позиције курсора
rЗамењује један знак
RЗамењује више знакова
xБрише знак
XБрише претходни знак
uПоништава последњу акцију
:s'old'new'gЗамењује све 'old' са 'new' (само у датој линији)
:%s'old'new'gЗамењује све 'old' са 'new' (у свим линијама)
/asdfЛоцира следећу појаву asdf
:qНапушта (без снимања)
:wСнима тренутни документ
:w fileСнима тренутни документ као 'file'
:xСнима и напушта

Кретање кроз поглавља

Претходно поглавље: Рад са системима датотека

Следеће поглавље: Emacs

Извори

  • Оригинални извор: http://www.slackbook.org/beta
  • Изворно писали Alan Hicks, Chris Lumens, David Cantrell, Logan Johnson
 sr:slackbook:vi ()