Trovo che se si inserisce un prefisso numerico prima di eseguire un comando ex, la convenzione che si applica è quella di impostare il comando per preparare un'operazione su un intervallo di linee. È spiegato nella documentazione,
UN NUMERO DI LINEE
Quando sai quante righe vuoi cambiare, puoi digitare il numero e poi ":". Ad esempio, quando si digita "5:", si otterrà:
:.,.+4
Ora puoi digitare il comando che desideri utilizzare. Utilizzerà l'intervallo "." (riga corrente) fino a ". + 4" (quattro righe in basso). Quindi si estende su cinque righe.
Ora quello di cui mi occupo è una mia funzione personalizzata, questa:
function! MyAmazingEnhancedDot()
if v:hlsearch == 1
:normal! .n
else
:normal! .j
endif
endfun
Questo è solo un modo per semplificare le attività ripetitive che includono la ripetizione di un'operazione su un intervallo di righe o su una serie di corrispondenze di ricerca.
Questa funzione è associata a un tasto di scelta rapida. Come Alt+ .o altro.
Il mio obiettivo è quello di essere in grado di fare qualcosa di molto potente: dovrei essere in grado di digitare /varName<CR>ciwnew-var<ESC>n9<Alt+.>
per raggiungere la ridenominazione di 10 istanze di varName
a new-var
.
Quello che succede realmente se lo faccio è che non esegue la ridenominazione e che le 9 righe sono manipolate con la mia .
operazione di modifica salvata dalla colonna 0.
Posso solo supporre che Vim è interpretare le mie battute in tal modo: :.,.+8 normal! .n
.
Sul lato mezzo pieno di vetro, il :normal! .j
caso della rilegatura funziona davvero, perché il j
movimento che non ha alcun effetto non ha alcuna conseguenza in questa situazione. (Ho ancora bisogno j
di farlo funzionare in un caso d'uso interattivo con prefisso non numerico).
Quindi la mia domanda è: come posso ignorare il comportamento di espansione della linea che Vim applica al mio bind? Sarebbe fantastico se potessi leggere il prefisso numerico come argomento o qualcosa del genere.
nnoremap <M-.> :<C-u>call MyAmazingEnhancedDot(v:count1)<cr>
e saltare ilcommand -count=1 EDot call MyAmazingEnhancedDot(<count>)
?