2012-07-05 2 views
0

여기 이맥스 n00b는 그래픽 모드에서 약간 훑어 보았으며 지금까지는 훌륭하다고 생각했습니다. 나는 터미널 버전을 시험해보고 싶었고 몇 가지 성가신 행동 차이, 특히 교대 선택이 있다는 것을 알았다.그래픽과 콘솔 사이에서 다른 선택 동작 이멕스 (23)

그래픽 모드에서는 화살표 키, 컨트롤 키 (전체 단어 선택) 또는 원점 또는 끝 키 (전체/큰 부분 선택)와 함께 시프트 선택 라인의).

키 모드에서 키는 올바르게 작동합니다 (화살표 키 *로 이동하고 누른 채로 영역을 선택할 수 있음, C- 왼쪽/오른쪽으로 전체 단어, 원점을 점프하고 끝낼 수 있음).) 나는 그들을 결합 할 수 없다. (시프트와 C- 화살을 지우거나 시프트 - 엔드 또는 시프트 - 원점을 가진 라인의 나머지 부분을 선택함으로써 전체 단어를 선택할 수 없다).

또한 해결책을 찾은 후 M- 백 스페이스에 대해 읽었을 때 창 모드에서 콘솔에서 C-backspace가 작동하지 않음 (즉, 전체 단어를 지우지 않음)을 발견했습니다.

필자는 철저히 조사했지만 터미널 버전이 그래픽 버전처럼 작동하는 방법을 찾지 못했습니다 ... 많은 사람들이 이맥스의 시프트 선택에 대해 질문하는 것 같지만 어느 누구도 꽤 똑같은 문제가 없습니다 ... 누군가가 그 행동 차이가 어디에서 왔는지 설명 할 수 있습니까? 사전에

감사합니다.

* Shift 키를 누른 상태에서 화살표 키를 사용하여 전체 선을 선택하면 다시 선택 취소 할 수 없습니다 ("정의되지 않음").

[편집 /] 그래, 분명히 이것은 내 터미널에 그래픽 이맥스와 같은 바로 가기가 없다는 사실에서 비롯된다. 공정하다.

  • 이맥스 글로벌 설정 키의 내 이맥스를 작성
  • 바로 가기 기본값으로 사용하기 : 여기 솔루션의 몇 참조하십시오. 내가
     
    (fset 'select-to-end 
    [(kbd "C-<spc><end>")]) 
    (global-set-key (kbd "S-<end>") 'select-to-end) 
    
    을 시도했지만 나는 그것이 -_- 의도로하지만이 작동하지 않습니다
+0

잘못된 터미널/termcap 설정과 충돌 할 가능성이 큽니다. 어떤 OS이고'$ TERM '은 무엇입니까? –

+0

내 운영 체제는 Crunchbang Statler (데비안 기반)이며 $ TERM은 xterm입니다. 콘솔에서 Emacs를 실행하고 있기 때문에 문제는 콘솔에 텍스트로 돌아 다니기위한 동일한 바로 가기가 없다는 것입니다. 나는 처음에 움직일 수도 있음을 알았습니다. Ca/Ce가있는 행의 끝을 선택하고 Ma/Me를 사용하여 버퍼의 시작/끝 부분이 이동할 때까지 선택합니다. 이제 막 시작/끝까지 선택할 필요가 있습니다 ... 그리고 (쉬프트 유지) Ca/Ce가 작동하지 않습니다 (Cse는 터미널에서 세로로 분할되고 Csa는 아무 것도 보이지 않습니다) . – Peniblec

답변

1

짧은 대답은 "서로 다른 키를 사용하여 만족하는 경우, 즉 쉬울 수 있습니다"입니다. 개인적으로, 저는 키 바인딩과 구성에 대해 약간 신경질 적이니까요. 그래서 나는 이걸 가지고 거의 가지 않습니다. 특히 이맥스 모드가 바인딩을 무시할 때 실망 스럽습니다. (만약 당신이 아직 global-set-key이 정말로 "나의 키 바인딩에 우주 스탬프를 찍 혔다"는 것을 의미한다는 것을 발견했다면 알 수 없다.)

더 긴 대답은 "체인을 따라가는 누군가가 당신의 제어 문자 그래서 당신은 그것이 누구인지 알아 내고 고쳐주고 반복 할 필요가 있습니다. 여기서 말하는 키 바인딩 - C-S-<arrows> -이 작업을 확실히 수행 할 수 있습니다. \C-~과 같은 것을 원한다면, 을 많이 가지고 있습니다. 더 힘들어 할 것입니다. (문제는 레거시 터미널에서 일부 바인딩이 의미가 없으므로 기본적으로 비표준 컨트롤 코드 집합을 사용하여 키 조합을 전송 한 다음 각 프로그램에서 인식하도록 가르쳐야한다는 것입니다. 일반적으로 termcap이 오는 곳입니다 . 터미널과

  • 시작 :이 키 이벤트에 대한 교육 프로그램을위한 공통 언어 이후에)

    여기에 내가 일반적으로 수행하는 단계입니다.\C-v을 사용하고 리터럴 키 스트로크를 삽입하려면 (적어도 bash에서는) C- 왼쪽, S- 왼쪽 및 C-S- 왼쪽으로 시작하여 키를 누르십시오. 세 가지 제어 코드가 있는지 확인하십시오.

  • 그렇지 않은 경우에는 (1) 사용자의 readline 설정, (2) 터미널 프로그램 설정 또는 (3) termcap 설정 중 하나를 조사해야합니다. TERMxterm이므로 termcap 이어야합니다. 어떤 터미널 프로그램을 사용하고 있는지 모르지만 자체 구성이있을 수 있습니다. (예를 들어, 저는 Mac을 사용하고 iTerm2를 사용합니다. 이것은 대개 내 첫 번째 정류장입니다.) 어쨌든 터미널에서 시간을 보내려면 readline manual을 읽고 .inputrc으로 놀아야합니다. 비트.
  • 이 체인은 짧습니다. 다음은 emacs입니다. 이맥스에서 \C-q을 사용하여 bash에서 동일한 작업을 수행하거나 \C-h k을 사용하여 기본 바인딩이 무엇인지 확인할 수 있습니다. 다시 말하지만, 관심있는 조합에 대해 이맥스에서 중요한 이벤트가 있는지 확인하십시오. 그렇지 않은 경우 site-lisp 디렉토리의 term/xterm.el을보고 원하는대로 수정하면됩니다.

당신이 tmux 또는 screen를 사용하는 경우, 그들은이에 손을 얻고, 일반적으로 지배 할 수있다. 이러한 문제를 찾는 과정은 bash와 동일합니다. 여분의 키 바인딩을 얻는 방법을 알아 내기 위해 \C-vman tmux을 사용하십시오.

+0

C-v'ing 화살표, C-arrow 및 S-arrow는 다른 결과를 제공하지만 C-S-arrow는 아무 것도 제공하지 않습니다. 다른 것을 입력 할 때까지 터미널에서 응답이 없습니다 ... C-v'ing home과 C-home은 동일한 결과를 산출합니다. S-home은 반응을 일으키지 않습니다 (종료, 종료 및 S 종료). .inputrc와 Terminator (내 터미널 프로그램)에 대한 설정을 살펴 보았지만 조금만 들었지만 아무것도들을 수는 없었습니다. "C-v에서 반응이 없다"는 것이 저에게 버그입니다. 나는 그것을 보려고했지만 비슷한 문제를 찾을 수 없었다. ... 귀하의 짧은 대답을 위해 해결할 수있는 옵션을 아직 배제하지 않았습니다.> _> – Peniblec

+0

두 가지 생각 : (1) 터미네이터에 새로운 키 바인딩을 추가 할 수 있습니까? 그렇다면 cs-arrows가'\ e [1; 6_' 또는'_ [[1; 6_'가'A','B','C' 또는'D'가 적절한' . (2) xterm (터미널을 열고'xterm &'을 입력하십시오)에서 똑같은 것을 시도해보고 창 관리자가 키 입력 중 일부를 먹고 있는지 확인할 수 있습니까? –

+0

(1) 나는 그것에 대해 조사하고있다. 기존의 것들을 바꾸는 것은 쉽지만, 새로운 바인딩을 추가하는 방법에 대한 의사는 분명하지 않습니다. (2) 음, xterm은 이전 주석에서 시도한 각 조합에 대해 명확하게 다른 코드를 보여줍니다. 심지어 터미네이터에 대한 피드백도받지 못했습니다. 내 창 관리자에게 문제가 될 수 있습니까? 새로운 바인딩을 추가하는 것은 Openbox로 할 수있는 것 같습니다. 그래서 그것을 시도하고 결과를 알려 드리겠습니다. – Peniblec