모달 편집에 사용할 수있는 패키지는 무엇입니까?


13

Emacs에서 모달 편집에 사용할 수있는 패키지는 무엇입니까? 무엇을 사용하고 왜?

답변 당 하나의 패키지를 게시 해 봅시다. 나는 모든 패키지의 장점과 단점을 언급 할 것을 제안한다.


다음은 모달 편집에 대한 정의입니다 (전용 Wikipeadia 기사를 찾을 수 없음).

모달 편집 — 키를 사용하여 문자를 삽입하지 않고 텍스트에 대해 다양한 작업을 수행하고 키가 해당 문자를 삽입하면 "삽입 모드"를 수행하는 경우 사용자가 일반적으로 "일반 모드"로 전환하는 텍스트 편집 스타일입니다. 물론 더 많은 모드가있을 수 있습니다. 대부분의 현대 편집자들은 모달이 아닙니다. 모달 텍스트 편집기의 예는 Vi (Vim)입니다.


"모달 편집"이란 무엇입니까?
Lindydancer

@Lindydancer, 나는 그 개념을 질문에 설명하려는 시도를 추가했습니다.
Mark Karpov

답변:


13

evil상기 E xtensible VI L의 이맥스 용 아이어

의심 할 여지 evil가있는 이름 은, vimEmacs (그리고 그 밖의 다른 곳)에서 에뮬레이션 할 때의 최신 기술 입니다. 다른 Vim 에뮬레이션 패키지가 피하는 다음과 같은 많은 기능을 지원합니다.

  • vim 텍스트 객체
  • vim 레지스터
  • vim 키보드 매크로
  • ex 명령

장점

  • 와 키 호환성 vim수단 이맥스가없는 시스템으로 전환 할 때 당신은 당신의 근육 기억을 잃게하지 않습니다.
  • 매우 성숙하고 널리 사용됨 (예 : 많은 커뮤니티 패키지)
    • 에 대한 많은 패키지 vim가로 포팅되었습니다 evil.
  • vim 스타일 문법은 모듈 식이며 사용자 확장에 매우 적합합니다.
  • evil 텍스트 객체, 연산자 및 모션을 직접 만드십시오!

단점

  • 다른 패키지와 잘 어울리려면 약간의 조정이 필요할 것입니다.
    • 다행히 evil가장 일반적인 사용 사례를 엄청나게 쉽게 만듭니다.
  • evil매우 복잡한 시스템입니다. 사악한 핵심에 대한 해킹은 상당히 관여 할 수 있습니다.
  • vim키 바인딩이 인체 공학적으로 최적 일 필요는 없습니다. 때로는 다른 시스템으로 이식 될 때 약간 임의적 인 느낌이들 수 있습니다.
  • BitBucket (수은)에서 호스팅하여 원하는 것을 만듭니다.

나는 약어 발견 에 대한 이맥스에 대한 확장 VI 층을 나쁜 맛의 조금.
이름

@Name 내 생각이 아니라 어떻게?
PythonNut

사전에서 : evil = 심각하게 부도덕하고 악의적이며, 악마의 세력을 구현하거나 연관 시키거나, 해롭고, 매우 불쾌한, ...
Name

5
@Name 자신에게 "Name"이라는 이름을 부여한 사람으로서, 이름을 지정할 때 유머를 사용하는 것에 대해 감사하게 생각합니다. :-) Evil의 경우 아이러니합니다 ( en.wikipedia.org/wiki/Irony#Definitions 참조 ). 나는 그것이 Emacs 패키지에 주어진 최고의 이름 중 하나라고 생각하고 그것을 이점으로 나열 할 것입니다!
tarsius

@PythonNut Bitbucket을 사용하는 것이 Mercurial을 사용하는 것보다 문제 (실제로는 전혀 문제가 없음)라고 생각합니다.
tarsius

11

표준 Emacs 키 바인딩을 사용하지만 수정자를 누르고있을 필요 가없는 god-mode( https://github.com/chrisdone/god-mode ) 가 있습니다 . god-mode가 활성화 된 경우 C-...바인딩에는 수정자가 필요하지 않으며 바인딩은 수정 자 M-...대신 접두사를 사용합니다.

github 페이지의 예 :

이전 : Cp Ck Cn M- ^) Cj Cy Mr Cx zz M-2 Mg Mg Cx Cs

이후 : pkng ^) jygr. . 2 ggxs


1
답이 아닌 링크로 연결하십시오.
Mark Karpov

@ 스테판 (Stefan)-나는 당신의 대답을 조금 넓힐 자유를 얻었습니다. 원하는대로 변경하십시오.
glucas

glucas : 감사합니다! @ 마크 : 신 모드에 대해 더 알지 못하면 대답을 쉽게 확장 할 수 없었습니다. 나는 glucas와 같은 누군가가 빈칸을 채울 것이라는 희망으로 그것을 게시했습니다.
Stefan

6

@Mark를 격려해 주셔서 감사합니다.

Xah 플라이 키

인체 공학적 모드에 대한 수년간의 경험을 바탕으로 가장 효율적인 시스템을 목표로 emacs를 위해 처음부터 설계되었습니다. 주요 선택 사항은 주요 빈도 및 주요 프레스 점수에 대한 통계를 기반으로 가능한 한 과학을 기반으로합니다. 가장 자주 사용되는 명령은 가장 누르기 쉬운 키에 매핑됩니다. 그룹화 및 키 바인딩 bigram과 같은 다른 문제도 매주 3 년간의 실험에서 고려됩니다.

흥미로운 포인트 :

  • 모든 Cx 명령은 2 ~ 3 개의 단일 키 순서로 수행됩니다. xah-fly-keys에서 Cx는 필요하지 않습니다. M-도 필요하지 않습니다.
  • Ctrl 또는 Meta를 바인딩하지 않기 때문에 GNU emacs의 키와 충돌하지 않습니다 (C-7, C-8 제외). 삽입 모드에서 xah-fly-keys를 켤 수 있으며 일반적인 방식으로 GNU Emacs를 사용할 수 있습니다.
  • 어떤 명령 세트가 최대 편집 효율을 가져 오는지도 고려했습니다. 따라서 패키지는 ~ 80 개의 사용자 정의 편집 명령을 사용합니다. (예를 들어, copy는 선택이없는 경우 현재 행을 복사합니다. GNU Emacs의 ~ 6 개의 상위 / 하위 / 지역 / 비 영역 대신에 대소 문자를 전환하는 단일 명령 하나)
  • 구현은 가능한 한 간단합니다. 매크로, 조언, 키의 복잡한 리 맵핑, 몇 가지 후크 만 사용됩니다. (좋거나 나쁘거나?!)

단점 :

  • vi를 처음 배우는 것처럼 입양하려면 한 달이 필요합니다.
  • 잘 알려져 있지 않습니다. 이번 달에 공개적으로 사용하기 위해 릴리스되었습니다.
  • 현재 Dvorak 레이아웃 만 지원합니다.
  • 학습을위한 편리한 키 다이어그램은 없습니다 (아직).
  • 주요 모드의 경우 여전히 Cc를 사용해야합니다. (이 문제를 해결하기 위해 god-mode 또는 hydra와 같은 다른 패키지를 사용할 수 있습니다.)

나는 저자이기 때문에 무의식적으로 편향 될 수 있다는 경고를받습니다. 의견을 말하거나 정정하십시오.


다른 키보드 레이아웃을 지원할 가능성이 있습니까? ErgoEmacs는 알고 있습니다. 시도해 볼 수도 있지만 Dvorak으로 전환하는 막대가 너무 높아서 캐주얼 실험을 할 수 없습니다.
PythonNut

@PythonNut 예, 최우선입니다. 나는 일주일에 희망합니다. 가장 중요한 것은 어떻게 구현하고 싶은지 보여주는 것입니다.
Xah Lee

아 매우 시원합니다. 나는 나올 때 소용돌이를 줄 것이다.
PythonNut

6

Modalka는 모달 편집 블록에 새로운 아이가 있어야합니다. github 프로젝트는 모두 10 일 된 것으로 보입니다. 의견을 평가하거나 평가할 충분한 사용 시간이 없지만 다음과 같이 설명합니다.

Emacs에서 모달 편집으로 전환하는 데 도움이되는 조립 키트입니다. 패키지의 주요 목표는 Emacs에서 가능한 한 자연스럽고 기본적으로 모달 편집을하는 것입니다. 해킹, 코너 케이스, 에뮬레이션이 없습니다. 원하는 방식으로 편집을 시작하십시오.

문서는 비교 대조 기타 공통 모달 솔루션으로 Modalka을 evil, god-mode, boon


4

혜택

Boon은 모달 편집을위한 덜 알려진 패키지 중 하나입니다. Vi (또는 Vim)를 에뮬레이트하지 않지만 Colemak 키보드 레이아웃에 최적화 된 원본 레이아웃을 제공합니다.

장점과 디자인 원칙

  • 공간 할당 우선, 니모닉 두 번째 : 명령에 대한 키 할당은 키보드의 키 위치에 우선 순위를두고 있습니다. 키 캡에 인쇄 된 내용은 2 차적인 문제입니다.

  • 손쉬운 손가락 롤 : 일반적인 조합은 왼쪽 / 오른손 교대 또는 손쉬운 한 손 롤이어야합니다.

  • 가장 많이 사용되는 명령에 홈 행과 강한 손가락 사용

  • 쉬운 탐색 : 많은 명령이 탐색에 바인딩됩니다. 이것은 이동을 용이하게합니다. 움직임은 영역 정의로 두 배가되므로 조작 명령 (오퍼레이터)이 더욱 강력 해집니다.

단점

  • 편집 프리미티브 콜렉션과 키보드에서의 배치는 매우 독창적이므로 편집기와 상호 작용하는 방법을 다시 학습해야합니다.

1
Boon이 키의 내용을 실제로 신경 쓰지 않지만 키가 Colemak이되도록 강요하는 것은 조금 이상하게 들립니다. 레이아웃에 구애받지 않는 것처럼 들립니다.
PythonNut

@PythonNut, 사람들은 어떻게 든 키를 참조해야한다고 생각합니다 :-) 다른 레이아웃에서 작동하도록하는 것이 전적으로 가능하다고 생각합니다.
Mark Karpov

Boon은 현재 QWERTY 및 QWERTZ를 지원합니다 ( github.com/jyp/boon#installation 참조) . 나는 그것을 반영하기 위해 대답을 업데이트했다.
raju-bitter

3

Ergoemacs는 모달 편집도 지원합니다. vi를 에뮬레이트하지 않지만 가장 자주 사용되는 명령에 Alt 키를 사용합니다. 예를 들어, 커서를 이동하여 (그것이 QWERTY Alt 키 플러스 오른손 반전 T.이다 Alt+ jleft, Alt+ l, 권리 Alt+ i위해 upAlt+ k에 대해 down). 문자 또는 단어를 삭제하는 것은 Alt왼쪽 홈 키로 이루어집니다. 키 선택은 명령 빈도와 누르기 쉬운 키 위치를 기반으로합니다.

  • 모달 편집을 시작하려면 사용자가을 누를 수 있습니다 f6.
    • 한 번 f6누르면 가장 자주 사용되는 키는 더 이상 대체 키 조합이 필요하지 않습니다.
    • 따라서 QWERTY에서 jis left, jis right, iis upand kdown)입니다.
  • 모달 명령 모드를 누르면 종료됩니다 return, f6또는 escape.

전통적인 패러다임 모달 외에도 임의 있도록 준 모달 패러다임 존재 C-x또는 C-c키 조합 (신 모드와 같은) 임의의 개질제를 사용하지 않고 도달한다.

  • 준 모달은 QWERTY으로 시작 apps f을위한 C-c제어 키를 누름과와 QWERTY apps d에 대한 C-x.
  • 이 키 시퀀스를 완료하는 동안 apps키는 눌려진 것으로 간주되는 수정 자의 유형을 변경합니다.
  • 명령이 호출되면 ergoemacs는 편집 모드를 다시 시작합니다.
  • 임의의 키 시퀀스 동안 누르고있는 키 유형을 변경할 수도 있습니다. 이것은 단순히 apps키를 다시 누르는 것 입니다.

ergoemacs-mode를 사용하면 명령 키를 변경하는 것 외에도 키를 입력하는 동안 키 시퀀스에 대한 사항을 변경할 수 있습니다.

  • 키 시퀀스 중간에을 눌러 접두사 인수를 편집 할 수 있습니다 f2.
  • 를 누르면 backspace마지막으로 누른 키가 다시 나타납니다.
  • Apps 키 시퀀스 중에 누른 키를 변경할 수 있습니다.

ergoemacs-mode는 모드가 기본 키에 대해 수행하는 모든 작업을 존중하려고 시도합니다. 예를 들어, org-mode가에 대한 특수 키를 정의하면 next-lineergoemacs는 org-mode에있을 때 Alt+ 에이 명령을 사용 k합니다.

장점 :

  • ELPA에있는 GNU Emacs의 일부.
  • 기본적으로 "범용"Windows / Linux 키를 지원합니다. 예 : 열기 ( C-o), 닫기 ( C-w), 모두 선택 ( C-a), 복사 ( C-c), 잘라 내기 ( C-x), 붙여 넣기 ( C-v) 등
  • 상당히 인기가 있습니다.
  • Qwerty, dvorak, colemak, bepo 및 기타 국제 레이아웃을 포함한 많은 레이아웃을 지원합니다.
  • 테마를 설명하여 키보드 레이아웃의 이미지를 emacs로 표시합니다.
  • 테마를 작성하여 확장 시스템을 통해 키를 사용자 정의 할 수 있습니다.
  • 아직 문서화되지 않은 임의의 모달 키맵을 설정할 수 있습니다.

단점 :

  • 시작시 안정적입니다.
    • 불안정한 마스터에서 첫 번째 시작은 느립니다 (최소 설정의 경우 ~ 5 초), (내 시작의 경우 ~ 20 초)
    • 두 번째 초 시작이 훨씬 빠릅니다 (복잡한 설정의 경우 ~ 4 초입니다).
    • ergoemacs 모드가 emacs의 모든 활성 키맵을 변경하고 캐싱하기 때문입니다. 두 번째 시작시이 설정이 저장됩니다.
  • 복잡한 코드.

https://github.com/ergoemacs/ergoemacs-mode를 참조 하십시오


2

다른 반 모달 옵션은 Hydra입니다.

https://github.com/abo-abo/hydra

웹 사이트에 따르면

구성에서 Cc j 및 Cc k를 바인딩했다고 가정하십시오. 일부 (임의의) 순서로 Cc j 및 Cc k를 호출하려고합니다. Hydra를 사용하면 다음을 수행 할 수 있습니다.

  • Cc jjkk3j5k를 누르는 것이 Cc j Cc j Cc k Cc k M-3 Cc j M-5 Cc k를 누르는 것과 같은 방식으로 함수를 바인드하십시오. j 또는 k 이외의 키는이 상태를 종료합니다.

  • 이 기능 그룹에 사용자 정의 힌트를 지정하면 Cc를 누른 직후 j 또는 k로 후속 조치를 취할 수 있습니다.

나는 그것을 사용하지 않았지만 흥미있는 것 같습니다.

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