Bisakah saya melihat dalam properti Emacs file yang sudah saya buka?

9

Saya telah membuka file di Emacs. Saya ingin melihat informasi tentang file itu seperti tanggal pembuatan, ukuran, dll dalam Emacs. Apakah ada pintasan kunci atau perintah Emacs untuk itu? Terima kasih.

Romario
sumber
C-x d RETakan terbuka direddi direktori file yang dikunjungi. Itu tidak akan menampilkan informasi secara khusus tentang file yang dikunjungi, tetapi semua file dalam direktori.
jrm
1
Bagaimana ?: M-x eval-expression RET (dired-other-window buffer-file-name) RET Perintah beralih untuk "ls" yang menggunakan penggunaan dirubahsuai.
hukum
Anda juga bisa memasukkannya ke dalam fungsi dan menambahkan keybinding. (defun file-info () (interactive) (dired-other-window buffer-file-name)) (global-set-key (kbd "C-c d") 'file-info)
jrm
1
Saya akan mendorong @jrm untuk mengirim jawaban yang mirip dengan komentar di atas yang mencakup variabel let-bound dired-listing-switchessehingga OP dapat menampilkan atribut file apa pun yang didukung oleh versi "ls" yang berlaku.
hukum
Terima kasih atas semua komentar dan upaya. Yang disarankan oleh jrm berhasil di luar kotak.
Romario

Jawaban:

9

Ini adalah perintah yang menggunakan diredflag file verbose untuk lsperintah tersebut. Anda mungkin ingin menyesuaikan bendera tersebut tergantung pada sistem operasi Anda.

(defun file-info ()
  (interactive)
  (let ((dired-listing-switches "-alh"))
    (dired-other-window buffer-file-name)))

Buat pengikat kunci sesuai keinginan Anda.

(global-set-key (kbd "C-c d") 'file-info)
jrm
sumber
1
Terima kasih atas semua komentar dan jawaban. Yang ini berhasil tanpa masalah. Saya sudah menyalinnya ke ~ / .emacs dan mulai bekerja.
Romario
11

Tampaknya tidak ada perintah untuk mendapatkan info ini secara interaktif, meskipun Anda dapat menggunakan dired seperti yang disarankan oleh @jrm.

Anda bisa mendapatkan informasi ini dengan kode elisp berikut:

(file-attributes (buffer-file-name))

Ini akan mengembalikan daftar seperti ini:

(nil 1 "lh" "users"
  (20614 64019 50040 152000)
  (20000 23 0 0)
  (20614 64555 902289 872000)
  122295 "-rw-rw-rw-"
  t (5888 2 . 43978)
  (15479 . 46724))

Baris pertama memberi Anda "pengguna" UID "lh" dan GID.

Tiga baris berikutnya adalah waktu akses, modifikasi, dan perubahan status terakhir, yang diformat sebagai daftar. Anda dapat mengonversinya menjadi string yang dapat dibaca manusia dengan current-time-string:

(current-time-string '(20614 64019 50040 152000))

Dalam hal ini, nilai kembali adalah "Sel 23 Okt 16:12:03 2012". Dengan itu, Anda dapat membangun fungsi Anda sendiri untuk mengekstrak bit mana saja yang Anda minati. Jika Anda hanya ingin melihat meta data di minibuffer, ini akan menampilkannya untuk Anda:

(defun file-metadata ()
  (interactive)
  (let* ((fname (buffer-file-name))
         (data (file-attributes fname))
         (access (current-time-string (nth 4 data)))
         (mod (current-time-string (nth 5 data)))
         (change (current-time-string (nth 6 data)))
         (size (nth 7 data))
         (mode (nth 8 data)))
    (message
     "%s:
  Accessed: %s
  Modified: %s
  Changed: %s
  Size: %s bytes
  Mode: %s"
     fname access mod change size mode)))

Memanggil ini secara interaktif menghasilkan:

/home/tws/org/hk.org:
  Accessed: Mon May 30 09:38:29 2016
  Modified: Thu Apr 21 11:59:06 2016
  Changed: Wed May 18 16:09:31 2016
  Size: 7508 bytes
  Mode: -rwxr-xr-x

Lebih detail dalam Atribut File manual (elisp).

Tyler
sumber
Terima kasih atas jawabannya. Tapi saya tidak tahu atau tidak bisa memasukkan kode pertama: (atribut file (buffer-file-name)) Saya kira itu harus dimasukkan di dalam minibuffer tetapi bagaimana cara beralih ke minibuffer? Saya tahu Cg harus dimatikan tetapi tidak tahu cara beralih.
Romario
Untuk menjalankan kode elisp di minibuffer, masukkan M-:. Anda akan melihat Eval: di minibuffer, dan kemudian Anda bisa mengetikkan kode. Untuk defun,, (defun file-metadata...Anda dapat mencobanya dengan menempelkannya ke buffer awal , dan dengan titik di dalam fungsi mengetik M-C-x. Maka Anda dapat memanggil fungsi dengan M-x file-metadata.
Tyler
Ops, ya itu berhasil. Hai, itu berguna. Seperti yang Anda tunjukkan, daftar atribut file dalam bentuk asli dan dengan fungsi konverter dimungkinkan untuk mengekstrak beberapa info lebih rinci tentang file tersebut. Saya akan memilih jawaban ini sebagai (sangat) membantu. Terima kasih!
Romario