File saya memiliki nama file yang panjang dan bagian dari nama file adalah tanggal dan nomor versi. Seringkali saya ingin menyimpan file di buffer menggunakan nama yang hampir sama, cukup ganti nomor versi atau tanggal.
Ini akan jauh lebih mudah, jika saya memiliki perintah yang memasukkan nama file dari buffer saat ini ke dalam kill ring, sehingga saya dapat membuka file, lalu ketik C-x C-w
(tulis file), tarik nama saat ini dengan Cy, ubah dan simpan Itu.
Saya menggunakan Emacs 24.3 di Windows dan 24.4 di Linux. Saya harus menggunakan nama file yang berbeda dan tidak git karena berbagai alasan. Saya akan senang jika perintah ini bekerja dengan AUCTeX / LaTeX sebagai mode utama.
Edit 1:
Saya membuat kesalahan: Saya tidak ingin mengetik C-x C-f
(= mencari file), tetapi C-x C-w
(= menulis file). Saya memperbaiki ini di atas.
Edit 2:
Menemukan pertanyaan dan jawaban duplikat: /unix//a/45381 Tapi tidak ada jawaban yang lebih baik!
Edit 3:
Di sini: http://www.gnu.org/software/emacs/manual/html_node/elisp/File-Name-Components.html adalah fungsi, yang memilih bagian "nondirectory" dari nama file:
Fungsi: nama file-nama file-non-direktori
This function returns the nondirectory part of filename. (file-name-nondirectory "lewis/foo") ⇒ "foo" (file-name-nondirectory "foo") ⇒ "foo" (file-name-nondirectory "lewis/") ⇒ ""
Kalau saja aku tahu ...
Jawaban:
Tidak perlu melakukan semua itu.
Secara sederhana:
C-x C-w
. Anda akan dimintai nama file baru.M-n
, dan nama file saat ini akan dimasukkan untuk Anda.RET
untuk menyimpan file ke nama baru ini.Anda masih memiliki file aslinya. Jika Anda ingin kembali ke sana, cukup kunjungi lagi bersama
C-x C-f
.sumber
ido
, lakukanC-f
dulu laluM-n
.Menyalin nama file di buffer saat ini
Ini adalah fungsi yang saya gunakan dari blog Cameron Desautels yang menyalin nama file buffer saat ini dan menampilkannya dalam minibuffer.
Mengganti nama nama file dalam buffer saat ini
Magnar Sveen telah mengimplementasikan fungsi di bawah ini di salah satu blognya yang dengan mudah mengubah nama buffer saat ini dalam sekali jalan. Ini bukan yang Anda minta, tapi saya pikir itu bisa terkait dengan kasus penggunaan Anda.
sumber
(buffer-file-name)
ke(file-name-nondirectory (buffer-file-name))
dalam fungsi pertama untuk mendapatkan direktori nama file sans.