在`ibuffer`中设置列宽


16

有没有一种方法可以自定义列的宽度ibuffer?具体来说,我想扩大Name列,以便能够在截断缓冲区名称之前读取更多缓冲区名称。我试过了Buffer-menu-name-width,但是似乎Buffer-menu变量没有被使用ibuffer。我也尝试过,M-x customize-group RET ibuffer RET但似乎没有任何意义。

Answers:


17

正如@Sigma的答案所提到的,您需要自定义ibuffer-formats。该文档字符串提供了有关如何手动修改它的许多详细信息,并且还指出您可以使用该customize机制进行修改。如果您更喜欢elisp方法,则可以根据您的喜好调整默认设置,name列表部分后面的数字表示列的最小和最大宽度。因此,可以通过以下方法将名称字段的列从默认值18更改为30:

;; nearly all of this is the default layout
(setq ibuffer-formats 
      '((mark modified read-only " "
              (name 30 30 :left :elide) ; change: 30s were originally 18s
              " "
              (size 9 -1 :right)
              " "
              (mode 16 16 :left :elide)
              " " filename-and-process)
        (mark " "
              (name 16 -1)
              " " filename)))

看起来,即使当您使用该customize界面时,您仍然最终会编写(或修改)elisp表单进行自定义。
nispio 2014年

5

您可以自定义ibuffer-formats,它可以定义列的宽度。它还允许您定义几种格式,这对于不想一直显示的内容很方便。


2

特别是,如果您关心的是看到整个buffer-name列,则可以通过ibuffer-switch-format绑定到`内而不必“自定义”任何内容ibuffer

该功能在所指定的备选方案之间切换ibuffer-formats。默认情况下ibuffer-formats有两个选项:

((mark modified read-only locked " "
       (name 18 18 :left :elide)
       " "
       (size 9 -1 :right)
       " "
       (mode 16 16 :left :elide)
       " " filename-and-process)
 (mark " "
       (name 16 -1)
       " " filename))

其中第二个不限制名称列的宽度。

在一般情况下,customizeSigmaDan的答案所指定的那样,这是必需的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.