Vim 완성-Enter 키로 제안을 선택한 후 항상 줄 바꿈을 억제하십시오.


11

때로는 Enter 키를 사용하여 제안을 선택하면 (Ctrl-N을 눌렀을 때 나타나는 완료 팝업에서) Vim이 줄 바꿈을 삽입하고 커서가 다음 줄로 이동합니다. 항상 그런 것은 아닙니다. Vim이 그것에 대해 현명 해 지려고 생각하고 이것이 내가 원하는 것이라고 생각하면 다음 줄로 나아갈 것입니다.

그러나이 동작을 비활성화하려면 (항상 똑똑하지 않기 때문에) Enter 키를 수동으로 눌러 항상 다음 줄로 이동해야합니다. 이것이 가능한가?

답변:


14

삽입 완료를 사용하는 동안 <Enter> 키를 입력하면 Vim이 수행하는 작업은 완료 메뉴의 상태에 따라 다릅니다. 메뉴의 동작은 다음과 같습니다.

:help ins-completion-menu

삽입 완료 사용시 다양한 키의 동작은 다음 섹션에서 설명합니다.

:help popupmenu-keys

여기서 <Enter> 키의 동작은 메뉴 상태에 따라 다릅니다. 이해할 수 있듯이 <Enter>를 입력하면 커서 키를 사용하여 메뉴에서 일치 항목을 선택한 경우를 제외하고 줄 바꿈이 삽입됩니다.

원하지 않는 경우 개행을 삽입하지 않는 가장 좋은 방법은 Ctrl-Y 또는 Ctrl-E와 같은 다른 키를 사용하여 종료하거나 선택하는 것입니다.

또한보십시오

:help complete_CTRL-Y

삽입 모드가 완료되면 전체 설명에 대해

:help ins-completion

4

이 매핑을 .vimrc 파일에 추가 할 수 있습니다.

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

팝업 메뉴가 표시되면 삽입 모드의 리턴 키를 CTRL-Y 입력에 맵핑합니다. CTRL-Y는 새로운 줄을 입력하지 않고 메뉴에서 현재 선택된 항목을 선택합니다. 그렇지 않으면 리턴 키가 정상적으로 작동합니다.


1
이 코드의 기능과 OP가 제공 한 문제를 어떻게 해결하는지 설명 할 수 있습니까? 설명 할 수없는 코드는 신뢰할 수없고 사용자에게 위험 할 수 있습니다.
bwDraco

0

나는 이것을 .vimrc에 추가했으며 이제는 내가 원하는대로 동작합니다.

noremap pumvisible ()? "\": ""

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.