Atur lebar kolom di `ibuffer`

16

Apakah ada cara untuk menyesuaikan lebar kolom ibuffer? Secara khusus, saya ingin memperluas kolom Nama agar dapat membaca lebih banyak nama buffer sebelum terpotong. Saya sudah mencoba Buffer-menu-name-width, tetapi tampaknya Buffer-menuvariabel tersebut tidak digunakan oleh ibuffer. Saya juga sudah mencoba M-x customize-group RET ibuffer RETtetapi sepertinya tidak ada yang relevan.

nispio
sumber

Jawaban:

17

Sebagai jawaban @ Sigma menyebutkan, Anda perlu menyesuaikan ibuffer-formats. Docstring memberikan banyak detail tentang cara memodifikasinya dengan tangan, dan juga mencatat bahwa Anda dapat menggunakan customizemesin untuk mengotak-atiknya. Jika Anda lebih suka pendekatan elisp, Anda dapat menyesuaikan pengaturan default sesuai selera Anda, dengan angka setelah namekomponen daftar mengacu pada lebar minimum dan maksimum kolom. Jadi, mengubah kolom yang dibentang bidang nama dari default 18 hingga 30 dapat dicapai dengan:

;; 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)))
Dan
sumber
Sepertinya bahkan ketika Anda menggunakan customizeantarmuka Anda masih berakhir menulis (atau memodifikasi) bentuk elisp untuk melakukan penyesuaian.
nispio
5

Anda dapat menyesuaikan ibuffer-formats, yang memungkinkan Anda untuk menentukan antara lain lebar kolom. Ini juga memungkinkan Anda untuk menentukan beberapa format, yang nyaman untuk hal-hal yang Anda tidak ingin selalu ditampilkan.

Sigma
sumber
2

Jika yang Anda pedulikan adalah melihat seluruh kolom nama penyangga, secara khusus, Anda dapat melakukannya tanpa "menyesuaikan" apa pun, dengan menggunakan ibuffer-switch-format, terikat ke `dalam ibuffer.

Fungsi beralih di antara alternatif yang ditentukan oleh ibuffer-formats. Secara default ibuffer-formatsmemiliki dua opsi:

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

dimana yang kedua tidak membatasi lebar kolom nama.

Dalam kasus umum, customizediperlukan, sebagaimana ditentukan dalam jawaban oleh Sigma dan Dan .

aplaice
sumber