当前位置:  开发笔记 > 开发工具 > 正文

如何在GNU Emacs中逐行滚动?

如何解决《如何在GNUEmacs中逐行滚动?》经验,为你挑选了8个好方法。

简单来说,我试图像在vim和大多数其他编辑器中一样滚动emacs; 当我为例子,从底部/顶部两行,我按向下/向上(Ctrl- ,p,n,)它会只有一条线向上或向下,而不是半个屏幕.



1> ars..:

查看有关EmacsWIki的一些建议:

http://www.emacswiki.org/emacs/SmoothScrolling

(setq scroll-step            1
      scroll-conservatively  10000)


看到它,实际上 - 答案,你的和jrockway的,但在Wiki上都没有推荐.不幸的是,没有明确解释其原因.这就是我发布这个问题的原因,希望有人找到一种无缺陷的方法.

2> starblue..:

如果要准确定位屏幕,可以使用Ctrl-L.

默认情况下,它将当前行定位在屏幕中间.

ESC 0 Ctrl-L将当前行定位在顶部.


不要误解,但是这与逐行滚动有什么关系?(即问题)
提供另一种工作流程(在作者看来),使用手头工具更自然是合理的.但是你应该在其前面加上一个免责声明,并解释为什么这种方法如果可能的话"更好".

3> Stuart Hicki..:

我有点迟到了,但是如果你不介意安装一个软件包那么平滑滚动(github,也可以在MELPA中找到)可能就是你想要的 - 它肯定对我有用.

安装完成后,可以在init.el中弹出以下内容:

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

最后一行是可选的; 它开始在屏幕边缘附近而不是在屏幕边缘滚动,所以你总是在这个点附近有一点背景.调整味道.


当我读到这篇文章时,我崩溃了.很确定这是问题的答案.
是的,作为尝试Emacs的Vim用户,这正是我想要的.

4> 小智..:

我的解决方案不是改变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文件的说明.

这里是宏定义解释

这里是如何控制滚动



5> Rajesh J Adv..:

.emacs自2000年以来,我一直在使用这些文件.

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

这样,我可以保持Emacs的默认行为,也可以一次滚动一行,具体取决于我正在做什么.

这至少工作到GNU Emacs 22.我最近升级到Emacs 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实际上向下滚动一行,因为缓冲区正在向上移动一行.



6> Derek Slager..:

我重新绑定我的箭头键来执行滚动操作.

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


这不是我想要的.我不希望屏幕滚动(因为它想启用滚动锁定),但屏幕"移动"...哦,...只是记事本怎么做:)

7> 小智..:

简单做到这一点:

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

然后元光标向上移动,元光标向下移动.

QED.不确定以上所有人都吸烟了!



8> Alex B..:

我的.emacs文件中包含以下内容,以实现良好的ctrl向上,ctrl向下滚动行为。我也将其用于鼠标滚轮。

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

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有