Certificat | LPIC-1 |
Examen: | 101 (torneu a la resta de temes) |
Fitxers: | UD_8_3_editors_vi_altres.pdf |
Objectius: | http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_101_detailed_objectives |
Dipòsit SVN: | https://svn.projectes.lafarga.cat/svn/lpi/Materials/Examen_101/103.8 |
Usuari: | anonymous |
Paraula de pas: | qualsevol paraula de pas |
Vi (pronunciat "viai") va ser un dels primers editors de text a pantalla completa i està dissenyat per ser una aplicació molt petita. Va ser creat el 1976 per als sistemes Unix i actualment vi és l'editor de text que podem estar segurs que portarà qualsevol distribució Linux o sistemes de recuperació (consoles de recuperació, disquets, etc).
Al principi la sintaxi de vi pot ser una mica complexa, sobretot quan s'està acostumat a editors de text més contemporanis o basats en entorn gràfic. És imprescindible però, conèixer la sintaxi ja que en certs casos vi pot ser l'únic editor de text disponible al sistema. A més, algunes ordres del sistema com man utilitzen sintaxis derivades de vi.
Existeix una versió millorada de vi anomenada vim (vi improved). Les ordres d'aquest manual funcionen tant amb vi com amb vim.
NOTA: Cal tenir en compte que de fet, algunes distribucions (com per exemple Ubuntu), executant directament vim quan escrivim l'ordre vi.]
Vi està força inspirat en la comanda ex i és un editor basat en modes (Editor Modal).
Vi és una aplicació que sol existir a totes les distribucions Linux per defecte. De fet, al ser una aplicació tan lleugera, sol ser l'editor per defecte utilitzar en distribucions molt petites.
A Ubuntu, la comanda vi per defecte executa vim, concretament vim.tiny:
$ whereis vi vi: /usr/bin/vi /usr/share/man/man1/vi.1.gz /usr/share/man/man1/vi.1posix.gz $ ls -la /usr/bin/vi lrwxrwxrwx 1 root root 20 2009-04-26 10:42 /usr/bin/vi -> /etc/alternatives/vi $ ls -la /etc/alternatives/vi lrwxrwxrwx 1 root root 17 2009-04-26 10:41 /etc/alternatives/vi -> /usr/bin/vim.tiny
L'aplicació vim.tiny és proporcionada pel paquet vim-tiny:
$ dpkg -S /usr/bin/vim.tiny vim-tiny: /usr/bin/vim.tiny
En sistemes Debian, el manual de vi es proporcionat pel paquet:
manpages-posix
Tal com podeu comprovar si executeu:
$ whereis vi vi: /usr/bin/vi /usr/share/man/man1/vi.1.gz /usr/share/man/man1/vi.1posix.gz $ dpkg -S /usr/share/man/man1/vi.1posix.gz manpages-posix: /usr/share/man/man1/vi.1posix.gz
Vi pot operar en 3 modes:
NOTA: Cal tenir en compte que la terminologia del modes de vi varia segons la literatura que es consulta. Alguns llibres o tutorials parlen només de 2 modes, el mode normal (mode ordre) i el mode d'entrada de text (o edit mode o entry mode) en comptes del mode inserció. El mode ex, és sovint considerat dins del mode ordre (les ordres ex són les ordres anomenades "colon commands").
Per moure's entre els diferents modes:
Cal tenir en compte que després d'executar el mode ex, vi sempre torna a entrar automàticament al mode comanda.
IMPORTANT: En cas que tingueu dubte del mode en que us trobeu, premeu la tecla ESC i anireu al mode ordre.
Caràcter a caràcter:
Les tecles bàsiques per tal de moure's pel document són les fletxes del teclat. Per raons històriques, també podeu utilitzar per tal de desplaçar-se pel document les tecles:
h --> Fletxa esquerra j --> Fletxa avall k --> Fletxa amunt l --> Fletxa dreta
Aquesta combinació de tecles es deguda a que originàriament el creador de vi, Bill Joy, utilitzava un teclat ADM3A al qual les fletxes es trobaven en aquestes tecles:
Des del mode ordre (des de el mode inserció tindran el seu sentit habitual) també podeu utilitzar:
Barra d'espai --> moure's endavant Backspace --> Moure's endarrere.
De paraula en paraula
w (word) --> Una paraula endavant (a la dreta). b (before) --> Una paraula endarrere (a l'esquerre)
De línia en línia:
^ --> Ens movem a l'inici de la línia $ --> Ens movem al final de la línia actual Return --> Ens movem a l'inici de la següent línia
Per la pantalla:
H (high) --> Es mou a la part superior de la pantalla L (low) ---> Es mou a la part inferior de la pantalla. M (Middle) --> Es mou a la meitat de la pantalla.
Avançar/Retrocedir pàgines:
Ctrl-F (forward) --> s'avança una pantalla i col·loca el cursor a la part superior esquerra e la nova pantalla. Ctrl-D --> s'avança meitat de pantalla. Ctrl-B (scroll backward) ---> Retrocedeix una pantalla. Ctrl-U --> Retrocedeix mitja pantalla.
Altres:
1G: mou el cursor al principi del document G o Shift+g: Mou el cursor al final del document.
Cal escriure:
liniaG
Per exemple per anar a la línia 5
5G
Podem entrar al mode d'inserció des del mode ordre, utilitzant qualsevol de les següents ordres:
Permet afegir una línia i escriure:
o: Open text. Insereix una nova línia i ens col·loca el cursor en mode inserció a la nova línia.
u --> Desfà l'últim canvi. U --> Desfà tots els canvis que s'han fet a la línia on està el cursor.
Yank és el nom de l'ordre copiar a vi (i el nom de l'ordre enganxar a Emacs).
Per exemple, per copiar 4 línies escriuriem:
4yy
Fixeu-vos que a la línia d'estat del final del document apareix:
4 lines yanked
Si en comptes de copia voleu tallar, podeu utilitzar l'ordre dd.
4dd
veureu que a la línia d'estat apareix el text:
4 fewer lines
I que s'han esborrat (tallat) les 4 línies des de el cursor (la línia a la que està el cursor i les 4 següents).
Un cop tallat o copiat el text el podeu enganxar a qualsevol lloc del document situant el cursor al lloc desitjat i polsant la tecla.
p
o P (shift+p).
També es poden utilitzar buffers amb nom:
Recursos:
Si la cerca arriba al final, amb vim, es continua la cerca des de l'inici del document. Per buscar cap endarrere utilitzeu ?, per exemple ?color.
Caràcter a caràcter:
s (substitute)--> Substitueix el caràcter sota el cursor per un o més caràcters. Es tecleja s, el text a nou i un cop acabat es pulsa ESC r (replace) --> Substitueix el caràcter sota el cursor per un nou caràcter. Es tecleja r més un sol caràcter i automàticament vi torna al mode ordre.
Transposicionar caràcters:
Pot ser útil per tal de modificar errors típic com qeu en comptes de que. Col·loqueu el cursor sobre el primer caràcter i pulseu xp.
Paraula per paraula:
cw (complete word) --> Es posiciona el cursos a l'inici de la paraula, es tecleja cw seguit de la nova paraula i ESC quan s'hagi acabat.
Línia per línia
cc --> Es pot posar el cursos en qualsevol part de la línia i polsar cc. La línia desapareix deixant una nova línia en blanc a la que podrem inserir text. Al finalitzar polsar ESC. C --> Modificar una línia des de la posició del cursor fins al final.
Partir/unir línies
Partir una línia--> es col·loca el cursor a la posició on es vol partir la línia i premeu r(replace) seguit d'Enter Unir dos línies --> col·locar el cursor a la línia superior i teclejar J.
Caràcters:
x --> Posicioneu el caràcter sobre el cursor a esborrar i premeu x. X --> Igual que x però esborra el caràcter anterior a la posició del cursor.
Paraules:
dw --> Esborra fins al final de la paraula. Es col·loca el cursor a la posició on es vol començar a esborrar i es prem dw.
Línies:
dd --> Esborra una línia D --> Esborra tot el que està a la dreta del cursor i fins al final de la línia d0 --> Esborra tot el que està a l'esquerre del cursor i fins l'inici de la línia
Fitxer:
dG --> Esborra des de la línia actual fins al principi del fitxer. d1G --> Esborra des del principi del fitxer fins a la línia actual
Buscar
Buscar i reemplaçar:
Normalment la cerca és case sensitive (diferència entre majúscules i minúscules). Es pot modificar aquest comportament per defecte amb:
Alguns caràcters es poden utilitzar com a comodins (/ & ! . ^ * $ \ ?) o tenen un sentit especial. Si voleu buscar aquests caràcters els heu d'escapar amb la contrabarra (\).
Normalment podem afegir el caràcter ! a qualsevol comanda, fet que ens permet forçar el canvis (per exemple sortir encara que no s'hagi guardat).
Copiar línies:
:#linia_inici,#linia_final co #linia_on_copiar
Moure línies:
:#linia_inici,#linia_final m #linia_on_moure
Esborrar línies:
:#linia_inici,#linia_final d
Es poden utilitzar les següents variables:
. --> Indica el final de la línia $ --> Indica el final del fitxer
El primer pas és executar vi:
$ vi
Un cop dins podeu indicar quin fitxer voleu editar escrivint l'ordre:
:e/boot/grub/menu.lst.copia
També podríeu haver obert directament el fitxer amb:
$ vi /boot/grub/menu.lst.copia
NOTA: L'objectiu d'aquest apartat és afegir una línia al menú de GRUB. Per tal d'evitar problemes, no treballeu directament amb el fitxer de grub si no amb una copia que podeu obtenir executant:
$ sudo cp /boot/grub/menu.lst /boot/grub/menu.lst.copia
Si us fixeu, al final del fitxer apareixen múltiples caràcters titlla (~), indicant el final del fitxer.
La línia de més avall de la pantalla o emulador de terminal és la barra d'estat que indica el resultat de l'última ordre executada. Per defecte al entrar a un nou fitxer, veureu quelcom similar a:
"/boot/grub/menu.lst.copia" 170 lines, 5804 characters
és a dir us mostra el nom del fitxer que esteu editant i informació estadística bàsica del fitxer (aquesta informació és per cert similar a la que podeu obtenir mitjançant l'ordre wc).
Podem moure el cursor amb les fletxes del teclat o podem utilitzar les tecles:
h --> Fletxa esquerra j --> Fletxa avall k --> Fletxa amunt l --> Fletxa dreta
Imagineu-vos que volem copiar i pegar (duplicar) un conjunt de línies. Podem seguir les següents passes.
4yy
No cal prémer enter. El resultat és que a la barra d'estat posarà:
4 lines yanked
Si us fixeu, vi està pensat per poder fer gairebé totes les accions sense la necessitat de combinacions de tecles de l'estil Ctrl+tecla, o Shift+Tecla o Alt+tecla. Els editors no modals (com nano o joe) fan ús d'aquestes combinacions per tal realitzar accions com guardar el fitxer, sortir, etc.
Vim és una versió millorada de vim. Els conceptes bàsics de vi també s'apliquen a vi.
Recursos:
visudo és una aplicació utilitzada per a editar de forma segura en fitxer /etc/sudoers de sudo. Consulteu l'article sudo per a obtenir més informació.
Permet modificar el fitxer /etc/passwd de forma segura:
$ sudo vipw
NOTA: Tot i el nom de l'ordre s'utilitza l'editor per defecte del sistema i no pas vi.
Abans de poder guardar el fitxer es comprovarà que la sintaxi del fitxer és correcta. Si ens equivoquéssim en la sintaxi podríem deixar el sistema inservible.
Similar a vipw però permet modificar de forma segura el fitxer /etc/groups.
La versió completa de vim conté un tutor incorporat, anomenat vimtutor.