2011-07-09 12 views
15

, benim .vimrc yerde, :tabnew, :tn-:tabp:th için :tabn:tl için kısaltmak istiyorum. Bunun gibi komutları nasıl değiştirebilirim?Nasıl kısayol yapılır: tabnew,: tabn,: tabp? vim yılında

+4

Not: 'tabn' zaten 'gt' tarafından normal modda ve aynı şekilde': tabp' 'gT' ile elde edilebilir. '1gt' ilk sekmeye gidecektir,' 2gt' ikinci olacak, vb. –

+0

Bir:: te '->': tabedit' kısayolunun peşindeydim. Bu yorum, kullanıcıların bu soruyu bulmak için aramalarına yardımcı olmaktır. –

cevap

18

Kullanım cabbrev:

ca tn tabnew 
ca th tabp 
ca tl tabn 
+0

classy. Teşekkürler! – tester

+0

ah gerçekten harika, çünkü '' tn' 'ye gittiğinizde, yere isabet, otomatik tamamlar: tabnew – tester

+1

Bu harika. Cabbrev'den habersizdim. – zachwill

4

Sekmeler arasında gezinmek için daha iyi bir yol yoktur. Sadece (C Kontrolü içindir) deneyin:

nmap <silent> <C-n> :tabnext<CR> 
nmap <silent> <C-p> :tabprev<CR> 
imap <silent> <C-n> <esc><C-n> 
imap <silent> <C-p> <esc><C-p> 
+0

Bunu "gt" (tabnext) ve "gT" (tabprev) ile yapabilirsiniz. – erny

5

Sekmeler arasında ~/.vimrc dosyasına aşağıdaki kodu ekleyin ve gezinebilirsiniz her kolayca.

nnoremap th :tabfirst<CR> 
nnoremap tj :tabnext<CR> 
nnoremap tk :tabprev<CR> 
nnoremap tl :tablast<CR> 
nnoremap tt :tabedit<Space> 
nnoremap tn :tabnext<Space> 
nnoremap tm :tabm<Space> 
nnoremap td :tabclose<CR> 
+0

Bunun sadece "t" nin bir çok kullanımını geçersiz kıldığını (bir karakterin nerede olduğunu bulur ve imlecinizi hemen önüne yerleştirir - "f" nin bir varyasyonu). Bunu bahsetmiştim çünkü bu haritalamayı eskiden "geri" istediğimi fark edene kadar kullanırdım. –

4
"To create a new tab 
nnoremap <C-t> :tabnew<Space> 
inoremap <C-t> <Esc>:tabnew<Space> 

"Tab Navigation 
nnoremap <S-h> gT 
nnoremap <S-l> gt 
+0

Sadece şu şekilde güncelledim: 'nnoremap : tabnew ' ve 'inoremap : tabnew '. Enter tuşuna basmadan sekmeyi açmak için. – Igor

3

Daniel Kullmann currently accepted answer tehlikelidir işaret ediyor.

kullanırsanız, th dizesini yazdığınızda, beklenmedik biçimde genişletilebilir.

Örneğin, :!ls /tmp/tn/ aynı sorun düşmez :!ls /tmp/tabnew/

içine this answer listelenen yaklaşımını genişleyecektir. Bunu kullanmak şöyle olurdu:

cnoreabbrev <expr> tn getcmdtype() == ":" && getcmdline() == 'tn' ? 'tabnew' : 'tn' 
cnoreabbrev <expr> th getcmdtype() == ":" && getcmdline() == 'th' ? 'tabp' : 'th' 
cnoreabbrev <expr> tl getcmdtype() == ":" && getcmdline() == 'tl' ? 'tabn' : 'tl' 
cnoreabbrev <expr> te getcmdtype() == ":" && getcmdline() == 'te' ? 'tabedit' : 'te' 

Bu özelleştirmeler, genişletmenin yalnızca komutlarda ve başka hiçbir yerde yapılmadığından emin olur.

+4

: 'tabedit' için son': te' kısayolu asıl sorunun bir parçası değildi. Bu cevabı aradığımdan bu sayfayı ekledim, çünkü bu sayfaya nasıl gittim. Umarım başkalarının daha hızlı buraya gelmesine yardımcı olur. –