Moje pliki mają długie nazwy plików, a część nazwy pliku to data i numer wersji. Często chciałbym zapisać plik w buforze pod prawie taką samą nazwą, wystarczy zmienić numer wersji lub datę.
Byłoby to o wiele łatwiejsze, gdybym miał polecenie, które umieszcza nazwę bieżącego bufora w pierścieniu zabijania, dzięki czemu mogę otworzyć plik, a następnie wpisać C-x C-w
(zapisać plik), podciągnąć bieżącą nazwę za pomocą Cy, zmienić ją i zapisać to.
Używam Emacsa 24.3 w systemie Windows i 24.4 w systemie Linux. Muszę używać różnych nazw plików i nie używać git z różnych powodów. Byłbym szczęśliwy, gdyby to polecenie działało z AUCTeX / LaTeX jako głównym trybem.
Edycja 1:
Popełniłem błąd: nie chcę pisać C-x C-f
(= znaleźć plik), ale C-x C-w
(= pisać plik). Poprawiłem to powyżej.
Edycja 2:
Znaleziono duplikat pytania i odpowiedzi: /unix//a/45381 Ale nie ma lepszej odpowiedzi!
Edycja 3:
Tutaj: http://www.gnu.org/software/emacs/manual/html_node/elisp/File-Name-Components.html to funkcja, która wybiera „nienazwaną” część nazwy pliku:
Funkcja: nazwa-pliku-niekatalogowy plik
This function returns the nondirectory part of filename. (file-name-nondirectory "lewis/foo") ⇒ "foo" (file-name-nondirectory "foo") ⇒ "foo" (file-name-nondirectory "lewis/") ⇒ ""
Gdybym tylko znał seplenienie ...
Odpowiedzi:
Nie trzeba tego wszystkiego robić.
Po prostu:
C-x C-w
. Zostaniesz poproszony o podanie nowej nazwy pliku.M-n
, a obecna nazwa pliku zostanie wstawiona dla Ciebie.RET
aby zapisać plik pod tą nową nazwą.Nadal będziesz mieć oryginalny plik. Jeśli chcesz wrócić do niego, po prostu odwiedź go ponownie za pomocą
C-x C-f
.źródło
ido
, zróbC-f
najpierw, a potemM-n
.Kopiowanie nazwy pliku w bieżącym buforze
Oto funkcja, której używam z bloga Camerona Desautelsa, która kopiuje nazwę bieżącego pliku bufora i wyświetla go w minibuforze.
Zmiana nazwy pliku w bieżącym buforze
Magnar Sveen zaimplementował poniższą funkcję na jednym ze swoich blogów, która wygodnie zmienia nazwę bieżącego bufora za jednym razem. Nie o to prosiłeś, ale pomyślałem, że może to być związane z twoim przypadkiem użycia.
źródło
(buffer-file-name)
na(file-name-nondirectory (buffer-file-name))
w pierwszej funkcji, aby uzyskać katalog sans z nazwą pliku.