Inserisci un singolo personaggio in Vim?


25

In Vim (7.2), esiste un comando in modalità normale rper sostituire un singolo carattere con un altro. Ad esempio, digitando rXsostituirai un carattere sotto il cursore con Xe poi tornerai alla modalità normale.

Esiste un comando in modalità normale per inserire un singolo carattere e poi tornare alla modalità normale?



Risposte:


6

MelBurslan ha ragione sul fatto che questa funzione non esiste in modo nativo, ma la creazione di un comando definito dall'utente non è davvero il modo migliore per crearla. Ho armeggiato per alcuni minuti e ho pensato a questo:

:nmap <silent> ,s "=nr2char(getchar())<cr>P

Che utilizza alcuni stratagemmi di Vim che implicano il "mettere" testo da un registro, in questo caso il registro "espressione". L'espressione che viene inserita nel registro è " nr2char(getchar())" che restituirà una singola stringa di caratteri.

Il motivo per cui ho creato la mappatura in questo modo è che ottenere l'input dell'utente "a metà strada" di una mappatura è complicato e può comportarsi in modo imprevedibile; anche questa mappatura farà cadere il cursore nell'area di stato in attesa che l'utente digiti un carattere.


8

Grazie a Johnny per averci fornito questa fantastica risposta nei commenti qui sotto:

":nmap <C-i> i_<Esc>r"

Che mappa Control + i per inserire un singolo carattere e lo fa in modo molto conciso.

Nel tuo file vimrc, questo apparirà come:

nnoremap <C-i> i_<Esc>r

Ho modificato la mia mappatura per utilizzare lo spazio e puoi cambiare la tua con le tue chiavi preferite:

nnoremap <Space> i_<Esc>r

1
Questa è la risposta più concisa e semplice.
Dylanthepiguy,

4

Per quanto ne so, non esiste una tale funzione in nessuna incarnazione ampiamente diffusa dell'editor vi ma, vim ha una funzione per creare comandi personalizzati. È stato precedentemente discusso qui: in questo thread

Potresti essere in grado di creare il tuo comando personalizzato facendo quello che desideri fare.


3
Ecco il comando per mappare Ctrl-I per inserire un singolo carattere: ": nmap <Ci> i_ <esc> r"
Johnny

2

Un modo semplice per farlo è usare i comandi Taglia xe Put p. Dì che *è il personaggio che vuoi inserire. Inseriscilo usando i * Esc. Quindi colpisci x. Ciò taglierà il personaggio. Ora puoi colpire pper mettere il singolo personaggio. Se avete bisogno di inserire quel personaggio 300 volte, è possibile digitare: 300p.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.