gtk-key-theme Emacs : 전체 선택을위한 키 입력은 무엇입니까?


22

나는 emacs 키 스트로크를 선호하지만 select-all은 emacs 어휘 또는 적어도 emacs에 대한 gtk-key-theme의 일부가 아닌 것 같습니다. 선택한 지역을 복사하는 데 Mw가 작동하지 않습니다.

  1. select-all의 키 입력은 무엇입니까?
  2. 이 주제에 대한 주요 바인딩 맵은 어디에 있습니까?

고마워, 스티브

답변:


22

이다 GTK에서 "모두 선택"바인딩 단순한는 :C-/

그것은 일반적인 GtkTextView 신호 로 정의되며 특별히 emacs 키 테마의 일부가 아닙니다. 그러나 그것은 잘 작동합니다. 의 대안으로 정의되어 C-a있습니다. 후자는 emacs 테마로 재 해석되지만 C-/"모두 선택"에 유효합니다.


좋은 대답입니다. 왜 아직 투표가 없었습니까?
Rörd

7

직접 수행 할 수있는 바로 가기는 없습니다.

당신과 텍스트의 끝으로 이동 할 수 있습니다 Ctrl- e그리고 줄을 제거 Ctrl- u. 그러나 이는 GtkEntry한 줄 입력 필드 에서만 작동 합니다.

당신이 모든 것을 선택해야하는 경우 GtkTextView, 멀티 라인 편집기와 같은 제어, 당신은 부담 할 남아 있습니다 Ctrl- Home다음에 Ctrl+ Shift- End, 거의 불가능하다 내 63 키 키보드와 함께하는.

경우, 효율성 또는 모바일 장치의 키보드의 한계를 편집하는 좋은 이유 HomeEnd손이 닿지 않는 곳에있다, 당신은에 의해 얻을 수있을 것이다. "선택 - 모든"에서 "편집"메뉴가, 나쁜 생각 선택이 매핑 때문에 Alt- e- a파이어 폭스에서, Alt- e- t의 gedit에서, Alt- e- s오픈 오피스 (심지어 그놈 통합)에서, 각 소프트웨어에서 다른 키를 일부 소프트웨어에, 더는 "선택 - 모든"편집 메뉴에서, 크롬과 같은 어떤 소프트웨어도 편집 메뉴 자체가없는 존재하지조차 함께 호출 할 수있는 하나의 숨겨진 Alt-e노틸러스처럼. 이 불일치는 Alt 활성화 메뉴 표시 줄의 목적을 능가하며 Windows가 아닌 다른 운영 체제도 일관성이 없습니다. 오른쪽 클릭 메뉴에도 "모두 선택"에 대한 고정 바로 가기가 없습니다. 일반적으로 응용 프로그램마다 a다를 수 있습니다 t. 각 개별 소프트웨어에서 버그 수정을 요구하는 것은 그놈과 같은 메타 프로젝트로만 수행 할 수 있지만 그놈 자체가 이러한 문제 중 일부를 생성한다는 것을 알고 있습니다 ( '노틸러스'의 편집 메뉴 제거는 그놈 3 결정 임). 당신은 많은 희망.

참고로, Ctrl- Home는 모든 텍스트의 시작 부분으로 이동하는 유일한 지름길이며 작은 키보드 모바일 장치의 키 입력 작업을 방해 할 수도 있습니다.

대답은 여기서 끝납니다. 궁금한 점이 있으면 추가 정보가 있습니다.


노련한 이맥스 사용자가 시도 할 것 Ctrl- x- h: 정통 참으로 이맥스,하지만 컨트롤 키 시퀀스는 gtk3의 이맥스 모드로 이해된다. 실제로, 소수의 이맥스 단축키 만 정의되어 있습니다 /usr/share/themes/Emacs/gtk-3.0/gtk-keys.css. 지원되는 모든 emacs 단축키를 적을 수있는 충분한 공간이 스티커에 있습니다.

상황을 더욱 악화시키기 위해이 목적으로 바로 가기 키를 재배치하기가 어렵습니다. 아시다시피 Ctrl- a이맥스에 의해 수행된다. 그러나 Ctrl-로 모든 것을 선택하는 데 사용되는 영어를 사용하지 않는 가장 큰 그룹 (중국어는 표의 문자를 사용하지 않기 때문에 제외)의 Hispanophones조차도 emacs가 사용 e하는 키보드 단축키를 찾을 수 있습니다. 을 제외 e하고 QWERTY 키보드의 왼쪽 절반에는 이미 잘 수용된 목적이없는 다른 키가 없습니다. Google 번역은 SHIFT 키를 단독으로 누르면 '전체 선택'으로 사용되지만 다른 소프트웨어 나 다른 Google 제품은이 설정을 따릅니다.

줄을 비우려면 Ctrl-를 사용하십시오 u. 이것은 X SELECTION (중간 마우스 버튼으로 잡아 당기는 것)을 덮어 쓰지 않는 이점이 있습니다. 이것은 gtk3의 emacs 모드의 유일한 설정이다 : 실제 emacs에서는 자체적으로 아무것도하지 않는다; 작성한 Readline (bash는, MySQL의 등)에 그것의 카운터 파트하면서, 라인의 태초 커서에서 삭제 모든 것을 가정한다 Ctrl- k라인의 끝으로 커서에서 모든 것을 삭제합니다.

일부는 키보드를 사용하여 임의의 선택을 위해 어딘가에 표시를 남길 것을 제안 할 수 있습니다. 당신도 찾을 수는 Ctrl- SPACE텍스트의 앵커를 설정하도록 구성 이맥스 모드에 있습니다. 많은 다른 소프트웨어 (특히 표의 문자 입력 방법 및 일부 다른 편집기 소프트웨어의 자동 완성)와 충돌하더라도 설정 한 앵커를 사용하기위한 단축키는 없습니다.


Ubuntu는 공식적으로 emacs 편집 모드를 지원하지 않으며 UI로 수행 할 수없는 다른 UI 구성도 없습니다. 이러한 요구에 대한 버그 보고서는 우선 순위가 낮습니다. 이런 이유로 나는 수퍼 유저와 같은 리눅스의 일반적인 장소에 그런 질문을하는 것이 가장 좋다고 생각한다.


2

emacs 바인딩은 /usr/share/themes/Emacs/gtk-2.0-key/gtkrc에 지정되어 있습니다. ~ / .config / gtk-3.0 / gtk.css에 바인딩을 추가 할 수도 있습니다.

모두 다음과 같이 선택하십시오.

bind "<ctrl>h" { "move-cursor" (buffer-ends, -1, 0)
                 "move-cursor" (buffer-ends,  1, 1) };

그래도 Cx h에 바인딩하는 방법을 찾지 못했습니다.


2

기존 키 바인딩보기

GTK3 응용 프로그램의 경우 Emacs GTK 키 테마의 바인딩을 로컬에서 /usr/share/themes/Emacs/gtk-3.0/gtk-keys.css또는 아마도 ) 또는 GitHub 의 GTK git 저장소에서 볼 수 있습니다 (디트로이트가 수정했을 수 있으므로 로컬 파일과 반드시 ​​같을 필요는 없음) .

이 파일을 읽는 동안 위젯의 의미를 알고 있어야합니다.

(링크 된 각 사이트의 상단에있는 이미지를보십시오.)

모두 선택을위한 키 바인딩 추가

select-all대한 GtkTreeViewGtkTextView

내용 GtkTreeViewGtkTextView위젯라는 신호가있다 select-all. 1선택 해제하지 않고 모두 선택하도록 인수를 전달해야합니다 .

따라서 다음 ~/.config/gtk-3.0/gtk.css과 같이 편집 하고 추가하십시오.

@binding-set my-text-and-tree-view-bindings
{
    bind "<alt>a"
    {
    "select-all" (1)
    };
}

textview {
  -gtk-key-bindings: my-text-and-tree-view-bindings;
}

treeview {
  -gtk-key-bindings: my-text-and-tree-view-bindings;
}

GtkEntry

의 경우 GtkEntry에는이없는 select-all신호. 대신 move-cursor텍스트를 표시하는 두 개의 신호 시퀀스를 사용할 수 있습니다 .

다시 한 번 다음 ~/.config/gtk-3.0/gtk.css과 같이 편집 하고 추가하십시오.

@binding-set my-entry-bindings
{
    bind "<alt>a"
    {
    "move-cursor" (paragraph-ends, -1, 0)
    "move-cursor" (paragraph-ends,  1, 1)
    };
}

entry {
  -gtk-key-bindings: my-entry-bindings;
}

Firefox

그런데, 파이어 폭스에서 Alt- a(이맥스 GTK 키 테마를 사용) 구성하지 않고 기본적으로 모든 나를위한 선택.


1

지역의 모든 텍스트를 선택하려면 간단한 매크로를 정의하는 것이 좋습니다. 매크로 작성을 시작하려면 F3 을 누르 십시오 . 그런 다음 입력

Esc - <          // goes to beginning of document
Ctrl - spacebar  // set mark
Esc - >          // selects all till end of document

그런 다음 M -w 를 복사 (원격 유닉스 시스템에서 로컬 Windows로 복사하기 위해 일반적으로 수행)에 사용하고 F4 를 눌러 매크로 정의를 완료합니다.

이제 매크로 정의가 완료 되었습니다. 액션을 반복하고 싶을 때 F4 를 누르 십시오 .


GTK Emacs 주요 테마는 Emacs 자체와 다릅니다. 당신의 대답에있어서 핵심적인 바인딩은 거의 없습니다. (그리고 실제로 Emacs 자체에 있다면 , 매크로 대신 Cx h 를 사용할 수 있습니다 .
Rörd

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