如何解决Vim中`UltiSnips`插件的TAB键映射冲突

moc*_*kee 7 vim ultisnips

我已设置映射键如下:

" Easy indent for code blocks
  nmap <tab>      v>
  nmap <s-tab>    v<
  vmap <tab>      >gv
  vmap <s-tab>    <gv
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,当我UltiSnips通过vundle 安装时,Tab键不能作为缩进操作,它将删除我选择的多行代码.我知道这是因为默认设置UltiSnips.我想保留Tab映射UltiSnips以触​​发其功能,如何解决使用TAB键缩进代码块的问题?谢谢!

Pet*_*ker 9

通过以下方式查看UltiSnips文档:h UltiSnips-triggers:

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>
Run Code Online (Sandbox Code Playgroud)

所以在你的〜/ .vimrc`文件中设置这样的东西:

let g:UltiSnipsExpandTrigger = '<f5>'
Run Code Online (Sandbox Code Playgroud)

但是,您可能需要重新考虑<tab>映射.我建议您删除它们并使用>><<在正常模式下><在可视模式下执行初始缩进/取消缩进,然后通过.重做命令重复操作.如果你缩进/缩进太远,那么只需撤消它u.

有关更多帮助请参阅:

:h >>
:h .
:h u
Run Code Online (Sandbox Code Playgroud)

  • 在我的情况下,`tab` 与 supertab 插件相冲突。请注意,如果您在 putty 上使用 vim,那么某些键组合可能无法开箱即用,例如 `&lt;f5&gt;` 或 `&lt;c-tab&gt;`,在这种情况下尝试类似 `let g:UltiSnipsExpandTrigger = '&lt;cj &gt;'` 还具有比 `&lt;c-tab&gt;` 打字更舒服的好处 (2认同)