如何在Emacs中的“居中光标模式”中更改光标的位置?

时间:2012-02-10 01:16:03

标签: emacs elisp

我在Emacs中使用centered-cursor-mode,我非常喜欢它。但是,一直困扰我的是,光标的位置设置得低于中心,我实际上更喜欢它高于中心。

每隔几个月我就会生气,试图对此采取行动,但到目前为止我还没有成功。我的印象是答案是改变这一点的数字

(defcustom ccm-vpos-init '(round (window-text-height) 2)
  "This is the screen line position where the cursor initially stays."
  :group 'centered-cursor
  :tag "Vertical cursor position"
  :type '(choice (const :tag "Center" (round (window-text-height) 2))
                 (const :tag "Golden ratio" (round (* 21 (window-text-height)) 34)) 
                 (integer :tag "Lines from top" :value 10)))
(make-variable-buffer-local 'ccm-vpos-init)

但它似乎不是。

有人知道如何在“centered-cursor-mode.el”中更改光标的居中位置吗?

1 个答案:

答案 0 :(得分:2)

您可以使用 M-C - + M-C - 调整当前缓冲区中的行位置。 prefix参数指定要移动光标的行数,例如如果你想让光标高两行,你可以输入:

C-u 2 C-M - +

对于更持久的解决方案,您还可以根据您的问题建议自定义“垂直光标位置”(也称为ccm-vpos-init)的条目。通过 M-x customize-group RET centered-cursor RET 访问该条目,您将找到三个基本选项:

  • 居中(默认)
  • 黄金比例
  • 顶部的行

恕我直言第三个选项只有在你总是使用完全相同的窗口大小时才有意义(所以水平分割窗口会有问题)而第二个点可能是你的选择吗?

但是,您可以非常轻松地在ccm-vpos-init的定义中添加第四个选项,以便将光标准确定位在您想要的位置,例如:

(defcustom ccm-vpos-init '(round (window-text-height) 2)
  "This is the screen line position where the cursor initially stays."
  :group 'centered-cursor
  :tag "Vertical cursor position"
  :type '(choice (const :tag "Center" (round (window-text-height) 2))
                 (const :tag "Golden ratio" (round (* 21 (window-text-height)) 34))
                 (integer :tag "Lines from top" :value 10)
                 (const :tag "2 Lines above center" (- (round (window-text-height) 2) 2))))

下次启动Emacs时,第四个选项将出现在上述“垂直光标位置”条目中。