Zakończenie Vima - zawsze pomijaj nowy wiersz po wybraniu sugestii za pomocą klawisza Enter

11

Czasami po wybraniu sugestii (z wyskakującego okienka, które pojawia się po naciśnięciu Ctrl-N) za pomocą klawisza Enter, Vim wstawi nową linię, a kursor zostanie przeniesiony do następnej linii. Nie zawsze tak się dzieje - wydaje się, że Vim stara się być mądry i przeniesie mnie do następnej linii, jeśli uzna, że ​​tego właśnie chciałbym.

Chcę jednak wyłączyć to zachowanie (ponieważ nie zawsze jest inteligentne), aby zawsze musiałem sam przejść do następnego wiersza, ręcznie naciskając klawisz Enter. czy to możliwe?


źródło

Odpowiedzi:

14

To, co robi Vim w odpowiedzi na wpisanie klawisza <Enter> podczas korzystania z funkcji uzupełniania, zależy od stanu menu uzupełniania. Zachowanie menu opisano tutaj:

:help ins-completion-menu

a zachowanie różnych kluczy podczas korzystania z uzupełniania wstawek opisano w następnej sekcji,

:help popupmenu-keys

gdzie wyjaśnia, że ​​zachowanie klawisza <Enter> zależy od stanu menu. Jak rozumiem, wpisanie <Enter> wstawia nowy wiersz, z wyjątkiem przypadku, gdy wybrałeś dopasowanie z menu za pomocą klawiszy kursora.

Najlepszym sposobem uniknięcia wstawiania nowej linii, gdy nie chcesz, jest zakończenie lub dokonanie wyboru za pomocą innego klawisza, takiego jak Ctrl-Y lub Ctrl-E.

Zobacz też

:help complete_CTRL-Y

i dla całego opisu w przypadku zakończenia trybu wstawiania,

:help ins-completion
garyjohn
źródło
4

Możesz dodać to mapowanie do pliku .vimrc:

inoremap <expr> <CR> pumvisible() ? "\<C-Y>" : "\<CR>"

Mapuje klawisz powrotu w trybie wstawiania na CTRL-Y, gdy menu podręczne jest widoczne. CTRL-Y wybiera aktualnie wybrany element z menu bez wchodzenia w nowy wiersz. W przeciwnym razie klawisz powrotu będzie działał normalnie.

Jake
źródło
1
Czy możesz wyjaśnić, co robi ten kod i jak rozwiązuje problem zgłoszony przez PO? Niewyjaśniony kod może wydawać się niezaufany i niebezpieczny dla użytkowników.
bwDraco
0

Dodałem to do .vimrc i teraz działa tak, jak chcę:

noremap pumvisible ()? „\”: „”

martins
źródło