Mapowałem zz
na 1z=
, co jest świetne przez większość czasu, ale od czasu do czasu pierwsza sugestia nie jest właściwa.
Chciałbym więc powtarzać zz
(lub .
), aby przełączać się między innymi sugestiami.
Drugie zz
słowo na tym samym słowie działałoby tak u2z=
, trzecie zz
działało jak u3z=
i tak dalej.
Wszelkie pomysły, jak to zrobić?
Edytować:
Na podstawie niesamowitej odpowiedzi @ nobe4 udało mi się zrobić to, co chcę, ale zostawię to na chwilę na wypadek, gdyby ktoś miał jakieś ulepszenia lub sugestie:
let s:spell_position = []
let s:spell_count = 0
let s:spell_word = ""
function! LoopSpell()
if s:spell_position != getpos('.') ||
\ (s:spell_count > 0 && s:spell_word !~ expand("<cword>"))
let s:spell_count = 0
let s:spell_position = getpos('.')
endif
if s:spell_count > 0
silent execute "normal! u"
endif
let s:current_word = expand("<cword>")
if len(s:current_word) <= 0
return
endif
let s:spell_suggestions = spellsuggest(expand(s:current_word))
if len(s:spell_suggestions) <= 0
return
endif
if s:spell_count >= len(s:spell_suggestions)
let s:spell_word = s:current_word
let s:spell_count = 0
else
let s:spell_word = s:spell_suggestions[s:spell_count]
let s:spell_count += 1
endif
silent execute "normal! ciw" . s:spell_word
let s:spell_position = getpos('.')
endfunction
nnoremap <c-m> :call LoopSpell()<CR>
(Zmieniłem mapowanie na z <c-m>
powodu komentarza @ Vitora. To także pozwala mi przytrzymać te klawisze i dość szybko przewijać sugestie. Myślę o tym jak o <c-mistake>
.)
zz
polecenie szybko naprawiało określone rzeczy.
zz
centruje okno wokół bieżącej linii. To prawdopodobnie jeden ze skrótów, których używam częściej. Powinieneś również sprawdzić kasę zb
i zt
.
scrolloff
dość wysoko, ale nadal wydaje się to przydatne, rozważę inne mapowanie. Dzięki!
:Correct
polecenia: będziesz w stanie poruszać się koryta słowa poprawne zn
aN
, otwiera się okno podzielone ze wszystkimi sugestiami korekcyjnych może po prostu żeglować przez nichj
ik
i<CR>
będzie zastosuj poprawkę.