global !p import vim # Tests for the existence of a variable declared by Vim's filetype detection # suggesting the type of shell script of the current file def testShell(scope, shell): return vim.eval("exists('" + scope + ":is_" + shell + "')") # Loops over the possible variables, checking for global variables # first since they indicate an override by the user. def getShell(): for scope in ["g", "b"]: for shell in ["bash", "posix", "sh", "kornshell"]: if testShell(scope, shell) == "1": if shell == "kornshell": return "ksh" if shell == "posix": return "sh" return shell return "sh" endglobal snippet #! `!p snip.rv = '#!/bin/' + getShell() + "\n\n" ` endsnippet snippet !env "#!/usr/bin/env (!env)" `!p snip.rv = '#!/usr/bin/env ' + getShell() + "\n\n" ` endsnippet snippet if "If Condition" b if [ $1 ]; then $0 fi endsnippet