2009-08-08 3 views
9

나는 연속적으로 알고 있어요 창문 센터, 상단과 하단에 매우 자주 C-l (recenter-top-bottom)emacs에서 커서를 중심으로 화면을 수평으로 배치하도록 명령 하시겠습니까?

이동 현재 라인에 사용합니다.

나는 연속적으로, 윈도우 센터에 현재 , 좌우의 경계를 이동하는 동등한 명령을하고 싶습니다. Elisp 내장 또는 스 니펫 중 하나입니다.

+0

'채널 f를 recenter' (내 버전 (GNU 22.3) 가운데로 탑이 없습니다 -bottom, 어떤 버전을 사용하고 있습니까?)이 함수는 이맥스의 핵심에 구현되어 있으므로 elisp에서 수평 동작을 얻는 것은 쉽지 않을 수 있습니다. 소스를 패치하는 것을 고려해보십시오. – dmckee

+1

우분투 이맥스 스냅 샷 패키지 버전 1 : 20090320-1ubuntu1에서 GNU 23.0.91.1을 실행 중입니다. 'recenter'와'recenter-top-bottom'의 유일한 차이점은 후자의 경우 커서를 가운데와 위아래 사이에 반복하는 것입니다. 오른쪽 테두리에 가까워지면 수평 스크롤이'Cx C- <'및'Cx C->'와 함께 존재하고 보통'Cf '와 함께 존재하므로, 우리는 모든 방법으로 가야한다고 생각하지 않습니다 이맥스 코어에게. – hsribei

+0

M - x toggle-truncate-lines –

답변

11

당신은 갈 :

(defun my-horizontal-recenter() 
    "make the point horizontally centered in the window" 
    (interactive) 
    (let ((mid (/ (window-width) 2)) 
     (line-len (save-excursion (end-of-line) (current-column))) 
     (cur (current-column))) 
    (if (< mid cur) 
     (set-window-hscroll (selected-window) 
          (- cur mid))))) 

그리고 (obvio171에서) 명백한 바인딩은 다음과 같습니다

(global-set-key (kbd "C-S-l") 'my-horizontal-recenter) 
+0

이것은 완벽합니다! C-S-l에 묶어서 매력처럼 작동합니다! 고마워요! :) – hsribei

+0

니스! (defun my-recenter() "줄 잘라 내기 모드에서 세로 및 가로 가운데" "대화 형"모드 인 경우에만이 함수를'Cl '바인딩에 통합하기 위해이 함수를 추가했습니다. (전역 설정 키 "\ Cl" 'my-recenter) (내 동등한 줄이는 경우) – fredz

3

선택한 열로 이동하여 C-x C-n을 누르면 명령 C-n 및 C-p가 C-u C-x C-n을 눌러 동작을 해제 할 때까지 해당 열로 이동합니다.

당신이 찾고있는 가난한 사람의 버전의 일종. 여기

+0

이것은 커서가있을 수있는 열만 제한하지만 텍스트는 수평으로 이동하지 않습니다. 내가 원했던 것은 커서가 화면의 중앙으로 끌려 가면서 가로 스크롤을하는 것입니다. – hsribei

+0

따라서 "가난한 사람의 버전"자격. – Pinochle

관련 문제