如何使 vim 拼写错误只搜索当前行?
How to make vim spell error search the current line only?
此 vim 绑定将使 <C-l>
更正先前的拼写错误:
inoremap <C-l> <c-g>u<Esc>[s1z=`]a<c-g>u
如何修改它以使其仅更正当前行上的先前错误?
这个答案有一个更短更好的版本 available on Stack Exchange here。思路是一样的,但是执行起来更好
虽然当前解决方案有效,但上面 link 中的答案完全重用了原始映射。
原回答如下
我一直在修改你的映射的不同版本,几乎想出了一个很好的解决方案(虽然它很不优雅)需要添加到你的配置文件中,如下所示:
function! FixLastSpellCurrentLine()
let s:linenum1 = line('.')
execute 'normal ms[s'
let s:linenum2 = line('.')
execute 'normal `s'
if s:linenum1 == s:linenum2
execute 'normal ms[s1z=`sl'
endif
let s:islastchar = col(".") == col("$")-1
if s:islastchar
:startinsert!
else
execute 'normal h'
:startinsert
endif
endfunction
imap <C-l> <esc>:call FixLastSpellCurrentLine()<CR>
这可能不会在所有情况下都像您期望的那样工作,但是这已经足够接近了,我觉得它可能会激励您或其他人改进它。这个想法只是检查以前的拼写错误发生的位置并比较行。我认为这可以或多或少地按照这些思路来实施,但我仍然不相信这个解决方案是理想的。
它的作用:
- 从您当前的光标位置,它进入正常模式并调用定义的函数。
- 然后将当前行的值存储到
s:linenum1
。
- 用
ms
标记当前位置并跳转到文件中发现的上一个拼写错误
- 从那里,它再次将行号捕获到
s:linenum2
中以查看它是否不同。
- 它会回到原来的位置并确定线路是否已更改。如果它改变了,它会 return 进入插入模式到光标所在的位置,并且如果它发生在另一行将不会更正任何拼写错误。
- 如果没有改变,它会更正拼写错误,return到光标原来的位置。
此 vim 绑定将使 <C-l>
更正先前的拼写错误:
inoremap <C-l> <c-g>u<Esc>[s1z=`]a<c-g>u
如何修改它以使其仅更正当前行上的先前错误?
这个答案有一个更短更好的版本 available on Stack Exchange here。思路是一样的,但是执行起来更好
虽然当前解决方案有效,但上面 link 中的答案完全重用了原始映射。
原回答如下
我一直在修改你的映射的不同版本,几乎想出了一个很好的解决方案(虽然它很不优雅)需要添加到你的配置文件中,如下所示:
function! FixLastSpellCurrentLine()
let s:linenum1 = line('.')
execute 'normal ms[s'
let s:linenum2 = line('.')
execute 'normal `s'
if s:linenum1 == s:linenum2
execute 'normal ms[s1z=`sl'
endif
let s:islastchar = col(".") == col("$")-1
if s:islastchar
:startinsert!
else
execute 'normal h'
:startinsert
endif
endfunction
imap <C-l> <esc>:call FixLastSpellCurrentLine()<CR>
这可能不会在所有情况下都像您期望的那样工作,但是这已经足够接近了,我觉得它可能会激励您或其他人改进它。这个想法只是检查以前的拼写错误发生的位置并比较行。我认为这可以或多或少地按照这些思路来实施,但我仍然不相信这个解决方案是理想的。
它的作用:
- 从您当前的光标位置,它进入正常模式并调用定义的函数。
- 然后将当前行的值存储到
s:linenum1
。 - 用
ms
标记当前位置并跳转到文件中发现的上一个拼写错误 - 从那里,它再次将行号捕获到
s:linenum2
中以查看它是否不同。 - 它会回到原来的位置并确定线路是否已更改。如果它改变了,它会 return 进入插入模式到光标所在的位置,并且如果它发生在另一行将不会更正任何拼写错误。
- 如果没有改变,它会更正拼写错误,return到光标原来的位置。