在vim中运行Bash aliases
我比较喜欢用bash的alias,如果一些命令老是重复出现或者容易输错,我就会将它们写成alias,或者稍微复杂一点,写一个函数。慢慢地也还累积了不少alias,用得也很习惯,以至于我用别人的电脑,总不太适应,alias另外也会导致某些命令的自动补全失效。我这里要说的另外一个问题,我们知道在vim及其它一些工具中可以执行外部命令,但是它并不能执行alias和函数,这就比较令人困惑,我不得不输入展开的alias,而使用alias的不良后果之一就是容易忘记原来的命令,需要在alias和展开的形式之间切换是件很麻烦的事。函数和alias也类似,但是要展开函数就更麻烦了,由于两者的相似性,下文我只说alias,其实对函数也是适用的。
首先明白为什么不能在vim中使用alias是有好处的。进程要执行一个命令只能依靠系统函数execve(在它之前可能要先调用fork函数),它的函数声明如下:
:set shellcmdflag=-ic
这样就可以直接使用':!your_alias'来执行bash alias了。