我正在尝试在vim中使用snipMate和pydiction - 但是,两者都使用<tab>
键来执行他们的天才 - 自动完成 - 片段渲染 - 善意 - -I那么愿望。
安装pydiction时,snipMate停止工作。我假设它是因为他们不能拥有<tab>
密钥。我怎样才能让他们一起工作?
我不介意将其中一个映射到另一个键,但我不确定如何做到这一点......(可能是对<ctrl-n>
键的嘲讽所以它模仿vim的自动完成?)。< / p>
以下是相关的.vimrc:
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'
答案 0 :(得分:15)
嗯,这是来自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>
答案 1 :(得分:7)
或者,您可以修改~/.vim/after/ftplugin/python_pydiction.vim
并将Tab
更改为其他内容:
" 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>
答案 2 :(得分:4)
我认为更改触发器键的方式可能已经改变,因为the_karel的答案是在2009年给出的,但它位于同一目录中,即'after / plugin / snipMate.vim'。我也在帮助文件中找到了它:
*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>'