我按如下方式设置了映射键:
" 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键缩进代码块的问题?谢谢!
答案 0 :(得分:9)
通过:h UltiSnips-triggers
查看UltiSnips文档说明了这一点:
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`文件中设置这样的东西:
let g:UltiSnipsExpandTrigger = '<f5>'
但是,您可能需要重新考虑<tab>
映射。我建议您删除它们,并在正常模式下使用>>
或<<
,在可视模式下使用>
或<
进行初始缩进/取消缩进,然后重复操作.
,重做命令。如果您缩进/缩进太远,则只需通过u
撤消。
如需更多帮助,请参阅:
:h >>
:h .
:h u
答案 1 :(得分:0)
您可以将默认展开触发器更改为其他键,但我认为最好使用以下地图:
nnoremap > v>
nnoremap < v<
vnoremap > >gv
vnoremap < <gv
它适用于我。
此外,<Tab>
删除您选择的多行代码是UltiSnips
的一项功能。您可以在UltiSnips
代码段中使用所选文字。看看here。