2013-02-07 2 views
7

Sto usando la schermata per copiare il codice che sto visualizzando usando Vim da una finestra ad un'altra finestra che sta attualmente modificando un file con Vim. Sfortunatamente, quando si incolla sulla seconda finestra ottengo sempre più spazio bianco a sinistra del mio input dopo ogni newline. In che modo questo spazio bianco si sta facendo strada nel mio buffer?Perché ci sono spazi in più dopo la fine riga quando si incolla usando lo schermo?

Ho tentato di disattivare il rientro automatico nel caso in cui Vim aggiungesse spazi bianchi extra, ma il problema persiste.

Ecco alcune informazioni che potrebbero essere pertinenti:

  • OSx 10.6.8
  • Entrambi i file sono in stile Unix. Versione
  • schermo: 4.00.03 versione
  • Vim: 7.3
  • Alla base di tipo di terminale è: xterm-color

risposta

18

Sei copiare usando il mouse o altri modi non vim? Se sì, è necessario fare :set paste prima di incollare e :set nopaste dopo. Vedi :h pastetoggle per una mappatura rapida.

Se tutte le sessioni di vim sono locali e Vim supporta (:echo has('clipboard')<CR> dovrebbe eco 1), è necessario utilizzare il vostro Appunti del sistema: "+y cancellare e riscrivere "+p di incollare, senza che rientri fastidiosi.

Oppure, meglio, aprire i file nella stessa sessione Vim.

+0

Non sto utilizzando Vim per copiare o incollare. Sto usando Screen per farlo. Posso sicuramente risolvere il problema aprendo i file nella stessa sessione Vim, ma trovo questo problema interessante e vorrei arrivare fino in fondo. Inoltre, cosa intendi esattamente per locale? Come nello stesso host? – Daeden

+1

Il problema è la modalità Incolla. Fai ': set paste' prima di incollare, e il problema sparirà. –

+0

Sì, nello stesso host. Dal punto di vista di Vim, incollare dallo schermo o con 'Cmd + v' è lo stesso: il testo viene inserito char per char e riga per riga (ma molto rapidamente) e Vim applica formating e indenting. Usa '" + y' e '" + p'. – romainl

0

Il problema viene dal listchars e la eol Vim aggiungere un carattere alla fine della linea, qualche utente aggiungere per esempio ↲

Per rimuovere questo carattere in più è necessario non impostare eop in listchars, per esempio :

set listchars=tab:\ \ ,trail:-,extends:>,nbsp:\ ,precedes:< 

scheda sara 'sostituito da spazi, spazi finali appariranno con -, ecc ...

Come EOL non è presente, non sarà di visualizzazione, questo risolverà il problema