다른 vim 구현의 차이점은 무엇입니까?


25

Emacs의 여러 vim 구현에 대해 알고 있습니다. 사악한 모드, 독사, vimpulse 및 vim 모드가 있습니다. 다른 사람이 있습니까? 그들은 어떻게 비교합니까?

evil-*MELPA 에는 많은 패키지가 있으며, 그 중 어느 것도 100 % 기능이 완료되지 않았 음을 나타냅니다. 어떤 vim 기능을 제공하며 어떤 vim 기능이 누락 되었습니까?

(저는 "대부분 의 Emacs 구현 인 vi 매크로 세트 " 라는 반대의 주제에 관심이 없습니다 .)


1
나열된 모드의 목표가 Emacs 위에 전체 편집기를 구현하지 않고 원하는 동작을 제공하기 때문에 "에뮬레이션"이 더 정확하고 혼란스럽지 않을 수 있습니다.
wasamasa '10

답변:


35

vi, vipviper(생성 날짜 순서)에 내장 된 온 이맥스와 그 에뮬레이션 VI의 모든. vim-mode실제로 Vim을 에뮬레이트하려는 새로운 독립형 노력 vimpulse이며 viper, 가장 유용한 Vim 기능을 제공하기위한 추가 기능입니다. evil의 대체품으로 생성되었습니다 vim-mode.

evil가장 최근의 프로젝트이며 활발하게 개발 된 유일한 프로젝트입니다. 목표는 기존 Emacs 기능을 최대한 활용하여 Vim의 편집 모델을 충실하게 모방하는 것입니다. 개인적으로 나는 약 90 % 완료되었다고 말하고 싶습니다.와 같은 몇 가지 새로운 명령 (예 :) gn이 누락되어 일부 표시 관련 기능이 재생성하기가 어렵고 (파일 종료 후 물결 표시 표시와 같이) 구현하기가 어렵습니다. Vimscript 인터프리터 또는 Ex 모드의 기본을 벗어난 것. 그러나 evil-*확장 기능은 원본보다 확장 및 검사가 더 쉽습니다. 확장 기능은 거의 모든 경우에 Vim 플러그인과 동일한 Emacs입니다 ( evil-leader예 : Emacs 키맵 지원을 고려할 필요가 없기 때문에 예외).

evil점에서 Vim을 능가 한다는 점을 고려하면 ( :s시각적 미리보기 또는 유용한 새로운 모드 포즈를 만드는 노력이 거의 없음 ) Emacs의 모달 편집에 관심이있는 모든 사람들에게 진심으로 추천합니다.


g/Vim에서 새로운 명령이라고 언급했습니다 . 나는 그것을 본 적이 없으며 그것에 대한 문서를 찾을 수 없습니다. Vim에서 무엇을합니까?
Ivan

죄송합니다 gn. 검색 결과를 텍스트 개체로 바꿉니다. 또한 지금까지 구현되었습니다.
wasamasa

아, 알겠습니다 Vim에서 꽤 많이 사용하면서 구현 된 것을 듣고 기쁩니다.
Ivan

9

evil내 지식에 유일하게 적극적으로 개발 된 vim 에뮬레이션 모드 이기 때문에 대답을 악의적으로 만들 것입니다. evil매우 유용하고 vim과 비슷한 경험에 매우 가깝지만, 디자인에 의해 구현되지 않았거나 불완전하지만 결국 추가 될 수있는 vim 기능이 있습니다. 추가 되지 않을 가능성 높은 몇 가지 예 :

  1. vimscript 인터프리터가 없으며 내 지식으로는이를 구현할 계획이 없습니다.
  2. Emacs 키 바인딩에서 너무 중요 하므로 증가 및 감소 숫자 ( C-aC-x)는 추가되지 않습니다 C-x.
  3. 리더 키의 기본 개념은 없습니다. 대신 기본적으로 \바인딩됩니다 evil-execute-in-emacs-state.
  4. C-uEmacs 키 바인딩으로 너무 중요하기 때문에 기본적으로 스크롤 업으로 바인딩되지 않습니다 (이를 덮어 쓸 수는 있음 evil-want-C-u-scroll).

아직 구현되지 않은 vim 기능 목록을 찾으려면 (이 답변을 작성할 당시 기준) 이슈 트래커 가 가장 좋습니다 . 목록에있는 것의 무작위 샘플링 :

  1. 파일을 추가하면 ex구현되지 않습니다 .
  2. 일부 모션 명령은 vim처럼 동작하지 않습니다 .
  3. :make에 매핑되지 않았습니다M-x compile .
  4. C-oin insert모드는 vim 에서처럼 동작하지 않습니다 .
  5. 스왑 창 버퍼가 구현되지 않았습니다 .

공개 이슈 목록에없는 명령 (특히 복잡한 ex명령)을 포함하여 더 많은 것이 있지만 목록에서 볼 수 있듯이 vim 기능은 상당히 작거나 모호한 경향이 있습니다 (vim은 100 % 기능 패리티 달성).


emacs는 lisp를 사용하기 때문입니다. 불가능은 없습니다. 예를 들어, 리더 키가 내장되어 있지 않지만 플러그인 이블 리더를 설치할 수 있습니다.
chen bin

물론 @chenbin, 나는 기본적으로 내장되어 있고 기본적으로 악을 가진 것들을 언급하고있었습니다.
shosti

3

악의 목표는 Vim을 흉내내는 것이며 Viper의 목표는 Vi를 흉내내는 것입니다. Vim-mode와 Vimpulse는 Evil의 전신이며 더 이상 개발되지 않은 지식입니다. 이 프로젝트의 단점을 해결하기 위해 이블 프로젝트가 시작되었습니다.

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