通过键映射动态设置 vim 选项,但有些错误
dynamic set the vim option by key map,but some thing wrong
我想通过某个键重新设置字体大小。
但它不能 运行 好。
你能修复我的代码来实现功能吗?
或者给我其他方法来实现相同的功能。
非常感谢!
这是我设计的脚本。
noremap <C-KPlus> :set guifont=substitute(&guifont,'w\(\d+\)','\="w" . (submatch(1)+1)','g')<CR>
最好使用 :echo
:
以交互方式进行尝试
:echo substitute('foobar-w20','w\(\d+\)','\="w" . (submatch(1)+1)','g')
foobar-w20
不,那不匹配。啊,\d
的乘数必须是 \+
而不是 +
:
:echo substitute('foobar-w20','w\(\d\+\)','\="w" . (submatch(1)+1)','g')
foobar-w21
我们可以删除 w
前缀的重新插入,方法是仅在 \zs
之后开始匹配。
:echo substitute('foobar-w20','w\zs\(\d\+\)','\=submatch(1)+1','g')
foobar-w21
:set
命令采用文字字符串,而不是要计算的 表达式 。我们要么使用 :execute
,要么使用方便的事实,即 :let
可以用来修改 &options
:
:noremap <C-KPlus> :let &guifont=substitute(&guifont,'w\zs\(\d\+\)','\=submatch(1)+1','g')<CR>
:set
和 :let
都不允许在可视模式下插入范围。我认为这个映射应该只适用于普通模式,所以使用:nnoremap
。而且我们不需要显示那么长的表达式,所以 <silent>
:
:nnoremap <silent> <C-KPlus> :let &guifont=substitute(&guifont,'w\zs\(\d\+\)','\=submatch(1)+1','g')<CR>
顺便说一句,在 Windows 上,尺寸似乎是用 h42
后缀编码的,所以让我们也处理一下。我们之前的重构现在真的很有帮助:
:nnoremap <silent> <C-KPlus> :let &guifont=substitute(&guifont,'[hw]\zs\(\d\+\)','\=submatch(1)+1','g')<CR>
我想通过某个键重新设置字体大小。 但它不能 运行 好。 你能修复我的代码来实现功能吗? 或者给我其他方法来实现相同的功能。 非常感谢!
这是我设计的脚本。
noremap <C-KPlus> :set guifont=substitute(&guifont,'w\(\d+\)','\="w" . (submatch(1)+1)','g')<CR>
最好使用 :echo
:
:echo substitute('foobar-w20','w\(\d+\)','\="w" . (submatch(1)+1)','g')
foobar-w20
不,那不匹配。啊,\d
的乘数必须是 \+
而不是 +
:
:echo substitute('foobar-w20','w\(\d\+\)','\="w" . (submatch(1)+1)','g')
foobar-w21
我们可以删除 w
前缀的重新插入,方法是仅在 \zs
之后开始匹配。
:echo substitute('foobar-w20','w\zs\(\d\+\)','\=submatch(1)+1','g')
foobar-w21
:set
命令采用文字字符串,而不是要计算的 表达式 。我们要么使用 :execute
,要么使用方便的事实,即 :let
可以用来修改 &options
:
:noremap <C-KPlus> :let &guifont=substitute(&guifont,'w\zs\(\d\+\)','\=submatch(1)+1','g')<CR>
:set
和 :let
都不允许在可视模式下插入范围。我认为这个映射应该只适用于普通模式,所以使用:nnoremap
。而且我们不需要显示那么长的表达式,所以 <silent>
:
:nnoremap <silent> <C-KPlus> :let &guifont=substitute(&guifont,'w\zs\(\d\+\)','\=submatch(1)+1','g')<CR>
顺便说一句,在 Windows 上,尺寸似乎是用 h42
后缀编码的,所以让我们也处理一下。我们之前的重构现在真的很有帮助:
:nnoremap <silent> <C-KPlus> :let &guifont=substitute(&guifont,'[hw]\zs\(\d\+\)','\=submatch(1)+1','g')<CR>