【问题标题】:Centering text in emacs window在 emacs 窗口中居中文本
【发布时间】:2012-01-11 02:23:48
【问题描述】:

在一个单独的 emacs 框架中,我经常在编辑 70 列文本文件 (LaTeX) 和 120 列程序 (.h/.cpp 文件) 之间切换。我想继续只使用一个 emacs 框架,而不调整它的大小或创建额外的框架。

这就是问题所在。我的窗口宽度大约适合编辑 120 列程序,但在扩展文本编辑会话期间,窗口左侧出现 70 列。一天结束的时候,在笔记本电脑前,我的脖子似乎已经半永久性地向左倾斜了。

您是否知道一种使文本居中显示的方法,同时仍使文本文件在右侧保持锯齿状?

【问题讨论】:

  • 切换到希伯来语? (从右到左):P 听起来好像您通常在单个 window 中进行编辑 - 您是否愿意接受自动为您安排窗口的解决方案 - 一个用于编辑代码,两侧 -文本的并排(左侧为空/未使用)?
  • 在两个窗口之间切换确实很容易。在 Mac 上,切换按键甚至比 emacs 中的 C-x o 或 C-x b 业务更简单。但是审美很差。因为我只需要 emacs 而不需要其他任何东西,所以我的显示非常整洁:只有一个窗口。有两个窗口意味着较低较大的窗口中的文本将可见并且使我的视图混乱。
  • 您可以并排排列窗口,左侧有一个空的窗口占用 50 列。

标签: emacs latex


【解决方案1】:

您可以尝试通过增加边缘尺寸来缩小框架。例如:

(set-fringe-style '(200 . 200))

会在主文本区域的每一侧削减 200 像素,使工作区域变窄 400 像素,但仍居中。要返回常规视图,

(set-fringe-style 'default)

会将边缘恢复为正常大小。

您可以将其包含在一些建议中,如果您坚持只使用一个窗口,这可能对您很有效:

(defadvice switch-to-buffer (after switch-to-buffer-adjust-fringe activate)
  "depending on major mode, switch fringe style"
  (if (memq major-mode '(latex-mode))
  (set-fringe-style '(200 . 200))
(set-fringe-style 'default)))

注意:更新列表 (latex-mode) 以包含您希望拥有大边缘的任何模式。

【讨论】:

  • 太棒了,但它只有在自动化时才有用。如何在编辑 .tex 文件时触发这种情况,而不是在编辑 .txt 文件、Makefile 甚至是 dired 缓冲区时?
  • @Calaf 我更新了答案以自动化解决方案,可以对其进行自定义以适合您的 Emacs 使用。
【解决方案2】:

EmacsWiki 在shrink-wrapping frames 上有一个页面。您可以使用那里引用的库和代码来根据需要自动缩小和扩大 Emacs 框架。

【讨论】:

    【解决方案3】:
    ;; Add left and right margins, when file is markdown or text.
    (defun center-window (window) ""
      (let* ((current-extension (file-name-extension (or (buffer-file-name) "foo.unknown")))
             (max-text-width 80)
             (margin (max 0 (/ (- (window-width window) max-text-width) 2))))
        (if (and (not (string= current-extension "md"))
                 (not (string= current-extension "txt")))
            ;; Do nothing if this isn't an .md or .txt file.
            ()
          (set-window-margins window margin margin))))
    
    ;; Adjust margins of all windows.
    (defun center-windows () ""
      (walk-windows (lambda (window) (center-window window)) nil 1))
    
    ;; Listen to window changes.
    (add-hook 'window-configuration-change-hook 'center-windows)
    

    在“md”和“txt”下方添加您的文件扩展名。

    【讨论】:

    • 一个用户正在寻求帮助,使这个 sn-p 在emacs.stackexchange.com/q/4112/115 中工作,你能帮忙吗?此人无法在此处发表评论,因为他没有足够的代表来评论答案。
    猜你喜欢
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 2014-10-12
    相关资源
    最近更新 更多