web-dev-qa-db-ja.com

GNU Emacsで行ごとにスクロールするには?

簡単に言うと、vimや他のほとんどのエディターのようなemacsでスクロールしようとしています。たとえば、私が下/上から2行、下/上(Ctrl-pn、 )画面の半分ではなく、上下に1行だけ移動します。

82
Rook

画面を正確に配置する場合は、Ctrl-Lを使用できます。

  • デフォルトでは、現在の行を画面の中央に配置します。

  • ESC 0 Ctrl-Lは、現在の行を一番上に配置します。

47
starblue

EmacsWIkiに関するいくつかの提案を参照してください。

(setq scroll-step 1 
 scroll-conservatively 10000)
47
ars

私はパーティーに少し遅れていますが、パッケージのインストールを気にしない場合は、smooth-scrollinggithub =、 [〜#〜] melpa [〜#〜] )でもお探しの場合があります。

インストールしたら、init.elに以下をポップできます。

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

最後の行はオプションです。スクロールを開始しますnear画面の端ではなく、端にあるため、常にポイントの周りに小さなコンテキストがあります。好みに合わせて調整してください。

37

私の解決策は、Emacのデフォルトのスクロールを変更するのではなく、マクロからキーシーケンスコマンドを作成することです。このようにして、必要なときに一度に1行ずつスクロールする便利な方法があります。理想的ではありませんが、非常に簡単です。 M ↓)とM-(↑)が利用できるのはたまたまあるので、それを使用しました。

これは私がやった方法です。最初に、上下に1行スクロールするマクロを記録する必要があります。

マクロを開始

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)

次に、どのコマンドをバインドするかを尋ねられますので、以前に作成した名前(たとえば、1行下)を指定する必要があります。

ここにこの情報があります。また、マクロを.emacsファイルに追加する手順については、以下および他の場所をご覧ください。

---(ここ マクロ定義の説明

ここ スクロールの制御方法

26
Josh Cason

2000年から.emacsファイルでこれらを使用しています。

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

このようにして、Emacsのデフォルトの動作を維持し、何をしているのかに応じて、一度に1行ずつスクロールできます。

これは少なくともGNU Emacs 22.まで動作しました。最近Emacs 24にアップグレードし、View-scroll-line-forwardView-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は実際に1行スクロールしますdown。これはbufferが1行上に移動されるためです。

22
Rajesh J Advani

矢印キーを再バインドして、スクロール操作を実行します。

(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)))
13
Derek Slager

シンプルにこれを行います:

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

次に、メタカーソルを上に移動し、メタカーソルを下に移動します。

QED。上記のすべての人が喫煙していたかわからない!

11
Adam

.emacsファイルに次のものがあり、ニースctrl-up、ctrl-downスクロール動作を有効にします。マウスホイールにもこれを使用します。

(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)
5
Alex B

M-x customize-variable scroll-conservatively

1に設定します。

しかし、あなたは本当にこれをしたくありません。

2
jrockway

を使用するのは面倒な場合があるため M-up、 M-down これらのコマンドをオーバーロードする組織モードに干渉するためです。この問題を回避するために、私は個人的にこれらのコマンドを組み合わせて使用​​します M-page-upM-page-down「ここで、スクロールを上下に1行に定義しました。

;;;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))))
2
romwel

「vim」スクロールを使用して、これを.emacsファイルに追加するには:

(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)
2
jjpikoov

スクロールのような効果をすばやく作成する方法を探している場合は、C-nおよびC-lカーソルを下に移動してから中央に移動します。

.xsessionでemacsを起動すると、私の場合はscroll-conservativelyを100+に設定しても機能せず、スクロールステップ1も機能しません。ただし、Xの後にemacsを起動すると機能します。

0
seb