Emacs에서 가장 긴 알려진 키 시퀀스는 무엇입니까?


14

Qt는 Emacs 스타일의 키 바인딩을 지원 하지만 최대 4 개의 키만 지원합니다. 이 제한을 늘려야하는 이유를 밝히려면 그보다 더 많은 키를 가진 Emacs 스타일 키 바인딩의 예를 보여주는 것이 좋습니다. 이에 대한 알려진 예가 있거나 Emacs 키맵에 정의 된 긴 키 시퀀스를 프로그래밍 방식으로 찾을 수있는 방법이 있습니까?

편집 : 나는 이것이 일반적인 지식이라고 생각했지만 키 시퀀스는에서 읽은 키 집합입니다 read-key-sequence. F1 k응시자를 시험 해보고 그 명령이 명령인지 또는 관련이없는 명령인지 설명하십시오.


내가 머리 꼭대기에서 생각할 수있는 유일한 것은 Qt에는 적용되지 않는 터미널 이스케이프 시퀀스의 변환입니다. 3 개의 실제 키 이상으로 올라가는 것은 드문 일입니다.
Gilles 'SO- 악마 그만해'

질문의 문맥 / 이유 및 링크를 제공해 주셔서 감사합니다. 처음 보았을 때-나는 그것을 읽기 전에 질문이 주제를 벗어 났으며 누구에게도 도움이되지 않을 것이라고 잘못 추측했습니다.
Drew

이 질문의 문제점은 아무도 대답 할 수 없다는 것입니다. 모든 사람은 자신의 emacs 구성에 대해서만 답변 할 수 있습니다. 그것은 의견에 근거한 것이 아니라 주관적입니다.
Tobias

1
여기에는 접두사 인수가 포함됩니까? 천 줄 아래로 내려 가려면 C-u 1 0 0 0 C-n여섯 개의 키를 말할 수 있습니다 .
Stig Hemmer

1
@StigHemmer 제 마 F1 k C-u 1 0 0 0 C-n와는보고 C-u자신의 키 순서입니다.
wasamasa

답변:


23

다음 스크립트로 테스트했습니다.

(key-description
 (car
  (sort
   (let (keyseqs)
     (mapatoms
      (lambda (sym)
        (when (commandp sym)
          (let ((where (where-is-internal sym nil nil t)))
            (when where
              (setq keyseqs (append keyseqs where)))))))
     keyseqs)
   (lambda (a b) (< (length b) (length a))))))

그리고 내가 함께 얻을 가장 긴 .emacs.dIS C-x c C-x r i일부 조타 명령, 그리고있는 emacs -q나는 얻을 C-x a i l명령을 실행하는 inverse-add-mode-abbrev.


12
하아. 나에게 준다 C-x M-c M-b u t t e r f l y:) 나는 내가 한 짓을 잊어 버렸다 ...
Phils

where-is-internal여기에서 CPU 시간이 훨씬 지배적이지만을 통해 더 짧은 목록을 더 긴 목록에 추가하여 몇 사이클을 쉽게 면도 할 수 있습니다 (setq keyseqs (nconc (where-is-internal sym nil nil t) keyseqs)).
바질

1
@ phils 참조를 인식하지만 해당 명령을 정확히 수행하도록 설정 한 것은 무엇입니까?
Dan 님이 Firelight 님에 의해 Fiddling

@ DanNeely, 당신은 본 적이없는 것 같아요 M-x butterfly? 난 그냥 진정성을 높이기 위해 그 명령에
묶었 다

6

어딘가에 가장 긴 것이 무엇인지 대답 할 수는 없지만 여기에 도움이 될만한 정보가 있습니다.

  1. 접두사 키에 바인딩하는 키 맵의 키에 바인딩 된 관련 명령 세트를 제공하는 라이브러리가 있습니다.

    사용자 키 등을 공동 선택하고 싶지 않기 때문에 일반적으로 이러한 접두사 키 를 (keymap ) 아래 C-x또는 other-window명령에 바인딩 합니다 .C-x 4ctl-x-4-map

  2. 이러한 키맵의 명령 그룹에도 동일한 고려 사항이 적용됩니다. 때때로 자체 키맵을 얻습니다. 그리고 재귀 적으로.

  3. 적어도 일부 사용자는 그러한 키맵을 모든 레벨에서 자신의 짧은 접두사 키로 리 바인드하거나 특정 명령을 짧은 키 시퀀스에 바인딩하려고 할 수 있습니다. 그러나 나는 분명히 도서관 자체에서 그것을하고 싶지 않습니다.

Bookmark +의C-x 4 j t . % * 명령 icicle-bookmark-file-this-dir-all-tags-regexp-other-window에 바인딩 된 상당히 긴 키 하나 (예 : 7 키 누름) 의 예입니다 .

해부:

  • C-x 4접두사 키 ( ctl-x-4-map).

  • j에 대한 모든 명령을위한 접두사 키, 책갈피로 점프 .

  • t된다 북마크 점프에 대한 모든 명령을위한 접두사 키, 태그가 어떤 식 으로든.

  • .에서 파일입니다 즐겨 찾기에 점프에 대한 모든 명령을위한 접두사 키, 현재 디렉토리 하는 태그가 어떤 식 으로든.

  • %의 것들에 대한 있습니다 즐겨 찾기에 점프에 대한 모든 명령을위한 접두사 키, 현재 디렉토리태그 regexp와 일치 당신이하라는 메시지가 표시됩니다.

  • *의 것들에 대한 있습니다 즐겨 찾기에 점프에 대한 모든 명령을위한 키, 현재 디렉토리태그 , ALL 있는 regexp와 일치 당신이하라는 메시지가 표시됩니다. 반대로 대조적으로 일부 태그는 정규 표현식과 일치하는 C-x 4 j t . % +책갈피에 사용 됩니다.

그 모두는 기존의 북마크 +에서 (그리고 그것의 일부는 BTW, Dired 규칙에 해당) j을위한 점프 명령 t을위한 태그 , .위한 현재 디렉토리 , %위한 정규 표현식 , 그리고 *위한 모든 ( +입니다 일부 ).


(아, 그리고 mkcms의 sexp @ 사용하여, 나는 수 C-x 4 j t f % *(가). 똑같이 오래 인 f의미 파일 그것은 같아요. C-x 4 j t . % *하지만 완성을위한 후보 북마크 만이 아닌 현재 디렉토리 (에있는 파일에 대한 모든 파일 책갈피이다 .).)


0

Magit옵션을 토글 할 수 있도록 긴 시퀀스를 추가합니다. 예를 들어 로그를 요청할 때 원격 브랜치를 원하거나 원치 않는 지점을 그래픽으로 표시하려는 경우 짧거나 긴 옵션을 선택할 수 있습니다. 로그에 대한 기본 요청은 magit-status버퍼 에서 몇 번의 키 입력 이지만 더 많은 것을 추가 할 수 있습니다.

커밋, 기본 커밋을위한 두 번의 키 입력, 많은 추가 옵션이 적용됩니다.

따라서 질문이 명시되어 있습니다. 이맥을 고려하고 stock있습니까?


1
그것과는 거리가 먼 곳에서 온 예제를 받아들입니다. 설명하는 것은 일련의 키 시퀀스이며 모든 키 시퀀스는 하나의 명령을 실행합니다. 키 순서가 무엇인지 이해하려면 F1 k명령을 설명 할 때까지 키를 몇 개나 입력하고 입력 할 수 있는지 확인하십시오.
wasamasa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.