답변:
사용중인 팝업 메뉴 상태에 따라 다릅니다 (참조 :help popupmenu-completion
). 귀하의 질문에서 귀하가 상태 2에 있다는 것을 이해합니다 (완료를 찾기 위해 화살표 키를 눌렀으므로). 그러나 Enter상태 2 의 기본 동작은 줄 바꿈없이 완료를 삽입하는 것입니다. 설명하는 것은 일반적으로 상태 1의 동작입니다 ( Ctrl+ N/ Ctrl+ 를 사용할 때 P입니다).
모든 주에서 일관되게 작동하는 방법은 Ctrl+ 를 사용하는 것 Y입니다. 나는 Y가 "그렇습니다, 그 말을 받아들이십시오"라는 의미로 기억하고 싶습니다. geedoubleya의 답변에서와 같이 항목을 다시 매핑하지 않은 한 완성 된 단어 뒤에 나오는 텍스트를 입력하기 시작할 수도 있습니다.
같은 맥락에서 Ctrl+ E를 눌러 메뉴를 취소하고 텍스트를 호출하기 전과 같이 그대로 둘 수 있습니다. 다른 상황에서 Ctrl+ E와 Ctrl+ 의 페어링에 익숙한 경우 Y(예 : 일반 모드에서 위 또는 아래로 스크롤하거나 삽입 모드에서 커서의 위 또는 아래에 문자를 삽입하는) 여기에서 기억하는 한 가지 방법입니다. 메뉴 나 그와 비슷한 것을 "종료"하는 것으로 생각할 수 있습니다.
자세한 내용 :help popupmenu-keys
을 참조하십시오 .
개인적으로 나는 이것을 사용합니다 :
inoremap <expr> <TAB> pumvisible() ? "\<C-y>" : "\<CR>"
inoremap <expr> <Esc> pumvisible() ? "\<C-e>" : "\<Esc>"
inoremap <expr> <C-j> pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <C-k> pumvisible() ? "\<C-p>" : "\<Up>"
CtrlP 플러그인 을 사용하는 사람이라면 누구나이 매핑이 편리 할 것입니다.
화살표 키를 사용하는 대신 j
& k
키를 사용하여 자동 완성 목록을 스크롤 할 수 있습니다 .
이렇게하면 스크롤 할 때 선택한 단어와 일치하도록 현재 줄이 변경됩니다.
따라서 대체 단어의 끝에서 커서가 여전히 삽입 모드에 있으므로 Enter를 누를 필요가 없습니다.
이것을 활성화하려면 이것을 .vimrc에 추가하십시오 (스택 오버 플로우에서 다른 사람들에게 감사합니다).
inoremap <expr> j ((pumvisible())?("\<C-n>"):("j"))
inoremap <expr> k ((pumvisible())?("\<C-p>"):("k"))
별도로 화살표 키를 사용하는 대신 Ctrl-n
옵션을 통해 저주하는 옵션을 반복하고 ( Ctrl-p
뒤로 이동) 현재 줄을 움직일 때 필요 Enter
하거나 vim 키 매핑이 필요하지 않습니다 .