1
0
Fork 0
mirror of synced 2024-12-30 10:29:25 -05:00
ultimate-vim/sources_non_forked/vim-snippets/UltiSnips/sh.snippets

96 lines
2.3 KiB
Text
Raw Normal View History

priority -50
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
2012-08-16 23:41:25 -04:00
###########################################################################
# TextMate Snippets #
###########################################################################
2019-08-22 11:36:17 -04:00
snippet #! "#!/usr/bin/env (!env)" b
`!p snip.rv = '#!/usr/bin/env ' + getShell() + "\n" `
2012-08-16 23:41:25 -04:00
endsnippet
2019-12-30 08:28:38 -05:00
snippet sbash "safe bash options" b
2016-04-03 16:59:57 -04:00
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
`!p snip.rv ='\n\n' `
endsnippet
2019-12-30 08:28:38 -05:00
snippet temp "Tempfile" b
2017-07-06 08:57:35 -04:00
${1:TMPFILE}="$(mktemp -t ${3:--suffix=${4:.SUFFIX}} ${2:`!p
2012-08-16 23:41:25 -04:00
snip.rv = re.sub(r'[^a-zA-Z]', '_', snip.fn) or "untitled"
2017-07-06 08:57:35 -04:00
`}.XXXXXX)"
${5:${6/(.+)/trap "/}${6:rm -f '$${1/.*\s//}'}${6/(.+)/" 0 # EXIT\n/}${7/(.+)/trap "/}${7:rm -f '$${1/.*\s//}'; exit 1}${7/(.+)/" 2 # INT\n/}${8/(.+)/trap "/}${8:rm -f '$${1/.*\s//}'; exit 1}${8/(.+)/" 1 15 # HUP TERM\n/}}
2012-08-16 23:41:25 -04:00
endsnippet
2019-12-30 08:28:38 -05:00
snippet /case|sw(itch)?/ "case .. esac (case)" rb
2012-08-16 23:41:25 -04:00
case ${1:word} in
${2:pattern} )
2019-12-30 08:28:38 -05:00
${0:${VISUAL}};;
2012-08-16 23:41:25 -04:00
esac
endsnippet
2019-12-30 08:28:38 -05:00
snippet elif "elif .. (elif)" b
2012-08-16 23:41:25 -04:00
elif ${2:[[ ${1:condition} ]]}; then
2019-12-30 08:28:38 -05:00
${0:${VISUAL}}
2012-08-16 23:41:25 -04:00
endsnippet
2019-12-30 08:28:38 -05:00
snippet for "for ... done (for)" b
2012-08-16 23:41:25 -04:00
for (( i = 0; i < ${1:10}; i++ )); do
2019-12-30 08:28:38 -05:00
${0:${VISUAL}}
2012-08-16 23:41:25 -04:00
done
endsnippet
2019-12-30 08:28:38 -05:00
snippet forin "for ... in ... done (forin)" b
2012-08-16 23:41:25 -04:00
for ${1:i}${2/.+/ in /}${2:words}; do
2019-12-30 08:28:38 -05:00
${0:${VISUAL}}
2012-08-16 23:41:25 -04:00
done
endsnippet
snippet here "here document (here)"
<<-${2:'${1:TOKEN}'}
$0
${1/['"`](.+)['"`]/$1/}
endsnippet
2019-12-30 08:28:38 -05:00
snippet if "if ... then (if)" b
2012-08-16 23:41:25 -04:00
if ${2:[[ ${1:condition} ]]}; then
2019-12-30 08:28:38 -05:00
${0:${VISUAL}}
2012-08-16 23:41:25 -04:00
fi
endsnippet
2019-12-30 08:28:38 -05:00
snippet until "until ... (done)" b
2012-08-16 23:41:25 -04:00
until ${2:[[ ${1:condition} ]]}; do
2019-12-30 08:28:38 -05:00
${0:${VISUAL}}
2012-08-16 23:41:25 -04:00
done
endsnippet
2019-12-30 08:28:38 -05:00
snippet /wh(ile)?/ "while ... (done)" rb
2012-08-16 23:41:25 -04:00
while ${2:[[ ${1:condition} ]]}; do
2019-12-30 08:28:38 -05:00
${0:${VISUAL}}
2012-08-16 23:41:25 -04:00
done
endsnippet
# vim:ft=snippets: