snippet h1 "h1 header" bA # $0 endsnippet snippet h2 "h2 header" bA ## $0 endsnippet snippet h3 "h3 header" bA ### $0 endsnippet snippet h4 "h4 header" bA #### $0 endsnippet snippet h5 "h5 header" bA ##### $0 endsnippet snippet h6 "h6 header" bA ###### $0 endsnippet snippet link "link" [$1]($2)$0 endsnippet snippet img "image" ![$2]($1)$0 endsnippet snippet im "inline math" \$$0\$ endsnippet snippet am "display math" \$\$ $0 \$\$ endsnippet snippet cb "code block" bA \`\`\`$1 $0 \`\`\` endsnippet global !p # A overkill(dirty) table with automatic alignment feature def create_table(snip): # retrieving single line from current string and treat it like tabstops count placeholders_string = snip.buffer[snip.line].strip() rows_amount = int(placeholders_string[0]) columns_amount = int(placeholders_string[1]) prefix_str = "from vimsnippets import display_width;" # erase current line snip.buffer[snip.line] = "" # create anonymous snippet with expected content and number of tabstops anon_snippet_title = "| " anon_snippet_delimiter = "|" for col in range(1, columns_amount+1): sync_rows = [x*columns_amount+col for x in range(rows_amount+1)] sync_str = ",".join(["t[{0}]".format(x) for x in sync_rows]) max_width_str = "max(list(map(display_width, [" + sync_str + "])))" cur_width_str = "display_width(t[" + str(col) + "])" rv_val = "(" + max_width_str + "-" + cur_width_str + ")*' '" anon_snippet_title += "${" + str(col) + ":head" + str(col)\ + "}`!p " + prefix_str + "snip.rv=" + rv_val + "` | " anon_snippet_delimiter += ":`!p " + prefix_str + "snip.rv = "\ + max_width_str + "*'-'" + "`-|" anon_snippet_title += "\n" anon_snippet_delimiter += "\n" anon_snippet_body = "" for row in range(1, rows_amount+1): body_row = "| " for col in range(1, columns_amount+1): sync_rows = [x*columns_amount+col for x in range(rows_amount+1)] sync_str = ",".join(["t[{0}]".format(x) for x in sync_rows]) max_width_str = "max(list(map(display_width, [" + sync_str + "])))" cur_width_str = "display_width(t[" + str(row*columns_amount+col) + "])" rv_val = "(" + max_width_str + "-" + cur_width_str + ")*' '" placeholder = "R{0}C{1}".format(row, col) body_row += "${" + str(row*columns_amount+col) + ":" + placeholder\ + "}`!p " + prefix_str + "snip.rv=" + rv_val + "` | " body_row += "\n" anon_snippet_body += body_row anon_snippet_table = anon_snippet_title + anon_snippet_delimiter + anon_snippet_body # expand anonymous snippet snip.expand_anon(anon_snippet_table) endglobal post_jump "create_table(snip)" snippet "tb([1-9][1-9])" "Fancy table" br `!p snip.rv = match.group(1)` endsnippet