2011-09-17 6 views
11

Desidero essere in grado di evidenziare le righe che desidero indentare/rientrare e indentare con tab e shift-tab rispettivamente.Vim - Rientro di più righe con scheda

" for command mode reverse tab 
nmap <S-Tab> << 
" for insert mode reverse tab 
imap <S-Tab> <Esc><<i 
" for command mode multiple line reverse tab(doesn't work) 
nmap <Tab> i< 
" for insert mode multiple line reverse tab(doesn't work) 
imap <Tab> < 

" for command mode tab 
nmap <Tab> >> 
" for command mode multiple line tab(doesn't work) 
nmap <Tab> i> 
" for insert mode multiple line tab(doesn't work) 
imap <Tab> > 

Questa è l'ultima cosa di cui ho bisogno prima di poter utilizzare vim come editor principale.

+1

Quindi? Qual è esattamente il problema? –

risposta

22

Per selezionare ed evidenziare il testo, è necessario start using visual mode, (di solito faccio questo colpendo v) e selezionare il testo utilizzando lo standard motions (come h, j, k e l).

di creare mappature per l'uso in visual mode è necessario :vmap ...

:vmap <Tab> > 
:vmap <S-Tab> < 

Ma perché avete bisogno di creare una mappatura per questo?

In visual mode, < si sposteranno le linee selezionate verso sinistra e > verso destra.

A volte è meglio solo imparare le chiavi Vim (o anche Vi), e quindi è possibile utilizzare qualsiasi installazione, non solo quella con il proprio .vimrc.

Per esempio, hai messo:

imap <Tab> < 

Questa è una cattiva idea. Questo renderà più difficile per voi di inserire una scheda-personaggio nel testo (anche Ctrl +i non funziona come mi aspetto), ed ogni volta che si digita scheda si inserisce un < .

Modifica felice!

+0

Se uso il mouse per evidenziare, io uso la mia mano destra. < and > sono entrambi sul lato destro della tastiera. Inoltre è per abitudine poiché ogni editor che ho usato ha fatto questo. – deadghost

+1

@ user894091: Il * mouse *? Hai provato a usare la * tastiera *? Scoprirai che puoi andare molto più velocemente in quel modo (con un po 'di pratica)! – Johnsyweb

+0

La tua raccomandazione è abbastanza buona. Lascerò il vecchio highlight con il mouse e il paradigma delle schede. Usi ancora il tasto tab per il rientro di una riga o sei spinto a> anche per quello? – deadghost

5

In modalità inserimento è possibile utilizzare controllo - d e controllo - t per rimuovere/aggiungere un trattino (rispettivamente).

Quindi, sostituire

imap <Tab> < 

con

imap <Tab> <c-d> 

e

imap <Tab> > 

con

imap <Tab> <c-t> 

In modalità visiva è possibile evidenziare un blocco e poi ha colpito < o >, ma se si desidera che sia scheda e spostamento - scheda, è possibile impostare con vmap come si deve fatto per gli altri.

+3

Questa è ancora una cattiva idea. Come si inserisce un carattere di tabulazione? – Johnsyweb

+1

@Johnsyweb ① Voglio inserire un carattere di tabulazione di almeno due ordini di grandezza meno frequentemente che voglio usarlo come comando. ② Quando fai ciò che (o qualsiasi altro personaggio hai legato a qualcosa) puoi usare ' + v ' per inserire una scheda letterale (o qualsiasi altra cosa). – Caleb

1

mettere questo nel vostro .vimrc è ciò che si vuole

:map <Tab> > 
:imap <Tab> <Esc> > 
:vmap <Tab> >gv 
:map <S-Tab> < 
:imap <S-Tab> <Esc> < 
:vmap <S-Tab> <gv 

GV dopo le vmaps mancherà di tenere le luci. la mappa e gli imaps ti permetteranno di inserirli in altre modalità. Non è proprio come il compagno di testo, ma sta arrivando :)