Pozicionáló parancsok

Szavak, mondatok és egyéb szövegelemek

A pozicionáló parancsok előtt ismerkedjünk meg néhány alapvető vi szövegobjektummal, nevezetesen a szóval, mondattal, bekezdéssel és a szekcióval. Ezek egyfelől abban segítenek bennünket, hogy nagyobb lépésekkel tudjunk mozogni a fájlban, másrészt ezekkel tudunk nagyobb összefüggő elemeket kijelölni szerkesztendő állományunkban.

A szóra a vi két definíciót alkalmaz. A szűkebb értelmezés szerint szó a kizárólag alfanumerikus karaktereket és '-' karaktert tartalmazó karaktersorozat. Az ilyen értelmezés szerinti szavak között ugrálhatunk a b és w parancsokkal, b mindig a baloldali, w pedig a jobboldali legközelebbi szókezdetet jelöli.

Tágabb értelmezés szerint a vi a szó részének értelmezi az összes, nem szóköz és sorvége karaktereket. E definíció szerint tehát a központozó karakterek is a szó részét képezik. Az eszerint definiált szavak közt a nagybetűs B és W parancsokkal mozoghatunk.

A mondat a vi definíciója szerint szavak olyan sorozata, melyet szóköz vagy soremelés előz meg, és vagy soremelés és üres sor, vagy egy központozó karaktert követő legalább két szóköz zár le. A mondat elejére és végére a '(' és ')' karakterekkel mehetünk.

A bekezdés (paragrafus) az üres sorokkal határolt sorok összessége. Bekezdés elejére illetve végére a '{' és '}' karakterekkel léphetünk.

A vi parancsok felépítése

A pozicionáló parancsoknak nem csak a fájlban való mozgáskor van szerepük, legalább ilyen fontos, hogy segítségükkel jelölhetjük ki egy-egy vi parancs hatókörét. Ennek megértéséhez röviden tekintsük át a vi parancsok általános felépítését.

Minden vi parancsot egy betű jelöl, melyet megelőzhetnek és követhetnek opcionális argumentumok is. Egy vi parancs általános felépítése a következő:

argumentum parancs szövegobjektum

Az argumentumokkal leggyakrabban azt adjuk meg, hogy a szóban forgó parancsot hányszor ismételjük meg, de a későbbiekben látni fogjuk, hogy például a puffer- és markerjelölés is itt történik. A parancs után szereplő szövegobjektum pedig arra utal, hogy mekkora szövegterületre terjed majd ki a szóban forgó vi parancs hatálya. Mindez valóban száraznak tűnhet, jöjjön hát néhány példa, az egyszerűbbektől a bonyolultabbakig.

Legegyszerűbb megoldásként egyes parancsokat megadhatunk önmagukban is, például az x parancs törli azt a karaktert, amelyen a kurzor áll. E parancsokat megelőzhetjük sokszorozó argumentummal: a 3x parancs a kurzortól számított 3 karaktert töröl le, hasonlóképpen, az l parancs egy karakterrel jobbra mozgatja a kurzort a sorban, míg 10l hatására tíz karakternyit mozdulhatunk jobbra. E sokszorozó argumentum hatására tehát az adott parancs ismétlődik n-szer.

Más parancsok nem állnak meg önmagukban, paraméterek nélkül. Ilyen például a törlést végző d parancs. A vi konvenciói szerint, ha egy ilyen parancs karakterét megduplázzuk, a parancs a teljes aktuális sorra fog vonatkozni. Esetünkben tehát a dd törli a kurrens sort. Ha viszont a parancs betűje után egy normál pozícionáló vi parancsot adunk meg, a törlési parancs hatálya a pillanatnyi kurzorpozíciótól addig a pontig terjed a fájlban, ameddig a pozicionáló paranccsal jutottunk volna. Így dw a pillanatnyi pozíciótól a következő szó elejéig töröl, d$ a sor végéig, d) a mondat végéig, d23G a huszonharmadik sorig, és így tovább. Természetesen a pozicionáló parancsoknál is szerepelhetnek sokszorozó argumentumok, ahogy 3w azt jelenti, hogy három szót mozdulunk jobbra a kurzortól, úgy d3w azt jelzi, hogy három szót törlünk a kurzortól kezdve. Utóbbival viszont egyenértékű lesz a 3dw megadás, ami azt jelenti, hogy háromszor hajtunk végre szótörlést.

Pozicionálás karakterek alapján

h, <BACKSPACE>

A kurzort egy karakterrel balra mozgatja.

l, <SPACE>.

A kurzort egy karakterrel jobbra mozgatja

$

A kurzort a sor utolsó karakterére állítja.

0,

A kurzort a sor első karakterére állítja.

n

A kurzort a sor n-edik oszlopára állítja.

^

A kurzort a sor első nem blank karakterére állítja.

fx

A kurzort jobbra mozgatja az első x karakterre.

Fx

A kurzort balra mozgatja az első x karakterre.

tx

A kurzort jobbra mozgatja, az első x karakter elé.

Tx

A kurzort balra mozgatja, az első x karakter mögé.

;

A megelőző f, F, t, T parancsok által keresett karakter következő előfordulását keresi.

,

Az f, F, t, T parancsok által előzőleg keresett karakter újabb előfordulását keresi visszafelé.

Az összes itt felsorolt parancs a kurrens sorban működik, beleértve a t és f parancsokat is.

Pozicionálás sorok alapján

J

A kurzort egy sorral lejjebb mozgatja.

K

A kurzort egy sorral feljebb mozgatja.

+, <CR>

A kurzort lefele mozgatja, a következő sor elejére.

-

A kurzort felfele mozgatja, a felette lévő sor elejére.

Pozicionálás szavak alapján

 

w, W

A kurzort a következő szó első karakterére mozgatja.

B, B

A kurzort a megelőző szó első karakterére viszi.

Pozicionálás mondatok alapján

(

A kurzort a mondat elejére viszi.

)

A kurzort a következő mondat elejére viszi.

Pozicionálás bekezdések alapján

{

A kurzort a bekezdés elejére viszi.

}

A kurzort a következő bekezdés elejére viszi.

Pozicionálás a képernyőn

nH

A kurzort a képernyő első (illetve n-edik) sorára viszi.

M

A kurzort a képernyő közepső sorára viszi.

nL

A kurzort a képernyő utolsó (illetve alulról az n-edik) sorára viszi.

 

Pozicionálás az állományban - görgetés

^f

Teljes képernyőnyit előre görget.

^d

Félképernyőnyit előre görget.

^b

Teljes képernyőnyit hátrafele görget.

^u

Félképernyőnyit hátrafele görget.

Pozicionálás sorszám alapján

^g

Az alsó sorban kiírja a kurrens állomány státuszinformációit (név, módosították-e) és a kurzorpozíciót (sorszám/teljes sorok száma, százalékos pozíció az állományon belül).

G

A kurzort a buffer utolsó sorának elejére állítja.

NG

A kurzort a buffer n-edik sorának elejére állítja.

Pozicionálás mintakereséssel

A / illetve a ? karakter leütése után a kurzor a képernyő utolsó sorába, az u.n. parancssorba kerül, a mintát ide kell folyamatosan gépelni. Természetesen amit itt írunk, az nem kerül a javítandó szövegbe.

/pattern

A pattern minta következő előfordulását keresi a bufferben. A kurzor pattern első karakterére áll. Ugyanazon minta ismételt előfordulását a / karakter minta nélkül történő megadásával kereshetjük.

?pattern

Visszafele keresi pattern következő előfordulását. A kurzort pattern első karakterére állítja. Ugyanazon minta ismételt előfordulását a ? karakter minta nélkül történő megadásával kereshetjük.

N

Megismétli az utolsó mintakereső utasítást.

N

Megismétli az utolsó mintakereső utasítást, de az azzal ellentétes irányba.

 

Tartalomjegyzék