2013-03-12 10 views
5

Quando apro un filein vim, e quindi uso :vsplit in modo che possa esaminare diversi segmenti di esso affiancati, noto che se faccio qualsiasi tipo di selezione visiva a sinistra, vim selezionerà lo stesso testo a destra. Inoltre, se i due lati non sono allineati quando ho iniziato la selezione visiva, qualsiasi lato io passi a saltare per corrispondere a quello che è stato selezionato.È possibile avere una modalità visiva separata nella finestra Split quando si modifica lo stesso file?

Vorrei poter utilizzare la modalità visiva per evidenziare diversi segmenti del testo sui due lati della finestra divisa, o almeno per poter utilizzare la modalità visiva sulla sinistra e quindi spostare il cursore sul destra. Funziona perfettamente se i due file sono in realtà file diversi.

C'è qualche opzione che consentirebbe questo, o è l'unico modo per fare una copia del file?

Modifica: Sto ampliando lo scopo di questa domanda per includere qualsiasi soluzione basata su vimscript, poiché non sembra essere un'opzione che può essere impostata. Se qualcuno ha un bel trucco per ottenere questo comportamento, per favore condividi. Nel frattempo cercherò anche in autocmd, anche se è molto probabilmente al di là delle mie attuali conoscenze in vimScript.

+1

Non credo sia possibile selezionare diverse cose in entrambe le finestre, ma sarei molto felice di essere smentito. – romainl

+0

La ragione per cui ritengo che dovrebbe essere possibile è perché funziona perfettamente se i file non sono lo stesso file. È come se vim cercasse di essere intelligente quando vede due file uguali, e questa intelligenza dovrebbe essere disabilitabile. – merlin2011

risposta

5

È come se vim cercasse di essere intelligente quando vede due file uguali, e questa intelligenza dovrebbe essere disabilitabile.

Questa "intelligenza" è il particolare attuazione che la selezione visiva (precisamente, i segni '<,'>) è locale al buffer. Come è stato osservato, i buffer diversi possono avere (e ricordare) selezioni diverse.

L'alternativa sarebbe rendere la finestra di selezione visuale locale. Immagino che l'approccio non sia stato scelto perché spesso l'intervallo di selezione esatto non può essere trasferito su un altro buffer; il numero e la lunghezza delle linee sono differenti.

Detto questo, probabilmente, è possibile implementare ciò che si vuole con :autocmd s che salvano i segni '<,'> in una variabile finestra locale su WinLeave e ripristino da quelli su WinEnter.

+0

+1 Grazie per il suggerimento. Ho ampliato la domanda e tenterò anche la soluzione che hai suggerito. – merlin2011

Problemi correlati