developer tip

GNU Emacs에서 한 줄씩 스크롤하는 방법은 무엇입니까?

copycodes 2020. 9. 23. 07:45
반응형

GNU Emacs에서 한 줄씩 스크롤하는 방법은 무엇입니까?


간단히 말해서, vim 및 대부분의 다른 편집기에서와 같이 emacs에서 스크롤링을 시도하고 있습니다. (I 예를 들어있을 때, 하단 / 상단에서 두 줄, 및 I / 최대 눌러 Ctrl- p, n, , )는 한 줄 위 또는 아래가 아닌 반 화면 이동합니다.


EmacsWIki에 대한 몇 가지 제안을 참조하십시오.

(setq 스크롤 1 단계
      스크롤-보수적으로 10000)

화면을 정확히 배치하려면 Ctrl-L을 사용할 수 있습니다.

  • 기본적으로 화면 중앙에 현재 행을 배치합니다.

  • ESC 0 Ctrl-L은 현재 행을 맨 위에 배치합니다.


나는 파티에 조금 늦었지만 패키지 설치에 신경 쓰지 않는다면 부드러운 스크롤 ( github , MELPA 에서도 사용 가능 )이 당신이 찾고있는 것일 수 있습니다. 확실히 저에게 효과적입니다.

설치가 완료되면 init.el에 다음을 표시 할 수 있습니다.

(require 'smooth-scrolling)
(smooth-scrolling-mode 1)
(setq smooth-scroll-margin 5)

마지막 줄은 선택 사항입니다. 화면 가장자리가 아니라 화면 가장자리 근처 에서 스크롤되기 시작 하므로 항상 지점 주변에 약간의 컨텍스트가 있습니다. 취향에 맞게 조정하십시오.


내 해결책은 Emac의 기본 스크롤링을 변경하는 것이 아니라 매크로에서 키 시퀀스 명령을 만드는 것입니다. 이렇게하면 원할 때 한 번에 한 줄씩 편리하게 스크롤 할 수 있습니다. 이상적이지는 않지만 매우 쉽습니다. M- (↓)와 M- (↑)를 사용할 수있는 경우가 있습니다. 그래서 제가 사용했습니다.

이것이 내가 한 방법입니다. 첫째, 위아래로 한 줄 스크롤에 대한 매크로를 기록해야합니다.

매크로 시작

C-x ( 

하나 아래로 스크롤

C-u 1 C-v

매크로 중지

C-x )

위로 스크롤하려면

C-u 1 M-v

다음으로 매크로 이름을 지정해야합니다.

M-x name-last-kbd-macro

다음과 같은 메시지가 나타나면 이름을 지정하십시오.

down-one-line

그런 다음 다음을 사용하여 키 시퀀스를 해당 명령 이름에 바인딩합니다.

M-x global-set-key

그리고 메시지가 표시되면 다음과 같이 사용하십시오.

M-(down arrow)

그런 다음 바인딩 할 명령을 묻고 이전에 발명 한 이름 (예 : 한 줄 아래로)을 지정해야합니다.

여기에이 정보가 있습니다. 아래 및 다른 곳에서 .emacs 파일에 매크로를 추가하는 방법에 대한 지침을 찾을 수도 있습니다.

매크로 정의 설명은 여기

스크롤을 제어하는 ​​방법은 여기


저는 .emacs2000 년부터 파일 에서 이것을 사용하고 있습니다.

(global-set-key (quote [M-down]) (quote View-scroll-line-forward))
(global-set-key (quote [M-up]) (quote View-scroll-line-backward)) 

이렇게하면 Emacs 기본 동작을 유지할 수있을뿐만 아니라 수행중인 작업에 따라 한 번에 한 줄씩 스크롤 할 수 있습니다.

적어도 GNU 이맥스 (22) 내가 최근에 이맥스 24로 업그레이드 것을 발견되지 때까지이 일을 View-scroll-line-forward하고 View-scroll-line-backward더 이상 사용할 수 있습니다. 사냥을 한 후 스크롤 업 라인과 스크롤 다운 라인이 작동한다는 것을 발견했습니다. 따라서 Emacs 24를 사용하고 있다면 이것을 사용할 수 있습니다.

(global-set-key (quote [M-down]) (quote scroll-up-line))
(global-set-key (quote [M-up]) (quote scroll-down-line)) 

나는 대부분 Emacs 23을 건너 뛰었으므로 사용중인 버전이라면 위의 두 가지를 모두 실험 할 수 있습니다.

참고 : 버퍼 가 한 줄 위로 이동 하기 때문에 scroll-up-line실제로는 한 줄 아래로 스크롤 합니다.


스크롤 작업을 수행하기 위해 화살표 키를 리 바인드했습니다.

(global-set-key [up] (lambda () (interactive) (scroll-down 1)))
(global-set-key [down] (lambda () (interactive) (scroll-up 1)))

(global-set-key [left] (lambda () (interactive) (scroll-right tab-width t)))
(global-set-key [right] (lambda () (interactive) (scroll-left tab-width t)))

Simples는 다음을 수행합니다.

(global-set-key [M-up] (lambda () (interactive) (scroll-up 1)))
(global-set-key [M-down] (lambda () (interactive) (scroll-down 1)))

그러면 메타 커서가 위로 이동하고 메타 커서가 아래로 이동합니다.

QED. 위의 모든 사람들이 무엇을 흡연했는지 확실하지 않습니다!


I have the following in my .emacs file to enable a nice ctrl-up, ctrl-down scrolling behavior. I also use this for the mousewheel.

(defun scroll-down-in-place (n)
  (interactive "p")
  (previous-line n)
  (scroll-down n))

(defun scroll-up-in-place (n)
  (interactive "p")
  (next-line n)
  (scroll-up n))

(global-set-key [mouse-4] 'scroll-down-in-place)
(global-set-key [mouse-5] 'scroll-up-in-place)
(global-set-key [C-up] 'scroll-down-in-place)
(global-set-key [C-down] 'scroll-up-in-place)

To have the "vim" scrolling put this to your .emacs file:

(defun next-line-and-recenter () (interactive) (next-line) (recenter))
(defun previous-line-and-recenter () (interactive) (previous-line) (recenter))
(global-set-key (kbd "C-n") 'next-line-and-recenter)
(global-set-key (kbd "C-p") 'previous-line-and-recenter)

Since it can be annoying to use the M-up, M-down because it interferes with the org-mode which overloads these commands. To avoid this issue I personally use those commands which combine M-page-up M-page-down". Here I defined the scroll up and down to 1 line.

;;;scroll by `number-of-lines' without the cursor attached to the screen
(global-set-key [M-prior] (lambda () (interactive) (let ((number-of-lines 1))
                                                  (scroll-down number-of-lines)
                                                  (forward-line (- number-of-lines)))))
(global-set-key [M-next] (lambda () (interactive) (let ((number-of-lines 1))
                                                  (scroll-up number-of-lines)
                                                  (forward-line number-of-lines))))

;;;scroll by `number-of-lines' with the cursor attached to the screen
(global-set-key [S-M-prior] (lambda () (interactive) (let ((number-of-lines 1))
                                                  (scroll-down number-of-lines))))
(global-set-key [S-M-next] (lambda () (interactive) (let ((number-of-lines 1))
                                                  (scroll-up number-of-lines))))

M-x customize-variable scroll-conservatively

Set it to 1.

You don't really want to do this, though.


If you are looking for a quick way to create a scroll-like effect, enter in C-n and C-l sequentially which moves the cursor down and then centers it.


If you start emacs in .xsession, in my case setting scroll-conservatively to 100+ will not work, nor scroll-step 1. But if u start emacs after X, it works.

참고URL : https://stackoverflow.com/questions/1128927/how-to-scroll-line-by-line-in-gnu-emacs

반응형