2011-03-15 10 views
27

Mój zwykły przepływ Vim praca:Jak poprawić błędy ortograficzne Vima szybciej?

  • W trybie wstawiania, pisze coś złego.

    Vim spell

  • Naciśnij ^X s dostać jakieś sugestie.

    Vim screen

  • Naciśnij klawisz Esc, aby zaakceptować pierwszy.

Po tym, jestem w trybie poleceń w środku linii, zamiast trybu wstawiania w miejscu, w którym byłam wcześniej. Mogę użyć A, ale działa to tylko wtedy, gdy pisałem na końcu linii. Czy istnieje alternatywny sposób? Optymalnie, chciałbym wykonać polecenie, które koryguje ostatni błąd do pierwszej sugestii bez przesuwania kursora.

Odpowiedz

20

Działa to dość dobrze:

imap ^L <Esc>[s1z=`]a 

[s przenosi do ostatniej pomyłkę
1z= wybiera pierwsza sugestia
`] Przejście do ostatniego punktu wstawiania
a tekst Dołącz

+0

W jaki sposób wywoływane jest to odwzorowanie? Próbowałem wprowadzić '^ L' w trybie wstawiania, ale nie działa. – yegle

+0

Jakiś szczególny powód używania '^ L'? Tradycyjnie sprawdzanie pisowni jest mapowane na ''. Jednakże, 'F10' wydaje się być już w użyciu przez gVim, więc ostatecznie zdecydowałem się na typowe' '' '' '' '' '' '' '' '' '' '' '' '' '' ''. –

+0

@SergeStroobandt 'L' znajduje się w wierszu początkowym. Również macy wymagają fn + f10, aby uzyskać domyślnie f10, chociaż można to łatwo zmienić. –

8

Nie mogę zaoferować rozwiązania "optymalnego" (chociaż podejrzewam, że istnieje sposób).

Jednakże, można użyć gi aby przejść do trybu wstawiania w miejscu, w pliku, w którym po raz ostatni opuścił go. (help gi wyjaśnia to bardziej elokwentnie).

+0

Nie wiedziałem tego, dzięki! – Tim

+0

Wygląda na to, że Esc opuszcza tryb wstawiania. W związku z tym 'gi' nie pomoże w tym przypadku. – Tim

+0

Ach, przepraszam za to ... Powinienem był wypróbować to przed wysłaniem. Poniższa mapa wydaje się robić lewy (zakładając, że zawsze potrzebujesz pierwszej sugerowanej pisowni). –

2

Można użyć Ctrl + Y przyjąć element w menu podręcznym. Zobacz :help complete_CTRL-Y.

+0

Ustawiam kursor w trybie wstawiania, ale zaraz po wstawionym słowie, nie w miejscu, w którym się znajdowałem. – Tim

2

Naprawiłem to za pomocą następującego remap w moim .vimrc.

imap <F2> <Esc>mti<C-X>s<Esc>`tla 

Naciśnij F2 w trybie wstawiania, aby poprawić ostatni błąd i wrócić do trybu wstawiania, w którym byłeś. Zastępuje znacznik t.

25

poprawa do odpowiedzi PDug: Aby poprawić korekcję pisowni niezależnie od wstawek, użyj:

imap <c-l> <c-g>u<Esc>[s1z=`]a<c-g>u 

<c-g>u wstawia cofanie przerwę
Reszta jest taka sama.

W ten sposób, jeśli nie podoba ci się wybrana korekta, możesz ją cofnąć, używając <Esc>u. Bez cofnięć przerwałoby to cofnięcie kompletnego wstawienia. Zwróć uwagę, że cofnięcie rozbicia na końcu mapowania zapewnia, że ​​tekst dodany po korekcji może zostać cofnięty niezależnie od samej korekty.

Również uważam, że to wygodne do map to CTRL + F (co jest łatwe do osiągnięcia) zarówno wkładki i trybie normalnym jak ten:

imap <c-f> <c-g>u<Esc>[s1z=`]a<c-g>u 
nmap <c-f> [s1z=<c-o> 

W ten sposób można szybko napraw ostatni błąd (względem kursora).

+0

dziękuję bardzo. – tito11