0

我在 vim 中经常使用 Ultisnips 和 vim-expand:

snippet prg 
!This is file : `!v expand('%:r')`
! Author= `!v expand($USER)`
! Started at: `date +%d.%m.%y`
! 
Program  ${1:`!v expand('%:r')`}
Implicit None
${2:<++Start Typing++>}
End Program  $1
endsnippet

我面临的问题是,在 ${1:`!v expand('%:r')`} 中扩展 ${1:} 之后,如果我放了一个换行符,那么 $1 inEnd Program $1也会拾取它; 这不是故意的。为了清楚起见,这是一个截屏视频: https ://www.youtube.com/watch?v=0IjoqWXQNI8

我想扩展和匹配第一行,但不是在换行之后。请帮助。

4

1 回答 1

0

您正在寻找的是Ultisnips的截屏视频已经涵盖的内容。您只需要对代码段值进行正则表达式调整$1

Program  ${1:`!v expand('%:r')`}
Implicit None
${2:<++Start Typing++>}
End Program  ${1/([^\n$]+).*/$1/}
endsnippet

${1/([^\n$]+).*/$1/}
        |     |  |
        |     |  +--------Replace by first atom i.e. Matched by (..)
        |     +--------Anything That follows.
        +----------- Match everything except a newline | EOL(endofline)
于 2015-02-22T17:55:11.257 回答