如何在vim中添加别名/函数而不影响makefile的建立

时间:2018-09-14 07:00:45

标签: bash vim

我通常在.bashrc文件中添加多个别名和bash函数。例如g代表“ grep -nri ...”,v代表vim等。但是有时我的新操作系统中有一些cmds被我的别名覆盖,因此我看到意外的构建失败。

是否有任何方法可以在bashrc中添加别名/功能,而该别名/功能应仅在交互式shell上运行,而不应该通过makefile或其他脚本运行?

谢谢...

2 个答案:

答案 0 :(得分:1)

默认情况下,bash别名的扩展在非交互式会话中是禁用的(例如,在执行脚本时)。

您是不是在.bashrc / .profile中执行shopt -s expand_aliases?这样可以在非交互式会话中扩展别名。

为了100%安全,您可以在运行例如以下命令之前执行shopt -u expand_aliases制作脚本。这将取消设置expand_aliases标志。

另一种方法是在运行非交互式会话时完全停止获取bash配置文件。这是通过在您的.profile或.bashrc中添加以下行来实现的:

[[ $- =~ i ]] && return

该行之前的代码仍在非交互式会话中执行。确保在下面添加自定义别名和功能。

答案 1 :(得分:0)

不应为非交互式外壳定义别名和快捷方式功能,因为其他外壳脚本可能会与您的自定义混淆(如您所知)。如果执行脚本的外壳不需要读取和处理所有自定义项,则对性能也有好处。

通常,您可以通过int currentPosition = mViewPager.getCurrentItem(); mPagerAdapter.notifyDataSetChanged(); mViewPager.setAdapter(null); mViewPager.setAdapter(mPagerAdapter); mViewPager.setCurrentItem(currentPosition); 末尾的保护子句来执行此操作。将您的自定义设置放在该防护之后。

~/.bashrc