vim
Movimento
Ricerca…
Ricerca
Saltare ai personaggi
f {char} : passa alla successiva occorrenza di {char} alla destra del cursore sulla stessa riga
F {char} : passa alla successiva occorrenza di {char} alla sinistra del cursore sulla stessa riga
t {char} - sposta a sinistra della prossima occorrenza di {char} alla destra del cursore sulla stessa riga
T {char} : sposta a destra della prossima occorrenza di {char} alla sinistra del cursore sulla stessa riga
Salta avanti / indietro tra i 'risultati' via ; e,.
Inoltre è possibile cercare parole intere tramite /<searchterm>
Invio .
Alla ricerca di stringhe
* - passa alla successiva occorrenza della parola sotto il cursore
# - per passare alla ricorrenza precedente della parola sotto il cursore
/ searchterm
Enter ti porta alla prossima partita (forward-search). Se usi ? invece di / , la ricerca torna indietro.
Salta tra le partite via n (successiva) e N (precedente).
Per visualizzare / modificare le ricerche precedenti, digitare / e premere il tasto freccia su .
Utili sono anche queste impostazioni: (nota :se
è uguale a :set
)
-
:se hls
, evidenzia tutte le corrispondenze di ricerca; usa:noh
per disattivare temporaneamente la ricerca / evidenziare il segno (:set noh
o:set nohls
disattiva.) -
:se is
o:set incs
ricerca incrementale, il cursore salta automaticamente alla corrispondenza successiva. (:se nois
si spegne.) -
:se ic
IgnoreCase, disattiva la distinzione tra maiuscole e minuscole. (:se noic
si riaccende.) -
:se scs
SmartCaSe, può essere utilizzato quando è impostato IgnoreCase; rende intelligente il caso (in)! eg/the
cercheràthe
,The
,ThE
, ecc mentre/The
only cercheràThe
.
Movimento di base
Osservazioni
- Ogni movimento può essere utilizzato dopo un comando operatore, quindi il comando opera sul testo compreso dalla portata del movimento.
- Proprio come i comandi dell'operatore, i movimenti possono includere un conteggio, quindi puoi muoverti da 2w ords, per esempio.
frecce
In Vim, i normali tasti freccia / cursore ( ← ↓ ↑ → ) funzionano come previsto. Tuttavia, per i tipografi a tocco, è più facile usare le chiavi alternative h j k l . Su una tastiera tipica, si trovano uno accanto all'altro sulla stessa riga e facilmente accessibili con la mano destra. La tecnica mnemonica per ricordare quale è quella che va in questo modo:
- h / l - quelli si trovano "più a sinistra / destra" tra le quattro lettere sulla tastiera, quindi sono equivalenti a "andare a sinistra / destra" rispettivamente;
- j - la lettera "j" minuscola ha la coda che va "in basso" sotto le lettere tipiche, come una piccola freccia - quindi è equivalente a "scendere";
- k - al contrario, la "k" minuscola ha il suo "ascender" che va "su" sopra le lettere tipiche, come un piccolo puntatore - quindi equivale a "salire".
Movimenti di base
Tutti i comandi di seguito dovrebbero essere eseguiti in modalità normale .
Comando | Descrizione |
---|---|
h o sinistra | vai [conta] caratteri a sinistra |
j o giù | vai [conta] caratteri sotto |
k o su | vai [conta] caratteri sopra |
io ho ragione | vai [conta] caratteri a destra |
gg | vai alla prima riga, o [conta] 'la linea, se data |
H | vai alla prima riga nella schermata visibile |
M | vai alla linea di mezzo nella schermata visibile |
L | vai all'ultima riga nella schermata visibile |
sol | vai all'ultima riga, o [conta] 'la linea, se data |
Casa o 0 | vai al primo personaggio della linea |
^ | vai al primo carattere non vuoto della linea |
+ | scendere di una riga verso il primo carattere non vuoto |
- | vai su una riga al primo carattere non vuoto |
$ o Fine | vai alla fine della linea (se [conta] è dato, vai [contare - 1] linee giù) |
| | vai al [count] 'th carattere o vai all'inizio della riga se count non specificato |
f {char} | vai a [contare] 'l'occorrenza di {char} a destra incluso |
F {char} | vai a [contare] 'l'occorrenza di {char} a sinistra compresa |
t {char} | andare a [count] 'th occorrenza di {char} per il diritto esclusivo |
T {char} | vai a [contare] 'l'occorrenza di {char} a sinistra in esclusiva |
; | ripetere le ultime ore f , t , F o T [contare] |
, | ripetere le ultime f , t , F o T , nella direzione opposta, [contare] volte |
w | vai all'inizio della prossima parola |
B | vai all'inizio della parola precedente |
e | vai alla fine della prossima parola |
ge | andare alla fine della parola precedente |
% | vai alle coppie corrispondenti, ad esempio (), [], {} , /* */ o #if, #ifdef, #else, #elif, #endif |
{ } | paragrafo precedente / successivo |
[{ ]} | inizio / fine del blocco |
'{char} | Vai al segno (segna con m {char} ) |
<CB> <CF> | pagina precedente / successiva |
<CO> <CI> | Torna indietro o avanti nella "lista dei salti" (richiede la funzione jumplist , vedi :help jumps ) |
Nota: b , e , e w considerano una parola come lettere, numeri e underscore per impostazione predefinita (questa può essere configurata con l'impostazione iskeyword
). Ognuno di questi può anche essere in maiuscolo, causando loro di saltare qualsiasi cosa che non sia spazio bianco.
Nota: Vim riconosce due tipi di movimento: movimento dell'operatore ( :help movement
) e salti ( :help jumplist
). I movimenti come quelli eseguiti con g
( gg
, G
, g,
) contano come salti, così come le modifiche. I cambiamenti hanno il loro jumplist, che è navigabile come menzionato sopra via g,
e g;
(vedi :help changelist
). I salti non sono trattati come comandi di movimento da Vim
Quando ci si sposta su o giù lungo le linee, il cursore mantiene la colonna come ci si aspetterebbe. Se la nuova riga è troppo corta, il cursore si sposta alla fine della nuova riga. Se la colonna è oltre la fine della riga, il cursore viene visualizzato alla fine della riga. Il numero di colonna iniziale è ancora conservato fino a quando non viene intrapresa un'azione per alterarlo (come la modifica del testo o lo spostamento esplicito di una colonna).
Se la lunghezza di una linea supera la larghezza dello schermo, il testo viene avvolto (nelle impostazioni predefinite, questo comportamento può essere configurato). Per spostarti tra le linee come visualizzate sullo schermo, piuttosto che le linee all'interno del file, aggiungi g davanti al solito comando. Ad esempio, gj sposta il cursore nella posizione visualizzata di una riga sotto la sua posizione corrente, anche se si trova nella stessa riga del file.
Cercando il modello
Vim supporta l'uso di espressioni regolari durante la ricerca in un file.
Il carattere per indicare che si desidera eseguire una ricerca è /
.
La ricerca più semplice che puoi eseguire è la seguente
/if
Questo cercherà l'intero file per tutte le istanze di if
. Tuttavia, la nostra ricerca if
è in realtà un'espressione regolare che corrisponde ad ogni occorrenza della parola if
inclusi quelli all'interno di altre parole.
Ad esempio, la nostra ricerca direbbe che tutte le seguenti parole corrispondono alla nostra ricerca: if
, spiffy
, endif
, ecc.
Possiamo fare ricerche più complicate usando espressioni regolari più complicate.
Se la nostra ricerca era:
/\<if\>
quindi la nostra ricerca restituirebbe solo corrispondenze esatte alla parola completa if
. Il precedente spiffy
e endif
non verrebbero restituiti dalla ricerca, solo if
.
Possiamo anche usare le gamme. Dato un file:
hello1
hello2
hello3
hello4
Se vogliamo cercare quelle righe contenenti "hello" seguite da una cifra compresa tra 1 e 3, diremmo:
/hello[1-3]
Un altro esempio:
/(?:\d*\.)?\d+
troverebbe tutti i numeri interi e decimali nel file.
Navigazione verso l'inizio di una parola specifica
Quando si modifica il testo, un'attività comune è quella di passare a una determinata parola sullo schermo. In questi esempi esploriamo come possiamo navigare verso la parola updated
. Per motivi di coerenza tra gli esempi, miriamo ad atterrare sulla prima lettera della parola.
Salto a metà schermo
M $ B
Questo approccio è veloce, utilizzando solo 3 sequenze di tasti. Lo svantaggio, tuttavia, è che non è molto generale, poiché non è comune che la nostra linea di destinazione si trovi proprio al centro dello schermo. Tuttavia, è un movimento utile quando si effettuano movimenti meno granulari.
Utilizzando un conteggio
3j f u ; ;
A prima vista, questo potrebbe sembrare un passo indietro rispetto al primo approccio a causa del numero di sequenze di tasti. Ma dal momento che usiamo un conteggio qui invece che M , è più flessibile. Siamo in grado di identificare rapidamente il conteggio corretto da utilizzare se relativenumber è abilitato. Per passare alla parola target, usando f in combinazione con ; può essere sorprendentemente efficace - e certamente migliore di premere ripetutamente w . Se superi il tuo obiettivo con ; , Si può andare a ritroso con,.
Ricerca esplicita
/ Up Inserisci n n
Navigare via / può essere molto potente. Spesso possiamo saltare direttamente alla nostra parola target digitandola. Qui scriviamo solo i primi due personaggi nella speranza che corrispondano in modo univoco alla nostra parola. Sfortunatamente, ci sono più partite, ma possiamo passare rapidamente alla prossima partita con n .
Ricerca implicita
/ y Spazio Immettere w
In alcuni casi, potrebbe essere più efficiente saltare vicino al nostro obiettivo piuttosto che mirare ad andare direttamente ad esso. Qui osserviamo che c'è una lettera che si verifica raramente, y
, proprio accanto all'obiettivo. Possiamo aggiungere uno spazio al nostro termine di ricerca per ridurre le possibilità di colpire qualche altro personaggio y
lungo la strada. Questo può anche essere usato con grande effetto con f {char} , come nell'esempio Uso di un conteggio .
Usare i segni per muoversi
I segni sono come segnalibri; ti aiutano a trovare i posti che hai già visitato.
TLDR
Impostali in modalità normale con m{a-zA-Z}
e saltali in modalità normale o visuale con '{a-zA-Z}
(virgoletta singola) o `{a-zA-Z}
(apice). Le lettere minuscole sono per i segni all'interno di un buffer e le lettere maiuscole e le cifre sono globali. Visualizza i tuoi segni attualmente impostati con :marks
, e per maggiori informazioni vedi :help mark
.
Imposta un segno
L'aiuto integrato di Vim dice:
m{a-zA-Z} Set mark {a-zA-Z} at cursor position (does not move
the cursor, this is not a motion command).
Il marchio terrà traccia di quale linea e colonna è stata posizionata. Non vi è alcuna conferma visiva che sia stato impostato un segno o se un segno avesse un valore precedente e sia stato sovrascritto.
Vai a un segno
L'aiuto integrato di Vim dice:
Jumping to a mark can be done in two ways:
1. With ` (backtick): The cursor is positioned at the specified location
and the motion is exclusive.
2. With ' (single quote): The cursor is positioned on the first non-blank
character in the line of the specified location and
the motion is linewise.
Backtick usa la posizione della colonna, mentre Single-quote non lo fa. La differenza tra semplicemente ti consente di ignorare la posizione della colonna del tuo marchio, se lo desideri.
È possibile saltare tra segni non globali in modalità visiva oltre alla modalità normale, per consentire la selezione del testo in base ai segni.
Marchi globali
I marchi globali (lettere maiuscole) consentono di saltare tra i file. Ciò significa che se, ad esempio, il segno A
è impostato in foo.txt
, quindi da bar.txt
(ovunque nel mio file system), se salto al punto A
, il mio buffer corrente verrà sostituito con foo.txt
. Vim chiederà di salvare le modifiche.
Saltare su un segno in un altro file non è considerato come un movimento, e le selezioni visive (tra le altre cose) non funzionano come saltare ai segni all'interno di un buffer.
Per tornare al file precedente ( bar.txt
in questo caso), utilizzare :b[uffer] #
(ovvero :b#
o :buffer#
).
Nota:
Segni speciali
Ci sono alcuni segni che Vim imposta automaticamente (che sei in grado di sovrascrivere da solo, ma probabilmente non ne avrà bisogno).
Ad esempio (parafrasato dall'aiuto di Vim):
`[` and `]`: jump to the first or last character of the previously changed or
yanked text. {not in Vi}
`<` and `>`: jump to the first or last line (with `'`) or character (with
<code>`</code>) of the last selected Visual area in the current
buffer. For block mode it may also be the last character in the
first line (to be able to define the block). {not in Vi}.
Inoltre, dall'aiuto integrato di Vim:
'' `` To the position before the latest jump, or where the
last "m'" or "m`" command was given. Not set when the
:keepjumps command modifier was used.
Also see restore-position.
'" `" To the cursor position when last exiting the current
buffer. Defaults to the first character of the first
line. See last-position-jump for how to use this
for each opened file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
{not in Vi}.
'. `. To the position where the last change was made. The
position is at or near where the change started.
Sometimes a command is executed as several changes,
then the position can be near the end of what the
command changed. For example when inserting a word,
the position will be on the last character.
{not in Vi}
'" `" To the cursor position when last exiting the current
buffer. Defaults to the first character of the first
line. See last-position-jump for how to use this
for each opened file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
{not in Vi}.
'^ `^ To the position where the cursor was the last time
when Insert mode was stopped. This is used by the
gi command. Not set when the :keepjumps command
modifier was used. {not in Vi}
Inoltre, i caratteri (
, )
, {
e }
sono segni che salgono nella stessa posizione dei loro comandi in modalità normale, cioè '}
fa la stessa cosa in modalità normale }
.
Salta alla linea specifica
Per saltare a una linea specifica con il numero dei due punti. Utilizzare per saltare alla prima riga di un file
:1
Per saltare alla riga 23
:23