1

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

VIM - 从项目中的多个位置采购标签

我想知道是否可以将此映射作为多线映射到一组函数,以便它在我的.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>

我尝试了许多转义序列,但没有运气。

谢谢大家。

4

1 回答 1

1

为什么不把它做成一个 shell 脚本并在一行中简单地引用它呢?

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

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

于 2012-11-26T17:38:23.117 回答