VimCS: Gestione

Da Guide@Debianizzati.Org.
Versione del 13 dic 2019 alle 14:37 di S3v (discussione | contributi) (aprire file remoti)
Vai alla navigazione Vai alla ricerca
Vim Cheat Sheet

Sommario

  1. Introduzione
  2. Le basi
  3. Gestione dei file
  4. Editing
  5. Varie
  6. Configurazione
  7. Extra

Apertura e gestione dei file

Si possono aprire molteplici file e gestirli in vari modi:

  • visualizzandone uno alla volta, questi sono chiamati buffer
  • dividerli in split orizzontali e verticali, questi sono chiamati finestre
  • visualizzazione in tab

Proprio come un browser web, l'uso dei tab è preferibilmente confinato a dividere progetti diversi, "un file = un tab" non è nella filosofia di un "vimmer" che si rispetti :) e il passaggio tra uno e l'altro è inoltre più scomodo di quanto si possa pensare.
Con l'aiuto di alcune mappe di tasti create appositamente o di plugin, i buffer restano il modo più pratico e veloce per tenere aperti tanti file e muoversi tra di essi.

apre file - :e nome_file

apre file nuovo - :enew


Buffer

Aprendo due o più file ci si può spostare tra uno e l'altro usando:
:next (successivo)
:prev (precedente)
:bn (successivo)
:bp (precedente)
:e# (consente il passaggio veloce tra il precedente buffer e il corrente)

Il passaggio veloce tra l'ultimo buffer e il corrente si ottiene anche con:
Ctrl-^ (oppure Ctrl-6)
N Ctrl-^ (dove N è il numero del buffer)

Si può ottenere una lista dei buffer aperti in tre modi diversi:
:ls
:buffers
:files

Verrà mostrata una riga per ogni file aperto con un numero che lo identifica, un indicatore dello stato, il nome del file e la riga in cui è il cursore; si noti che il numero è univoco e non cambia, se si chiude un file rimarrà il "buco" nella sequenza numerica.
Per la spiegazione degli indicatori leggere il relativo help.
:h :ls

passa a un buffer specifico - :b numero_buffer
chiude il buffer corrente - :bd
chiude un buffer specifico - :bd numero_buffer

http://vim.wikia.com/wiki/Vim_buffer_FAQ


Finestre

divide finestra orizzontalmente - :split (oppure Ctrl-w s)
divide finestra verticalmente - :vsplit (oppure Ctrl-w v)

Il comportamento predefinito è di riportare nello split lo stesso file, dopodiché si può aprirne uno diverso usando i comandi dei buffer; in caso si voglia subito una finestra vuota possiamo farlo tranquillamente per lo split orizzontale, mentre per il verticale dovremo ricorrere ad una mappa.

divide creando finestra orizzontale vuota - Ctrl-w n
mappa la sequenza di tasti Ctrl-w V per creare una finestra verticale vuota:
:nnoremap <C-W>V :vne<CR>

Come si può vedere il comando è :nnoremap seguito dalla scorciatoia desiderata, i caratteri speciali come Control e le eventuali sequenze vanno messe tra less e greater, poi il carattere aggiuntivo, quindi il comando vero e proprio, che è :vne, ed infine <CR> che è carriage return ed equivale a premere il tasto Return appunto (l'invio, quello che impropriamente chiamiamo Enter, è invece quello sul tastierino numerico :).

Tutti i comandi dati in questo modo durano solo per la sessione in corso, per averli permanenti vanno inseriti nel file ~/.vimrc; i due punti possono essere omessi.

È possibile aprire una finestra con una dimensione predefinita (ad esempio, :33split):
:NUMEROsplit
:NUMEROvsplit

muoversi tra le finestre - Ctrl-w w
muoversi in una finestra precisa:
Ctrl-w h sinistra
Ctrl-w j sotto
Ctrl-w k sopra
Ctrl-w l destra
Ctrl-w t più in alto
Ctrl-w b più in basso

ridimensionare orizzontalmente:
Ctrl-w +
Ctrl-w -

con numero di righe predefinito (ad esempio, 33 Ctrl-w +):
NUMERO Ctrl-w +
NUMERO Ctrl-w -

con dimensione predefinita: NUMERO Ctrl-w _

ridimensiona verticalmente:
NUMERO Ctrl-w <
NUMERO Ctrl-w >
NUMERO Ctrl-w =

inverte posizione finestra orizzontale:
verso l'alto - Ctrl-w R
verso il basso - Ctrl-w r
indipendente dal focus - Ctrl-w x

inverte posizione finestra verticale:
muovi a sinistra - Ctrl-w H
muovi a destra - Ctrl-w L
muovi in alto - Ctrl-w K
muovi in basso - Ctrl-w J

chiude finestra - :close (oppure Ctrl-w c)
chiudi finestra tranne la corrente - :only (oppure Ctrl-w o)

Si possono aprire in finestre più buffer già presenti:
apre tutti in finestre orizzontali - :ball
apre tutti in finestre verticali - :vertical ball

apre un file in una finestra orizzontale - :new nome_file
apre un file in una finestra verticale - :vert new nome_file

apre più file in finestre orizzontali:

$ vim -o nome_file1 nome_file2

apre più file in finestre verticali

$ vim -O nome_file1 nome_file2

apre finestra corrente in un tab - Ctrl-w T

scorre le finestre assieme in stile vimdiff - :set scrollbind

apre esplorazione file - :Explore
apre finestra verticale di esplorazione file - :Vexplore

Tab

apre tab - :tabnew
chiude tab - :close

apre file in un nuovo tab - :tabedit nome_file

apre più file in tab:

$ vim -p nome_file1 nome_file2

apre più buffer in tab - :tab ball

muoversi tra tab:
successivo - :tabn (oppure gt)
precedente - :tabp (oppure gT)

File remoti

La procedura per aprire un file remoto, cioè un file che non si trova sulla macchina locale, è assolutamente identica a quanto già scritto in precedenza; l'unica differenza è la diversa sintassi utilizzata che prevede l'uso del comando scp:

$ vim scp://NOMEUTENTE@NOMESERVER//PERCORSO/ASSOLUTO/FILE_DA_APRIRE

dove:

NOMEUTENTE
è il nome dell'utente che ha accesso al server
NOMESERVER
è il nome della macchina su cui si trova il file che vogliamo modificare
PERCORSO ASSOLUTO
il Path completo del file (notare che è preceduto da due slash ('//')
FILE_DA_APRIRE
il nome del file

Ad esempio:

$ vim scp://pippo@ilmioserver//home/pippo/documenti/todolist.txt

Il file, se modificato, verrà salvato sul server remoto alla chiusura di Vim.

Notare che la stessa sintassi è assolutamente valida anche per modificare il file dall'interno di Vim:

:e scp://NOMEUTENTE@NOMESERVER//PERCORSO/ASSOLUTO/FILE_DA_APRIRE