2009-11-06 6 views
16

Je suis en train d'utiliser snipMate et pydiction dans vim ensemble - cependant, les deux utilisent la <tab> clé pour réaliser leur génie-auto-complétion-bout-rendu -bonne-que-je-si-désir.Avec VIM, utilisez les deux snipMate et pydiction ensemble (partager la <tab> clé?)

Lorsque pydiction est installé, snipMate cesse de fonctionner. Je suppose que c'est parce qu'ils ne peuvent pas tous les deux posséder la clé <tab>. Comment puis-je les amener à travailler ensemble?

Ça ne me dérangerait pas de mapper l'une d'entre elles sur une clé différente, mais je ne suis pas vraiment sûr de savoir comment faire ça ... (peut-être pydiction à la clé <ctrl-n> pour imiter l'autocomplétion de vim?).

Voici la Vimrc pertinente:

filetype indent plugin on 

autocmd FileType python set ft=python.django 
autocmd FileType html set ft=html.django_template 

let g:pydiction_location = '~/.vim/ftplugin/pydiction-1.2/complete-dict' 

Répondre

15

Eh bien, cela est du fichier d'aide Snipmate :)

               *snipMate-remap* 
snipMate does not come with a setting to customize the trigger key, but you 
can remap it easily in the two lines it's defined in the 'after' directory 
under 'plugin/snipMate.vim'. For instance, to change the trigger key 
to CTRL-J, just change this: > 

ino <tab> <c-r>=TriggerSnippet()<cr> 
snor <tab> <esc>i<right><c-r>=TriggerSnippet()<cr> 

to this: > 
ino <c-j> <c-r>=TriggerSnippet()<cr> 
snor <c-j> <esc>i<right><c-r>=TriggerSnippet()<cr> 
+0

Parfait - merci! Peut-être que dans toutes mes recherches j'aurais dû regarder de plus près les documents d'aide. Il h. – thornomad

+3

plus vrai, maintenant la documentation précise qu'il peut être reconfiguré avec 'imap snipMateNextOrTrigger' et' SMAP snipMateNextOrTrigger' – TKrugg

+1

+1 @TKrugg Voir mes dotfiles engagent les remaps. https://github.com/simeonwillbanks/dotfiles/commit/660b0505c82157656e15d47cd43108d2d39409db – simeonwillbanks

7

Vous pouvez modifier ~/.vim/after/ftplugin/python_pydiction.vim et changer Tab à autre chose:

" Make the Tab key do python code completion: 
inoremap <silent> <buffer> <Tab> 
     \<C-R>=<SID>SetVals()<CR> 
     \<C-R>=<SID>TabComplete('down')<CR> 
     \<C-R>=<SID>RestoreVals()<CR> 

" Make Shift+Tab do python code completion in the reverse direction: 
inoremap <silent> <buffer> <S-Tab> 
     \<C-R>=<SID>SetVals()<CR> 
     \<C-R>=<SID>TabComplete('up')<CR> 
     \<C-R>=<SID>RestoreVals()<CR> 
+0

+1: Cela fonctionne pour moi. –

4

Je crois que le w ay pour changer la clé de déclenchement peut avoir changé depuis que la réponse de the_karel a été donnée en 2009 mais elle se trouve dans le même répertoire, à savoir 'after/plugin/snipMate.vim'. Je l'ai trouvé dans le fichier d'aide aussi:

*snipMate-trigger* 
snipMate comes with a setting to configure the key that is used to trigger 
snipMate. To configure the key set g:snips_trigger_key to something other than 
<tab>,e.g. <c-space> use: 

let g:snips_trigger_key='<c-space>'