此vim绑定将使<C-l>
更正先前的拼写错误:
inoremap <C-l> <c-g>u<Esc>[s1z=`]a<c-g>u
如何修改它以使其仅在当前行上纠正先前的错误?
答案 0 :(得分:0)
此答案available on Stack Exchange here的版本较短且更好。想法是一样的,但是执行效果更好。
在当前解决方案有效的同时,上面链接中的答案完全重用了原始映射。
下面的原始答案
我一直在修改您的映射的不同版本,并且几乎想出了一个很好的解决方案(尽管非常不雅),需要将其添加到您的配置文件中,如下所示:
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
中以查看其是否不同。