欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Sublime 更改Shell中if Then自动补全方式

我的编辑器一直用sublime text,最近在写个小脚本,常用的shell的自动不全,可是在if then 语句及elif 语句不全的时候会自动不全成如下:

if [[ condition ]]; then

#statements
fi
[[ 虽然提供过了高级特性模式匹配,可以定义正则表达式等,但是这就造成了兼容性问题,[[ 是bash 和ksh的特性,当用sh 执行的时候呢假如sh test.sh [[ 处就会报错如下:
test1.sh: 7: test1.sh: [[: not found
假如我用./test.sh 运行呢? 那肯定可以执行咯,因为已经明确指出了shebang为/bin/bash咯

用bash test.sh 更不用说了肯定没问题。

假如我写的脚本有些人用sh来运行的话那就出问题了。所以为了兼容这个小小的问题,又可以快速使用sublime的补全,我就去更改下sublime的shell script 包,更改下面两个文件:

if-…-then-(if).sublime-snippet 和 elif-..-(elif).sublime-snippet
将这两个文件中的如下字段做以修改:
修改前: <content><![CDATA[if ${2:[[ ${1:condition} ]]}; then
${0:#statements}
fi]]></content>

修改后: <content><![CDATA[if ${2:[ ${1:condition} ]}; then
${0:#statements}
fi]]></content>
当然,elif修改也是照猫画虎。这样就可以做到一个小小的兼容和高效的工作。


来自 https://shuiqingliu.com/2014/11/30/sublime-%E6%9B%B4%E6%94%B9shell%E4%B8%ADif-then%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8%E6%96%B9%E5%BC%8F/


普通分类: