问题描述
我将映射键设置如下:
" Easy indent for code blocks
nmap <tab> v>
nmap <s-tab> v<
vmap <tab> >gv
vmap <s-tab> <gv
那很好.但是,当我通过vundle安装UltiSnips
时,Tab键不能作为缩进操作使用,它将删除我选择的多行代码.我知道这是因为默认设置为UltiSnips
.我想保留UltiSnips
的Tab映射来触发其功能,如何解决使用TAB键缩进代码块的问题?谢谢!
That works good. But, when I installed UltiSnips
by vundle, the Tab key does't work as indent action, it will remove multi-line codes which I selected. I know this is because the default setting of UltiSnips
. I would like to remain the Tab mapping for UltiSnips
to trigger its functions, How do I solve the problem of using the TAB key to indent code blocks? Thanks!
推荐答案
通过:h UltiSnips-triggers
查看UltiSnips文档是这样的:
Looking at UltiSnips documentation via :h UltiSnips-triggers
says this:
You can define the keys used to trigger UltiSnips actions by setting global
variables. Variables define the keys used to expand a snippet, jump forward
and jump backwards within a snippet, and list all available snippets in the
current expand context. The variables with their default values are: >
g:UltiSnipsExpandTrigger <tab>
g:UltiSnipsListSnippets <c-tab>
g:UltiSnipsJumpForwardTrigger <c-j>
g:UltiSnipsJumpBackwardTrigger <c-k>
因此,在您的〜/.vimrc`文件中设置以下内容:
So set something like this in your ~/.vimrc` file:
let g:UltiSnipsExpandTrigger = '<f5>'
但是,您可能需要重新考虑您的<tab>
映射.我建议您删除它们,并在正常模式下使用>>
或<<
,在可视模式下使用>
或<
进行初始缩进/取消缩进,然后通过.
(重做命令)重复该操作.如果您缩进/取消缩进太远,则可以通过u
撤消它.
However you may want to reconsider your <tab>
mappings. I suggest you remove them and use >>
or <<
in normal mode and >
or <
in visual mode to do the initial indent/un-indent then repeat the action via .
, the redo command. If you ever indent/un-indent too far then just undo it via u
.
有关更多帮助,请参见:
For more help see:
:h >>
:h .
:h u
这篇关于如何解决Vim中`UltiSnips`插件的TAB键映射的冲突的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!