0

我有以下片段:

snippet ta "table" b
.${1:Title}
[${2:width="${3:80%}",cols="${4:}",frame="topbot",options="header",stripe="even"}]                                            
|====                                   
|$0                                                         
|====      

但是一旦我跳到 $0,我想在每一行插入 'a|sometext'。我更喜欢使用制表符或输入。我怎样才能做到这一点?感谢您的任何建议。

4

1 回答 1

0

不幸的是,我不相信 Ultisnips 可以做到这一点。

您可以修改输入的镜像,但不能修改输入本身。您可以使用 post expand python 函数,但这对于您的问题来说似乎过于复杂。

从我的角度来看,最简单的解决方案是将<CR>(= enter) 键包装到 vim 函数中,并|在必要时添加一个字符:

function HandleCR()
    if getline(line('.')) =~ '^|'
        return "\<CR>|"
    endif
    return "\<CR>"
endfunction
inoremap <buffer><silent> <CR> <C-r>=HandleCR()<CR>

(放入您的.vimrc,而不是片段文件中)

请注意,这将始终有效,即使在片段之外

于 2020-05-01T21:49:29.923 回答