Jak wstawić nazwę pliku aktywnego bufora plików do polecenia?
Kiedy wywołuję polecenie, które wymaga nazwy pliku, często robię to z bufora plików i chcę nazwę tego pliku , wpisując polecenie w minibuforze.
Szukam hipotetycznej C-x…, którą mogę wpisać podczas tworzenia linii poleceń w minibuforze.
Jeśli więc bieżący bufor jest plikiem o nazwie Lorem Ipsum.txt
, wpisuję to:
M-x grep RET 'foo' SPC C-x … RET
że M-xgrepRETprezentuje minibufora skłoniło do grep
komendy. W odpowiedzi wpisałem argument wzorca wyrażenia regularnego ( 'foo') i wstawiłem argument nazwy pliku ( C-x…). Ten minibufor skończy jako:
grep -nH -e 'foo' 'Lorem Ipsum.txt'
Jakie istniejące polecenie pobiera nazwę bieżącego bufora plików? Jakie jest domyślne przypisanie klucza?
files
minibuffer
duży nos
źródło
źródło
M-n
. Nie wszędzie działa, ale działa w wielu miejscach. Ponadto, ponieważ grepujesz, możesz polubić lgrep i rgrep, które, jak sądzę, są bardziej interaktywne.Odpowiedzi:
Niestety nie ma gotowego polecenia do tego, ale możemy je wykonać w następujący sposób:
Magia polega na funkcji okna wybranego przez minibufor ; robi to dobrze, wybierając ostatni bufor przed aktywacją minibufora. W przeciwnym razie użycie tylko nazwy pliku-bufora nie spowoduje przeniesienia nazwy pliku do minibufora. Co ciekawe, tej samej funkcji można użyć w zwykłym buforze lub minibuforze do wstawienia nazwy pliku. Nie jest wymagane specjalne leczenie.
Nie ma żadnego, ale możesz wybrać wygodny i przypisać go w następujący sposób:
Umieść powyższe wiersze kodu lisp w pliku init.el.
Działa to w najbardziej trywialnych przypadkach, ale trudno przewidzieć, jakie konflikty może mieć z jakimikolwiek trybami aktywnymi podczas wywoływania tej funkcji.
Co jeśli bufor nie odwiedza prawidłowej nazwy pliku, takiej jak bufor scratch? Następnie ten błąd jest wyświetlany w obszarze echa:
Wybranie prawidłowego bufora z poprawną nazwą pliku przed wywołaniem skrótu pozwoli uniknąć takich błędów.
Istnieje kilka innych rozwiązań, takich jak powyższe, ale różnią się one głównie sposobem obsługi wyjątków lub zastąpień wszelkich konfliktów. Na przykład niektórzy stosują przechwyty trybu, aby ta funkcja była dostępna tylko w niektórych trybach.
źródło
enable-recursive-minibuffers
.(define-key minibuffer-local-map (kbd "C-c f") 'name-of-the-file)'. In addition to this useful function I also created the function
nazwy-C-c b
bufora można użyć następującego powiązania, z którym się połączyłem i wstawia bieżącą nazwę bufora.Podczas korzystania
dired-x
ze skrótu klawiaturowegoC-x C-j
jest powiązanydired-jump
. Tak więc z bufora plików kończysz na właściwej linii i możesz skopiować jego nazwę za pomocąw
. Następnie możesz wkleić go do mini bufora.Inną możliwością łagodnego wpisywania nazwy pliku jest standardowe uzupełnianie pliku mini bufora Emacsa. Wystarczy wpisać pierwsze znaki nazwy pliku, a następnie TAB.
źródło
w
(poleceniadired-copy-filename-as-kill
).Pytanie wymaga istniejącej komendy Emacsa, aby to zrobić.
Jak stwierdziłem wcześniej:
co okazuje się odpowiedzią na to pytanie.
źródło