如何在我们执行nowrap时启用水平滚动条

Jam*_*ond 21 vim

有人可以帮忙解决方案吗?我想在我做的时候弹出水平滚动条,nowrap反之亦然wrap.

目前我单独使用这些设置来简化我的工作; 有没有办法合并他们两个?

nnoremap <silent> <F3> :if &guioptions=~#'b'<Bar>set guioptions-=b<Bar>else<Bar>set guioptions+=b<Bar>endif<CR>
map <F2> :set nowrap! <CR> 
Run Code Online (Sandbox Code Playgroud)

ib.*_*ib. 37

让我们构建一个命令,用于相应地切换两个选项.首先,它应该切换wrap选项:

:set wrap!
Run Code Online (Sandbox Code Playgroud)

然后,guioptions应根据在命令执行时是否启用换行来更改.如果文本被包装,则应显示底部滚动条以准备wrap禁用:

:set guioptions+=b
Run Code Online (Sandbox Code Playgroud)

或者,如果关闭文本换行,它应隐藏底部滚动条:

:set guioptions-=b
Run Code Online (Sandbox Code Playgroud)

为了从上面的三个中创建一个命令,我们可以使用表达式映射

:nnoremap <silent><expr> <f2> ':set wrap! go'.'-+'[&wrap]."=b\r"
Run Code Online (Sandbox Code Playgroud)

这变成了击键的顺序

:set wrap! go+=bEnter

如果wrap选项设置(并且等于一),或者

:set wrap! go-=bEnter

否则(当&wrap评估为零时).

  • @Jamesbond:如果它适合你,请[将答案标记为已接受](http://meta.stackexchange.com/a/5235). (4认同)