所以我用 python 插值写了一个小的 ulti-snips 片段。通常当您点击撤消时,在展开片段后,它会返回触发词。但在这种情况下,我必须两次点击撤消。我怀疑这是我正在使用的搜索功能。我真的很感激这方面的一些帮助。我想使用比搜索更好的功能,或者以某种方式使用搜索(或导致此问题的任何原因)来不污染撤消历史记录。这是片段:
snippet super "Adds a super function for the current function" b
`!p
import vim
# get the class name
line_number = int(vim.eval('search("class .*(", "bn")'))
line = vim.current.buffer[line_number - 1]
class_name = re.findall(r'class\s+(.*?)\s*\(', line)[0]
# get the function signature
line_number = int(vim.eval('search("def.*self.*", "bn")'))
line = vim.current.buffer[line_number - 1]
func = re.findall(r'def\s+(.*):', line)[0]
matches = re.findall(r'(.*)\(self,?\s*(.*)\)', func)
snip.rv = 'super(%s, self).%s(%s)' % (class_name, matches[0][0], matches[0][1])
`
endsnippet