vi

Vi

Popis obrazu NetBSD 6.1 vi C Hello World.png. Informace
Tvůrce Bill Joy
První verze 1976
Poslední verze 050325 (25. března 2005)
Vklad ex-vi.cvs.sourceforge.net/ex-vi/ex-vi
Napsáno VS
Operační systém Unixový typ
Typ Modální textový editor ( d )
obslužný program UNIX ( d )
Licence Licence BSD
webová stránka ex-vi.sourceforge.net

vi je textový editor na celou obrazovku, který napsal Bill Joy v roce 1976 o rané verzi distribuce BSD Unix .

Je přítomen automaticky na většině současných unixových systémů , často jako klon původního softwaru vi .

Původ jména

Jméno vi pochází z co nejkratší (tj. Jednoznačné) zkratkou vizuální příkazu z textového editoru ex , protože tento příkaz přepíná bývalý editor z řádek po řádku režimu na celou obrazovku režimu  : je proto zpočátku jen vizuální rozhraní (v English, Visual Interface ) editora ex (samo o sobě rozšíření online editoru ed ). ex je vždy k dispozici ve vi stisknutím : v příkazovém režimu. V praxi se při vyvolání vi nebo ex spustí jeden program: o jeho chování rozhoduje název, pod kterým byl vyvolán.

Jméno vi odpovídající iniciálám i názvu jeho instalačního souboru se obvykle vyslovuje vyslovením dvou písmen v angličtině, tedy „vi-aille“ , [vi: aɪ] , spíše než jako plnohodnotný slovo [vi] . Analogie tohoto jména s římskou číslicí VI (šest) je náhodná.

Princip činnosti

vi je modální editor, tj. význam tlačítek a kláves se mění podle toho, v jakém režimu je.

V režimu vkládání se zadaný text vloží do dokumentu. Stisknutím klávesy Esc z režimu vkládání můžete přepnout do příkazového režimu , ve kterém klávesy odpovídají pohybům kurzoru nebo editačním funkcím. Například j posune kurzor o jeden řádek dolů, x vymaže znak pod kurzorem (pozice „pod kurzorem“ může označit pravou část kurzoru, pokud je kurzor umístěn mezi znaky, nad znak podtržítka nebo pod obdélníkový blok, v závislosti na tom, jak terminál představuje kurzor).

Klíče zadané v příkazovém režimu nejsou vloženy do textu, což je běžná příčina nejasností pro uživatele, kteří začínají s vi.

V příkazovém režimu lze provádět mnoho operací sériově jediným stiskem kláves, aniž byste museli držet stisknutou klávesu Alt nebo Ctrl . Komplikovanější operace se skládají z více primárních operací. Například d3w vymaže tři slova ( d pro mazání a w pro slovo ), c2fa mění ( mění ) text, dokud nenajde ( nenajde ) druhého ( 2 ) a . Zkušeného pracovníka, umožňuje velmi efektivně pracovat, umožňuje také aby uživatel stále držel ruce na klávesnici.

Starší verze vi neposkytovaly žádné informace o tom, v jakém režimu jsou. Bylo běžné, že uživatelé automaticky stiskli klávesu Esc, aby zajistili, že editor byl v příkazovém režimu (vi pípne, pokud je již v tomto režimu). Modernější verze vi označují režim ve stavovém řádku nebo graficky (například tvar nebo barva kurzoru). Grafické implementace vi (např. GVim ) také podporují použití myši a nabídek pro přístup k editačním funkcím.

Vývoj

vi se stal de facto standardním editorem pro unix a byl oblíbeným editorem mnoha hackerů až do příchodu Emacsu v roce 1984 . Je třeba poznamenat, že Emacs je více než jen textový editor a přesto často soutěží s vi. K dnešnímu dni (2011) lze vi nebo jeden z jeho klonů najít téměř ve všech unixových instalacích. Specifikace Single UNIX (konkrétněji „IEEE Standard 1003.2, část 2: Shell a obslužné programy“) zahrnuje vi. Jakýkoli systém vyhovující této specifikaci tedy zahrnuje vi.

vi je stále široce používán uživateli různých variant Unixu. Spouští se rychleji než těžké verze „editoru“ Emacsu a využívá méně paměti. Výsledkem je, že i fanoušci Emacsu jej používají jako editor pro e-mail nebo pro malé úpravy.

Při vytváření diskety pro obnovení ( záchranný disk , u systémů, jejichž pevný disk již nepracuje správně), je jako editor často zvolena vi, vzhledem ke své kompaktnosti (na disketách je velmi omezené místo) a skutečnosti, že většina lidí provádějící záchranné operace jsou schopni jej použít.

vi a Emacs jsou vytrvalí válečníci ve válce editorů .

Klony a deriváty

Existuje mnoho textových editorů založených na vi. Klony jsou bezplatné nebo nesvobodné implementace vi, to znamená, že teoreticky následují standardní sadu příkazů POSIX vi. Většina těchto klonů však také podporuje další funkce. Deriváty jsou programy, textové editory či nikoli, které si pro svou vlastní činnost zachovaly princip fungování vi (částečně nebo úplně).

Úplnější seznam naleznete v níže uvedených externích odkazech .

Začínáme s vi

Uživatelé, kteří začínají s vi, se často potýkají s obtížemi, jednak kvůli zkratkám použitým pro každý z příkazů, jednak kvůli tomu, že se účinek těchto zkratek mění v závislosti na tom, v jakém režimu je vi.

Efektivním způsobem, jak začít s vi, je postupovat podle výukového programu od začátku do konce s vysvětlením jednodušších příkazů. Většina systémů poskytujících implementaci vi obsahuje také výukový program pro vi.

Pochopením jeho principu práce s několika vysvětleními a jednoduchými příklady může většina uživatelů dosáhnout svých cílů pomocí vi. Plynulost s vi se však obecně považuje za delší než u ostatních editorů, s nimiž se často porovnává. Obránci vi tvrdí, že tato počáteční obtíž je více než vyvážena účinností editoru, jakmile se dostanete pohodlně.

Ovládací prvky a rozhraní považovány za nejasné

Začátečníci jsou často zmateni příkazy ve vi. Ty jsou často omezeny na jedno písmeno a na první pohled je velmi obtížné je zapamatovat, zejména proto, že editor prezentuje různé pohledy (čtení, vkládání, otevřený režim atd.), Které nejsou jasně rozlišeny a přechod mezi těmito režimy často zůstává bez povšimnutí. .

Většina příkazů ve vi je vybrána pro:

Modální chování

Když začínáte s vi, je nutné si uvědomit, že vi má několik provozních režimů. Dva hlavní režimy jsou příkazový režim (ve kterém se spustí vi) a režim vložení . Objednávky i ( i nsertion) nebo nemá ( dding) kontrolní režim umožňuje přepnout do režimu vkládání, zatímco klávesy Esc ukončíte režim vkládání a návrat do příkazového režimu.

vi má také další provozní režim, který nabízí možnost definování makro příkazů integrací skutečného programovacího jazyka pro automatizaci úloh úpravy textu.

Je také možné volat vi s argumenty, aby automaticky spouštěl příkazy při otevření souboru. Například příkazový řádek:

vi -c "1,%s/Deux/Trois/g|:wq" FICHIER

spustí vi, které otevře soubor „SOUBOR“, poté nahradí všechny „dvojky“ v souboru „trojky“ a nakonec soubor uloží a ukončí.

Vlastnosti vi

Makra a zkratky

vi umožňuje definovat makro příkazy a zkratky.

Makra umožňují nahradit jeden stisk klávesy jiným, což umožňuje definovat nové příkazy. Například,

:map v 10dd

vytvoří příkazový režim v příkaz, který odstraní bloky 10 řádků.

Zkratky se vyhýbají psaní poměrně dlouhé řady písmen. Například :

:ab GNU gnu is not unix

vytvoří zkratku GNU , která je v režimu vkládání nahrazena gnu není unix, jakmile zadáte dostatek znaků k vyřešení jakékoli nejednoznačnosti (zkratky se obvykle rozšíří, když se vloží mezera označující konec slova).

Možnosti

Chování vi a jejích příkazů lze upravit pomocí toho, co vi nazývá „options“. Příkaz : set se používá k jejich prohlížení a úpravám. Některé možnosti jsou Boolean, to znamená, že mohou nabývat pouze dvou hodnot: true nebo false , nebo přesněji aktivovaných a deaktivovaných . Například :

:set number

kterou lze zkrátit

:set nu

nebo

:se nu

zobrazí číslo každého řádku.

:set nonumber :set nonu

jsou ekvivalentní a umožňují deaktivaci této možnosti.

Mezi booleovskými možnostmi můžeme najít (nevyčerpávající seznam):

Objednané Účinek
: nastavit ignorovat při hledání řetězců ignorovat velká a malá písmena
: nastaveno pouze pro čtení zakazuje úpravy otevřeného souboru
: nastavit autoindent Automaticky odsazení kódu při úpravách
: nastavit pravítko označuje číslo řádku a sloupce, na kterém je kurzor umístěn
: nastavit režim zobrazení zobrazit režim vi, ve kterém je

Ostatní možnosti mají hodnotu. Například :

:set tags=./tags

vi říká, kde najít značky souborů .

Soubor všech dostupných možností lze zobrazit pomocí

:set all

Konfigurační soubor

Sada možností vi (stejně jako makra a zkratky) lze nastavit pro každou relaci úprav jejich přidáním do souboru ~ / .exrc . Tento soubor se automaticky načte při spuštění vi a příkazy, které obsahuje, se provádějí, jako by byly zadány uživatelem ( : initial je zbytečné). Příklad:

set nu map @ dd ab sig Mr. Robert Le NomBienLong

Příklady příkazů

Příklady jednoduchých příkazů

V následující tabulce jsou uvedeny některé základní příkazy editoru vi, které jsou nezbytné pro nejjednodušší úpravy. Chcete-li zadat příkazy, musíte nejprve ukončit režim editoru stisknutím klávesy Esc .

Objednané Účinek
# příkaz provést # krát příkaz (například 5dd vymaže 5 řádků)
! objednal spusťte příkaz shellu (například :! gcc -o ahoj ahoj.c )
>> a << přidat a odebrat kartu na začátku řádku
/ toto a ? toto vyhledá výskyty řetězce znaků foo za kurzorem a před kurzorem ( n přejde na další výskyt a N přejde na předchozí výskyt)
: # umístěte kurzor na řádek #
: $ umístěte kurzor na poslední řádek
:. = vrací číslo aktuálního řádku
0 přesuňte kurzor na začátek řádku
$ přesuňte kurzor na konec řádku
h a l přesuňte kurzor o jeden znak doleva a doprava
j a k přesuňte kurzor na následující a předchozí řádek
např přesuňte kurzor na začátek souboru
G přesuňte kurzor na konec souboru
H a L. pohybujte kurzorem nahoru a dolů po obrazovce
na přesuňte kurzor o jeden znak doprava a přejděte do režimu vkládání
NA přesune kurzor na konec aktuálního řádku a přepne do režimu vkládání
vs. vymaže určitý počet znaků v závislosti na dílčím příkazu a přepne se do režimu vkládání (například cl umožňuje změnit aktuální znak, cw konec aktuálního slova)
VS vymaže znaky z pozice kurzoru na konec řádku a přepne do režimu vkládání
dd smažte aktuální řádek a zkopírujte jej do vyrovnávací paměti
dw odstranit slovo za kurzorem a zkopírovat ho do vyrovnávací paměti
dW odstraňte řetězec znaků za kurzorem až do dalšího prázdného znaku
: e následovaný názvem souboru, otevřete tento soubor pro úpravy
D odstranit konec řádku z kurzoru
i přepne do režimu vkládání na pozici kurzoru
přesune kurzor na začátek řádku a přepne do režimu vkládání
Ó otevřete nový řádek pod aktuálním řádkem
Ó otevřete nový řádek nad aktuálním řádkem
p vložte obsah vyrovnávací paměti za kurzor (nebo za aktuální řádek, pokud vyrovnávací paměť obsahuje řádky)
P vložte obsah vyrovnávací paměti před kurzor (nebo před aktuální řádek, pokud vyrovnávací paměť obsahuje řádky)
: q ukončete vi
: q! ukončete vi, i když změny nebyly uloženy
r nahradit znak pod kurzorem
u zruší účinky předchozího příkazu
w umístí kurzor na první znak dalšího slova
: w Uložit aktuální soubor
: wq nebo : x nebo ZZ uložit aktuální soubor a ukončit
X odstranit znak pod kurzorem
X odstraní znak nalevo od kurzoru
yy zkopíruje aktuální řádek do vyrovnávací paměti ( p vloží zkopírovaný řádek za aktuální řádek)
yw zkopírujte slovo za kurzor do vyrovnávací paměti ( p vloží zkopírované slovo za kurzor)

Příklady pokročilých příkazů

Následující příkazy ukazují, co vi dělá, když uživatel hledá složitější editační příkazy.

Objednané Účinek
„ryy zapamatovat si aktuální řádek v registru "r
"rp vložte obsah registru „r za aktuální řádek nebo za kurzor
: # 1, # 2t # 3 zkopírujte řádky # 1 do # 2 za řádkem # 3
: # 1, # 2m # 3 přesunout řádky # 1 na # 2 za řádek # 3
: # 1, # 2s / toto / tutu / g vyměnit na tratích # 1 # 2 všechny výskyty řetězec znaků TOTO podle tutu
:% s / toto / tutu / g vyměnit na každém řádku všechny výskyty řetězec znaků TOTO podle tutu
:% s% až / až% tu / tu% g nahradit na každém řádku všechny výskyty řetězce znaků do / do za tu / tu (to ukazuje, že můžeme použít jiný oddělovací znak než / - zde % )
: s /.*/ \ U & / změňte aktuální řádek na velká písmena
:% s / ^ foo // vymazat na každém řádku první výskyt řetězce znaků foo, pokud je na začátku řádku
: # 1, # 2g / toto / d odstraní mezi řádky # 1 až # 2 řádky obsahující řetězec znaků foo
: g! / toto / d odstranit řádky, které neobsahují řetězec foo
: g / ^^^^^^^^ d odstranit prázdné řádky
: # 1, # 2g / toto / s / tutu / titi / gc nahradit po potvrzení na řádky # 1 až # 2 obsahující řetězec znaků toto všechny výskyty řetězce znaků tutu od titi
: r toto.txt vložte obsah souboru toto.txt
: r! ls -l vložte výsledek příkazu ls -l do aktuálního souboru
: # 1, # 2w toto.txt uložit řádky # 1 do # 2 do souboru toto.txt
: e! znovu otevře aktuální soubor (například se použije, pokud byl soubor mezitím upraven)

Poznámky a odkazy

  1. „  The Traditional Vi  “ (přístup k 19. února 2018 )
  2. ex-vi na SourceForge.net
  3. svicc na floodgap.com
  4. bvi na SourceForge.net

Bibliografie

Podívejte se také

Související články