Vim换行:如何在换行时自动插入反斜杠'\'?

wln*_*ana 4 vim indentation

假设我:set tw=5在包装以下'long'行时:

a = b + c
Run Code Online (Sandbox Code Playgroud)

它成为了:

a = b
+ c
Run Code Online (Sandbox Code Playgroud)

但我希望它是:

a = b \
+ c
Run Code Online (Sandbox Code Playgroud)

如果在下一行之前插入智能缩进,甚至更好,如下所示:

a = b \
  + c
Run Code Online (Sandbox Code Playgroud)

怎么做?

Bre*_*t Y 5

你在寻找什么:h formatexpr.

您需要定义一个表达式来检查您所处的模式mode() ==# 'i',然后执行您希望发生的更改.返回非零将使用默认的expr.

例如

set formatexpr=FormatFoo()
function! FormatFoo()
  if mode() ==# 'i'
    echom "insertmode line wrap"
    return 1
  else
    echom "normalmode line wrap"
    return 1
  endif
endfunction
Run Code Online (Sandbox Code Playgroud)