2

我正在尝试使用单个键绑定来切换 vim 中的自动格式化(例如,fo+=a如果未启用,则启用,否则禁用),如下所示:fo-=a

nnoremap <leader>a "magic goes here"

我考虑过使用一些存在条件检查,但我找不到。我怎样才能做到这一点?

4

3 回答 3

3

The magic is the '&' in the snippet below

:help expr-option

nnoremap <leader>a call ToggleFormat()

function! toggleFormat()
      if &formatoptions !~ 'a'
          set fo+=a
      else
          set fo-=a
      endif
  return 0 
endfunction
于 2013-02-21T22:17:20.257 回答
3

这就是我要做的:

function! ToggleAutoFormat()
    if -1==stdridx(&fo, 'a')
        set fo+=a
    else
        set fo-=a
    endif
endfunction

nnoremap <leader>a :call ToggleAutoFormat()
于 2013-02-21T22:15:03.140 回答
0

Lighthart 答案的更新版本,包含一些调整:

function! ToggleFormat()
      if &formatoptions !~ 'a'
          set fo+=a
      else
          set fo-=a
      endif
      "" print the value of formatoptions once we're done
      set formatoptions
endfunction

"" End with <CR> to instantly run the function when triggered.
nnoremap <leader>a :call ToggleFormat()<CR>
于 2022-02-16T02:00:47.527 回答