= Apunts vim TM última mod 20190413 =
________ ++ ________
/VVVVVVVV\++++ /VVVVVVVV\
\VVVVVVVV/++++++\VVVVVVVV/
|VVVVVV|++++++++/VVVVV/'
|VVVVVV|++++++/VVVVV/'
+|VVVVVV|++++/VVVVV/'+
+++|VVVVVV|++/VVVVV/'+++++
+++++|VVVVVV|/VVVVV/'+++++++++
+++|VVVVVVVVVVV/'+++++++++
+|VVVVVVVVV/'+++++++++
|VVVVVVV/'+++++++++
|VVVVV/'+++++++++
|VVV/'+++++++++
'V/' ++++++
++
:e Open (edit). Carrega un altre fitxer a un buffer (memòria)
:Explore Naveguem pels fitxers i obrim el desitjat
:browse olfiles Llista i edita els últims fitxers editats
:read file Obre un fitxer i l'afegeix al que estem editant
:n New file, split horitzontal
:q Quit, sortir
ZZ Sortir, guardant en cas de canvis
:w Save
:wall Save all
:wqa Save i fes quit en tots els tabs oberts
:h Ajuda de vim
:h | only Obrir l'ajuda en finestra única
--------------------------------------------
== EL LLENGUATGE DE VIM ==
En vim, el commandaments d'edició tenen el següent format:
<number><command><text object or motion>
· El número és opcional i pot aparèixer al començament o al final
· El comandament es una operació (c, d, y) i és opcional. Si no posem
comandament, farem només un moviment, no una edició.
· Un objecte de text pot ser una paraula (w), sentència (s), paràgraf (p),
tot el text...
=== OBJECTES DE TEXT ===
iw inner word, el que es faci s'aplica en la paraula actual
aw a word, s'aplica en la paraula actual i espais que l'envolten
is inner sentence
ip inner paràgraf
it inner tag, s'aplica al tag html o xml actual (contingut entre tags)
i{ inner {, S'aplica al que hi hagi entre claus { }, també per parèntesi
i" entre comentes, també tenimr i' , i` ...
=== RANGS ===
:n,m Línies n-m
:. Línia actual
:$ Anar a última línia del fitxer
:'c Marcador c
:% Totes les línies del fitxer
:g/patró/ Totes les línies que continguin "patró"
---------------------------------------------
== EDICIÓ MÚLTIPLE ==
:e text2.txt Obre un segon text
:buffers Llista de fitxers que tenim oberts
:b1 Anar al text 1 (buffer 1)
Ctrl+w Anem saltant entre finestres
=== SPLITS ===
:new Amb un fitxer obert, obrim un altre en la mateixa finestra
:sp o :vsp Horitzontal o vertical Split; obrim el mateix fitxer
:vsp filename Vertical split i un altre fitxer
:Sex! Split vertical i naveguem pels fitxers
Ctrl+w Ctrl+w Anem saltant entre finestres
Splits amb Ctrl:
Ctrl+ws Split horitzontal
Ctrl+wv Split vertical
Ctrl+wq Tanca split
Ctrl+w Ctrl+w Anem saltant entre finestres
=== TABS ===
:tabnew Nou tab
:tabnew file Nou tab, obrint un fitxer
:tabnext o gt Anar a tab següent
:tabprev o gT Anar a tab anterior
3gt Ves al tab número 3
:tabclose o :q Tancar tab
:tabonly o only Manté obert només el fitxer actual i tanca la resta
--------------------------------------------
== MOVIMENTS ==
h Esquerra
j Cap a baix la j va cap a baix
k Cap amunt la k va cap amunt
l Dreta
=== Moviments per línies ===
0 anar al començament de la línia (inici)
^ anar al començament de la línia a on hi hagi una lletra
$ anar al final de la línia (fi)
20l anem 20 caràcters a la dreta
5j anem 5 línies avall
1G o gg anar a la primera línia
G anar a la última línia (també :$)
50% anar just al mig del fitxer
50G anar a la línia 50 (també :50)
:35 Ves a la línia 35
:0 anar al començament del fitxer
:$ anar al final del fitxer (també G)
=== Moviments per paraules ===
w a la següent paraula, 1er caràcter
e a la següent paraula, últim caràcter
b a la paraula anterior, 1er caràcter
=== Moviments per frases ===
( anar a frase anterior
) anar a frase següent
=== Moviments per paràgrafs ===
{ anar al paràgraf anterior
} anar al paràgraf següent
% Saltem entre claus { }
=== Moviments relatius a les posicions anteriors ===
Ctrl+o saltar a posició anterior
Ctrl+i saltar a la posició següent
=== Moviments relatius a la pantalla en que estem ===
H anar a 1a línia de la pantalla (High as possible)
M anar al mig de la pantalla (Middle)
L anar al final de la pantalla (Low as possible)
=== Moviments per pàgines ===
Ctrl+b Re pag
Ctrl+f Av Pag
Ctrl+e Mou una lína avall la pantalla, sense tocar la posició del cursor
Ctrl+y Mou una lína amunt la pantalla, sense tocar la posició del cursor
---------------------------------------------
== MODES ==
== INSERCIÓ ==
i Insert abans del cursor
I Insert al començament de la línia
a Append darrera del cursor
A Append al final de la línia
o Insert en una nova línia, a sota de l'actual
O Insert en nova línia, a sobre de l'actual (globus inflat puja)
bi Insertar al començament de la paraula actual
ea Insertar al final de la paraula actual
wi Insertar al començament de la següent paraula
wea Insertar al final de la següent paraula
Ctrl+o En mode inserció, ens deixa fer una acció en mode normal i
torna al mode inserció. Útil per exemple si volem anar al
començament de la frase ràpidament, tornant al mode insert.
== VISUAL ==
v Entra al mode visual
V Mode visual, línia a línia
Ctrl+v Mode visual, selecciona blocs (quadrats)
aw en mode visual selecciona una paraula
ap en mode visual selecciona un paràgraf
> en mode visual justifica la selecció cap a la dreta
< en mode visual justifica la selecció cap a l'esquerra
~ alterna case: de majúscules a minúscules o a l'inrevés
ggVG Selecciona tot el text (línia 1, mode visual, ves al final)
Esc o Ctrl+[ Torna al mode normal
--------------------------------------------
== COMMANDAMENTS GENERALS ==
y yank, copy
d delete, cut
x delete només un caràcter
D o d$ delete fins al final de la línia
"_d Esborra sense copiar
p paste darrere del cursor
P paste al davant del cursor
J Junta dues línies deixant un espai al mig
gJ Junta dues línies sense deixar espai al mig (glue Join)
gwip Desfà paràgrafs en línies separades
c modificar
. repeteix última acció que haguem fet
> Identa la línia cap a la dreta
>5j Identa 5 línies cap a sota
< Identa cap a l'esquerra
yy copia línia
y$ copia fins al final de línia
"+y Copy que el sistema "veu"
"+p Paste des del sistema
dd esborra línia
:d esborra línia
:3,5d esborra línies 3 a 5
5d esborra 5 línies
bdw esborra la paraula en que ens trobem
Undo/redo:
u Undo
U Undo en la línia actual
Ctrl+r Redo
:undolist Obtenir llista de undos
:earlier 4m Tornar 4 minuts al passat
=== Copiar i moure cap a on estem ===
:4co. Copiem la línia 4 a on estem
:-16,-14mo. Movem les línies 14, 15 i 16 anteriors cap a on estem
--------------------------------------------
== CERQUES ==
* A sobre d'una paraula, la busca a tot el text
/paraula Cercar una paraula, ara fent n buscarà següents
?paraula Cercar una paraula, ara fent n buscarà anteriors
n Següents coincidències (avall si hem fet /)
N Anteriors coincidències (avall si hem fet ?)
t. Cerca el següent punt (o carácter que indiquem)
T. Cerca, cap enrere, el caràcter que indiquem
dfq Esborra tot fins el proper caràcter q
/.*foo\&.*bar Cerca línies amb foo i bar
d/foo Esborra tot fins al proper foo
y/foo Copia tot fins al proper foo
=== CERQUES ÚTILS PROGRAMACIÓ ===
% Salta al següent parèntesi, clau... que tanca
[{ Salta al començament d'aquest bloc de codi
gd A sobre d'una variable, salta a la seva declaració
[I: A sobre d'una funció mostra les ocurrències d'ella
=== Exemple de CERCAR I REEMPLAÇAR SELECTIU ===
/hola Busquem "hola"
cw A la primera coincidència, modif. i escrivim a sobre
n Anem a la propera coincidència
. Repetim últim substitució
=== Altres cerques útils ===
:g/hola/d Esborra totes les línies que continguin el patró "hola"
:% v/hola/d Esborra totes les línies que no continguin "hola"
--------------------------------------------
== SUBSTITUCIONS ==
x Esborra el caràcter a sota del cursor
r Replace el caràcter a sota del cursor sense entrar a inserció
s Esborra el caràcter a sota del cursor i entra en mode inserció
bcw o ciw Esborra paraula a sota i entra en mode inserció
c$ Esborra fins al final de la línia i entra en mode inserció
cc o S Esborra línia i entra en mode inserció
ct) Change fins el primer parèntesi
R Entra en mode substitució. Escrivim i va matxacant a sobre
xp Intercanvia dues lletres (esborra + paste)
·Substituir una paraula a tot el text, però només la primera coincidència
de cada línia:
:% s/paraula1/paraula2
·Substituir una paraula a tot el text, global (no només primera coincidencia
per línia):
:% s/paraula1/paraula2/g
·Substituir una paraula a tot el text, global i amb comfirmació:
:% s/paraula1/paraula2/gc
·Comentar linies 2 a 10 d'un script bash:
:2,10 s/^/#
·Convertir una paraula de majs a mins o viceversa
g~iw
·Convertir una línia de majs a mins o viceversa
0g~$
guG Convertir en minúscules tot el text
gU} Convertir en majúscules fins al final del paràgraf
·
--------------------------------------------
== REGISTRES (porta-retalls múltiple) ==
·vim te 26 registres normals corresponents a les lletres de l'alfabet.
·Te dos registres especial:
-el 0 és el default que rep el contingut dels yank.
-el + és que que es comunica amb el clipboard del sistema
-el " rep tot el que s'esborra o enganxa. El fa servir vim en cas de
que no li diguem un registre concret.
y equival a ""y
p equival a ""p
El registre + és un proxy al clipboard del sistema:
"+y Copy al portaretalls del sistema
"+p Paste des del portaretalls del sistema
"fyy Copia la línia actual al registre f
"fdw Retallem la paraula i la deixem al registre f
"fp Enganxem el registre f
ggVG "+y Copia tot el text al porta-retalls del sistema
:reg Per a veure el valors actuals del registres
--------------------------------------------
== MARQUES ==
·Per a les marques, podem fer servir lletres de la a a la z, maj. o minus.
·Les majúscules ens permeten saltar a una marca a un altre fitxer en edició,
· les minúscules només salten a marques en el mateix fitxer en el que estem.
ma crea la marca a
'a anar a marca a (hem de fer accent, espai + a)
:marks veiem les marques que tenim assignades. Hi ha un parell "de sistema"
'" va a l'ultima posició
'. va a l'ultim canvi
=== Jumplist ===
·vim va guardant a una llista els salts (cerques, substitucions i marques).
·Els salts es fan també cap a altres texts que s'hagin editant anteriorment.
Ctrl+O Anar enrere en la jumlist
Ctrl+I Anar endavant en la jumplist
Ctrl+^ Ctrl+^ Alterna entre les últimes marques
:jumps Veure la jumplist
--------------------------------------------
== MACROS ==
qa comença a gravar macro a
q atura gravació
@a executa macro a
3@a executa la macro 3 vegades
·Recordem que podem repetir l'última acció fent . (punt)
·Podem editar o tenir guardada una llista de macros. Obrim un fitxer i:
"bp Enganxem el contingut de la macro b
"cyy Carreguem la macro c amb el contingut de la línia en curs
Marvim és una opció perfecta per a treballar amb macros:
https://github.com/vim-scripts/marvim
--------------------------------------------
== FOLDING ==
zo o espai Obre fold
zc Tanca fold
Plugin python_editing: (http://www.vim.org/scripts/script.php?script_id=1494)
F Fold tot
f Fold/unfold una funció o classe
--------------------------------------------
== GUARDAR INFORMACIÓ ENTRE SESSIONS ==
=== VIEWS ===
·per a guardar informació d'una finestra
:mkview 1 Podem guardar views del 1 al 9
:loadview 1 Carreguem view 1
:mkview file.vim Guardem view a un fitxer
:source file.vim Carreguem la view des del fitxer
=== SESSIONS ===
·per a guardar sessions completes (vàries finestres)
:mksesson file.vim Guardem sessió a un fitxer
:source file.vim Recupera la sessió guardada
=== VIMINFO ===
·es com una sessió, però global per a tot el vim
·guarda historys, marques, bufferlists...
·les sessions poden tenir diferents fitxers. vim per a
cada projecte, en canvi viminfo és un fitxer únic
=== MODELINES ===
·a aplicar només a un fitxer. Si configurem:
:set modelines=10
·Estem dient que quan es carrega un fitxer es comproven les 10 primeres i
les 10 últimes línies. La sintaxis d'aquestes línies ha de ser:
/* vim:set shiftwidth=4:*/
·El que s'interpreta és el que hi ha entre els dos punts.
·Abans de vim (un espai seguit de vim) i després dels últims dos punts
podem posar comentaris
--------------------------------------------
== OBRINT FITXERS ==
=== CERCAR I EDITAR FITXERS ===
·Si estem editant un text i al text hi ha un nom de fitxer, si ens posem a
sobre i piquem gf, vim buscar aquest fitxer al path
·podem fer el mateix que l'anterior si fem :find fitxer
·poder buscar i obrir un fitxer si està al path amb:
vim "+find fitxer"
·podem afegir les nostres rutes de treball al path:
:set path+=~/compile
=== OBRIR EXPLORANT ===
:Hexplore Obre explorador de fitxers. El seleccionat s'obre en split superior
:Sexplore Obre explorador de fitxers. El seleccionat s'obre en split inferior
:Vexplore Obre explorador de fitxers. El seleccionat s'obre en split vertical-dreta
=== TREBALLAR AMB FITXERS ENCRIPTATS ===
vim x secret.txt Creem fitxer encriptat i l'editem
:X Per a treure el password a un fitxer encriptat
=== TREBALLAR AMB FITXERS COMPRIMITS ===
·podem edtiar fitxers comprimits en aquests formats: Z, gz i bz2
------------------
== DIFF ==
vimdiff file1 file2 Obre els dos fitxers i compara
:vertical difsplit file2 Si ja teniem obert file1
Un cop tenim els dos fitxers oberts:
]c Salta al següent canvi
[c Salta al canvi anterior
dp Passa línies d'esquerra a dreta (put)
do Passa línies de dreta a esquerra (obtain)
--------------------------------------------
== SHELL COMMANDS ==
·Podem executar qualsevol comandament sense sortir de vi fent:
:!comandament ; comandament ; comandament ...
·També podem sortir amb :sh i tornar amb Ctrl+d
:%!sort Enviem el text actual a sort; tindrem el text ordenat alfabèticament
: sort u El mateix, ens ordena el text i elimina duplicats
Podem bolcar l'execució de qualsevol comandament al nostre editat:
:.! date Ens enganxa la data i hora al nostre text
:.! cal Calendari del mes actual
:! ls Llistat de fitxers
A partir de la versió 8, podem obrir un terminal:
:term
--------------------------------------------
== AJUDA ==
:help user-manual Manual de l'usuari
:help paraula Per a buscar info sobre qualsevol terme
:helpgrep paraula/es Buscar qualsevol paraula a l'ajuda
Un cop trobat un resultat:
:cnext anar a la coincidència següent
:cprev anar a la coincidència anterior
:clist veure totes les coincidències trobades
--------------------------------------------
== CUSTOMITZACIÓ, PLUGINS ==
·Podem customitzar el nostre vim tocant els fitxers ~/.vimrc o ~/.gvimrc
·Afegirem els nostres fitxers d'spelling a ~/.vim/spell/
·Es podem afegir plugins (son fitxers .vim) posant-los
a la nostra carpeta ~/.vim/plugin/ o bé a /usr/share/vim/addons
si volem que estiguin disponibles per a tots els usuaris
--------------------------------------------
== vim COM EDITOR DE PROGRAMACIÓ ==
·Podem indicar a vim quin tipus de fitxer estem editant per a que ens
ajudi en la correcció sintàctica:
:set filetype=vim
:set filetype=python
% Saltem entre claus { }
Plugin python-mode: (https://github.com/python-mode/python-mode)
Autocompletar Ctrl+espai
Run code ,r
Add/remove breakp. ,b
Search in docum. K
Go to definition Ctrl+c, deixem anar i g
Autofix PEP8 errors :PymodeLintAuto
--------------------------------------------
== ALTRES ==
:TOhmtl Exporta el fitxer en html. Per a poder imprimir
:scripnames Ens diu on estan els fitxers de configuració
:set syntax/colortest.vim Test de colors pel terminal
--------------------------------------------
== ANNEX 1: VIM ENVIRONMENT ==
:abbreviate - list abbreviations
:args - argument list
:augroup - augroups
:autocmd - list auto-commands
:buffers - list buffers
:breaklist - list current breakpoints
:cabbrev - list command mode abbreviations
:changes - changes
:cmap - list command mode maps
:command - list commands
:compiler - list compiler scripts
:digraphs - digraphs
:file - print filename, cursor position and status (like Ctrl-G)
:filetype - on/off settings for filetype detect/plugins/indent
:function - list user-defined functions (names and argument lists but not the
:function Foo - user-defined function Foo() (full code list)
:highlight - highlight groups
:history c - command history
:history = - expression history
:history s - search history
:history - your commands
:iabbrev - list insert mode abbreviations
:imap - list insert mode maps
:intro - the Vim splash screen, with summary version info
:jumps - your movements
:language - current language settings
:let - all variables
:let FooBar - variable FooBar
:let g: - global variables
:let v: - Vim variables
:list - buffer lines (many similar commands)
:lmap - language mappings (set by keymap or by lmap)
:ls - buffers
:ls! - buffers, including "unlisted" buffers
:map! - Insert and Command-line mode maps (imap, cmap)
:map - Normal and Visual mode maps (nmap, vmap, xmap, smap, omap)
:map<buffer> - buffer local Normal and Visual mode maps
:map!<buffer> - buffer local Insert and Command-line mode maps
:marks - marks
:menu - menu items
:messages - message history
:nmap - Normal-mode mappings only
:omap - Operator-pending mode mappings only
:print - display buffer lines (useful after :g or with a range)
:reg - registers
:scriptnames - all scripts sourced so far
:set all - all options, including defaults
:setglobal - global option values
:setlocal - local option values
:set - options with non-default value
:set termcap - list terminal codes and terminal keys
:smap - Select-mode mappings only
:spellinfo - spellfiles used
:syntax - syntax items
:syn sync - current syntax sync mode
:tabs - tab pages
:tags - tag stack contents
:undolist - leaves of the undo tree
:verbose - show info about where a map or autocmd or function is defined
:version - list version and build options. Mostra també ruta dels fitxers de configuració
:vmap - Visual and Select mode mappings only
:winpos - Vim window position (gui)
:xmap - visual mode maps only
* * * * * * * * * * * + * * * * * * *
Més documentació:
http://www.lagmonster.org/docs/vi2.html
http://www.sromero.org/wiki/linux/aplicaciones/manual_vim