2010-09-20 10 views
12

Ho usato la versione Windows di Vim in passato, ma sono la nuova su MacVim. In MacVim, quando si passa alla modalità visiva, utilizzare il movimento $ (evidenziando dal mio cursore alla fine della riga) e yank, quando si incolla il contenuto copiato, include il ritorno a capo, bump tutto dopo il incollare il puntatore su una nuova riga.

Questo comportamento mi sembrava non familiare (per non dire fastidioso). C'è un modo per modificare questo comportamento in modo che corrisponda alla versione di Windows, in cui il newline non è incluso nello yank?

risposta

3

Ho scoperto che l'opzione che stava causando il comportamento che sono abituato a vedere è behave mswin, che credo sia attiva per impostazione predefinita in GVim per Windows.

18

È sufficiente copiare il testo fino alla fine della riga in modo inappropriato? y$ copia semplicemente dal cursore corrente fino alla fine della riga, senza la nuova riga.

+0

Questo funzionerebbe, non ci avevo pensato, grazie! Sono curioso, però, perché le diverse versioni di Vim si comportano diversamente. –

+0

Non avendo fatto molto con vim su Windows, non potrei dirti :) – zigdon

+0

In realtà nella mia installazione di Vim7.2 su WinXP, 'vy $' aggiunge anche la nuova riga, quindi il comportamento di MacVim è corretto. –

4

Si può provare Du. Effettivamente fa esattamente quello che vuoi ed è più facile da usare per le dita se intendi usarlo con modifiche inedite.

+0

Molto furbo! Mi piace! – Juto

14

C'è un movimento poco noto che soddisfa questa esigenza indipendentemente dalla configurazione dei comportamenti di Windows e può generalmente essere utile in altri contesti: g_. Disse :help g_:

g_   To the last non-blank character of the line and 
      [count - 1] lines downward |inclusive|. {not in Vi} 

personalmente non tendono ad usare questo per tirando perché evito la sequenza di tasti in più visivo modalità e utilizzare y$ (che non copia il ritorno a capo, come @zigdon suggerito). O meglio ancora, nnoremap Y y$ in modo che Y funzioni in modo coerente con C e D.

Tuttavia, utilizzo spesso g_ con surround.vim in cui i mapping per aggiungere surround sono spesso più difficili da ricordare per me che utilizzare la selezione visiva. Se si desidera selezionare fino alla fine della riga e circondare con parens, ad esempio, sarebbe ys$), che non è male, ma io tendo a dimenticare il mnemonico ys. v$S) sembra naturale ma ha lo stesso problema della tua domanda: include la nuova linea, e questo è un casino totale quando aggiungi i surround. vg_S) è esattamente quello che di solito si desidera.

Una cosa bella di farlo visivamente è che è possibile correggere mid-selezione: ho ancora tendono a colpire v$ dalla memoria muscolare molto, ma se si vede che hai superato prima di agire, si può ancora colpire g_ e correggi la selezione.

Problemi correlati