Jak mogę sprawić, aby okno wyboru sprawdzania pisowni pozwoliło mi wpisać własną poprawkę?

14

Podczas sprawdzania pisowni kluczowanie z=wyświetla listę wyboru, jak pokazano poniżej.

wybierz poprawny

Jak widać poprawną pisownię; „ie” nie jest wyświetlane jako żadna z opcji. Chciałbym ulepszyć to menu, aby zamiast tego można było po prostu wpisać „ie” i nacisnąć klawisz Enter i wymienić.

Byłoby również miło, gdyby w ramach tego samego kroku mógłbym zacząć wpisywać nazwę jednej z prezentowanych opcji i tabulatora konkurować z tym - mój umysł lepiej działa na zastępowaniu słów przez wprowadzanie słów niż przez wprowadzanie liczb.

Podejrzewam, że należy to zrobić za pomocą wtyczki, ale nie jestem pewien, czy nie jest to tylko opcja konfiguracji.

Lyndon White
źródło

Odpowiedzi:

5

Patrzenie na tę spell_suggest()funkcję w spell.ctym przypadku nie wydaje się możliwe z=. Po uzyskaniu i wyświetleniu wszystkich możliwych sugestii:

/* Ask for choice. */
selected = prompt_for_number(&mouse_used);

prompt_for_number()żyje misc1.ci robi dokładnie to, czego można oczekiwać: monituje o numer (patrz także get_number()w tym samym pliku). Mapowania lub inne dane wejściowe są niedozwolone.


Drugą opcją jest użycie „ukończenia” zaklęcia Vima przez Ctrl x+ slub Ctrl x+ Ctrl s1 w trybie wstawiania. Robi to mniej więcej to, czego chcesz. Możesz wybierać spośród uzupełnień za pomocą klawiszy strzałek Ctrl ni Ctrl plub, lub wpisać własne ulepszenie.

Możesz użyć wtyczki supertab, aby zrobić to z Tabkluczem. :help ins-completionma również CleverTab()funkcję, którą można do tego dostosować.

Aby uzyskać więcej informacji, patrz: :help ins-completion, :help i_CTRL-X_s


Wreszcie, Vim ma spellsuggest()funkcję, która zwraca listę sugestii pisowni:

:echo spellsuggest('hellz')
['hells', 'hello', 'hell', 'help', 'halls', 'heals', 'heels', 'hills', 'hulls', 'hell''s',
 'hellos', 'hell’s', 'held', 'helm', 'tell', 'well', 'bells', 'cells', 'dells', 'fells',
 'helot', 'helve', 'hertz', 'hilly', 'holly']

Możesz użyć tej funkcji do zbudowania własnego ekranu sugestii zaklęć.


Notatka

1 : Pamiętaj, że używanie Ctrl smoże nie działać, jak wspominają dokumenty:

UWAGA: CTRL-S zawiesza wyświetlanie w wielu terminalach uniksowych. Zamiast tego użyj „s”. Wpisz CTRL-Q, aby wznowić wyświetlanie.

Jeśli używasz gVim, używanie Ctrl spowinno działać. Lub możesz to wyłączyć w swoim terminalu za pomocą stty -ixon.

Martin Tournoij
źródło
3

Zamierzam rozwinąć / skonsolidować @ quincy-bowers odpowiedź:

  1. Nie możesz wprowadzić własnych sugestii z ekranu sugestii pisowni.
  2. W VIM nie ma sensu wprowadzanie własnych sugestii z ekranu sugestii pisowni.

VIM to edytor tekstu. Ponieważ to, co robi najlepiej, pozostawia edycję dla siebie. Innymi słowy, aby zmienić błędnie napisane słowo na własną sugestię, wystarczy nacisnąć, enteraby zamknąć listę sugestii, a następnie ręcznie zmienić słowo na poprawną pisownię. ( ciwdziała idealnie do tego).

Następnie (jak sugeruje @ quincy-bowers), jeśli chcesz, aby niestandardowa poprawna pisownia pojawiła się w kolejnych listach sugestii, wpisz zgkursor na słowie i zostanie on dodany do słownika pisowni ( :help zgszczegółowe informacje).

Jednak po powiedzeniu tego wszystkiego nie powstrzymało to sprytnych ludzi, którzy używają VIM, od znalezienia alternatyw (nieograniczonych sposobów na skórowanie kota), dzięki czemu można wypróbować alternatywną wtyczkę, na przykład sugeruj pisownię .

Sukima
źródło
Opisanie bieżącego przepływu pracy jest bardziej komentarzem niż odpowiedzią. Chociaż dobrze to tłumaczysz.
Lyndon White,
1
@Oxinabox może szukasz czegoś więcej na linii: vim.org/scripts/script.php?script_id=4929 może?
Sukima,
Tak, bardziej przypomina to, czego szukam.
Lyndon White
2

Bez dodawania żadnych wtyczek możesz dodać znane dobre słowo do pliku pisowni. Zamiast z=przywoływać sugestie pisowni, wizualnie wybierz tekst, który chcesz dodać do pliku pisowni i naciśnij zg.

Powinienem również zauważyć, że w oknie sugestii pisowni możesz użyć myszy, aby wybrać tę, o ile chcesz, dopóki mysz jest włączona w trybie NORMALNYM. Na przykład set mouse=austawiłem w .vimrc, który włącza mysz we wszystkich trybach, niezależnie od tego, czy jestem w Vimie, czy w gVimie.

Nie sądzę, że inne rzeczy, których chcesz, można osiągnąć bez wtyczki lub zmiany samego Vima.

Quincy Bowers
źródło
1
To są wszystkie przydatne wskazówki, ale nie widzę, jak odpowiadają na pytanie?
Martin Tournoij
@Carpetsmoker Mógłbym powiedzieć to samo o twojej własnej odpowiedzi. Powiedziałem mu, że to niemożliwe, i zaproponowałem zmianę przepływu pracy jako możliwą obejście. Tak jak ty.
Quincy Bowers
1
@MartinTournoij Ta odpowiedź faktycznie rozwiązuje problem: musi zawierać nowe słowo > zg wykonuje takie włączenie .
nilon