VIM - 多行bash命令序列

时间:2012-11-26 17:36:26

标签: vim vi

我有一个键盘映射,我在之前回答的问题中发布了:

VIM - Sourcing tags from multiple locations in project

我想知道是否可以使这个映射成为一组函数的多行映射,以便它在我的.vimrc文件中更整洁。该命令目前是一个巨大的单行:

" Create a mapping to delete the old tags, re-generate them, and use them
map <F10> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . \| rm -f $SDK_SRC_PLUS_HEADERS/tags \| ctags -R -f $SDK_SRC_PLUS_HEADERS/tags $SDK_SRC_PLUS_HEADERS/tags  \| rm -f $THIRD_PARTY_SDK/tags \| ctags -R -f $THIRD_PARTY_SDK/tags $THIRD_PARTY_SDK/tags  \| echo "Done re-generating tags."<CR>

VIM是否支持某种转义序列,因此我可以将映射分解为更可读和块对齐的内容,如下所示:

" Create a mapping to delete the old tags, re-generate them, and use them
map <F10> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
          \| rm -f $SDK_SRC_PLUS_HEADERS/tags
          \| ctags -R -f $SDK_SRC_PLUS_HEADERS/tags $SDK_SRC_PLUS_HEADERS/tags
          \| rm -f $THIRD_PARTY_SDK/tags
          \| ctags -R -f $THIRD_PARTY_SDK/tags $THIRD_PARTY_SDK/tags
          \| echo "Done re-generating tags."<CR>

我尝试了很多逃脱序列,但没有运气。

提前谢谢大家。

1 个答案:

答案 0 :(得分:1)

为什么不将它作为shell脚本并在一行中简单地引用它?

这样你就可以在vim之外轻松测试它,并在其他工具中使用它。

要回答下面的问题,如果您的环境变量是在与vim相同的会话中导出的(并且在vim之前),那么无论您以后更改它们,它们对于子流程都将保持相同。