В VIM можно использовать %
, чтобы указать текущее имя файла при вызове команды оболочки. Может ли кто-нибудь указать Меня в направлении документации, показывающей, что эквивалент находится в emacs?Emacs эквивалентен VIM `%`?
5
A
ответ
4
Существует не один. Но это Emacs! Так вот:
(defun my-shell-command-on-current-file (command &optional output-buffer error-buffer)
"Run a shell command on the current file (or marked dired files).
In the shell command, the file(s) will be substituted wherever a '%' is."
(interactive (list (read-from-minibuffer "Shell command: "
nil nil nil 'shell-command-history)
current-prefix-arg
shell-command-default-error-buffer))
(cond ((buffer-file-name)
(setq command (replace-regexp-in-string "%" (buffer-file-name) command nil t)))
((and (equal major-mode 'dired-mode) (save-excursion (dired-move-to-filename)))
(setq command (replace-regexp-in-string "%" (mapconcat 'identity (dired-get-marked-files) " ") command nil t))))
(shell-command command output-buffer error-buffer))
(global-set-key (kbd "M-!") 'my-shell-command-on-current-file)
1
Вы можете использовать это, когда минибуфер ожидает, что вы что-то типа (предостережение: не работает с Идо, но, очевидно, вы всегда можете выйти из этого, например, с С-й С-е). Вы также можете использовать его в обычных буферах.
(defun insert-filename-or-buffername (&optional arg)
"If the buffer has a file, insert the base name of that file.
Otherwise insert the buffer name. With prefix argument, insert the full file name."
(interactive "P")
(let* ((buffer (window-buffer (minibuffer-selected-window)))
(file-path-maybe (buffer-file-name buffer)))
(insert (if file-path-maybe
(if arg
file-path-maybe
(file-name-nondirectory file-path-maybe))
(buffer-name buffer)))))
(define-key minibuffer-local-map (kbd "C-c f") 'insert-filename-or-buffername)
0
в моем случае, используя Emacs 24 версии с графическим интерфейсом из доморощенного .... Я вижу имя файла в качестве 3-го элемента из нижнего левого угла (минор)-бар-мод, чуть выше мини-буфер.
Чтобы увидеть, где я, используя ido-mode, я просто делаю C-x C-f
В этом нет необходимости.
Смежные вопросы
- 1. Emacs/VIM vs. Compiler
- 2. Vim - indent like Emacs
- 3. Vim in Emacs
- 4. Emacs эквивалент yy10p Vim?
- 5. Emacs/vim quick copy paste
- 6. Vim style Omnicomplete для emacs?
- 7. emacs tabs more vim-like
- 8. Сопоставимые различия между Vim и Emacs
- 9. Каковы эффективность Emacs или Vim vs Eclipse?
- 10. Что-то вроде Ctrp Vim для Emacs?
- 11. Клавиатуры Colemak с Emacs или VIM
- 12. Как настроить привязки vim/emacs в RStudio?
- 13. Как подражать «softtabstop» Vim в Emacs?
- 14. От Visual Studio до Vim или Emacs?
- 15. Как использовать Vim keybinding в Emacs?
- 16. Emacs to vim вызывает два символа табуляции
- 17. Режим ввода IDE, emacs или vim
- 18. Vim эквивалент emacs main-mode tag
- 19. Как эмулировать транспонированные слова Emacs в Vim?
- 20. Vim Fuzzy Finder как для Emacs?
- 21. Лучший способ переключиться с Vim на Emacs?
- 22. PowerBuilder эквивалентен Debug.WriteLine?
- 23. Xamarin.Forms макет эквивалентен FrameLayout
- 24. Scala эквивалентен монахам Haskell
- 25. WPF эквивалентен Flex VGroup
- 26. Google эквивалентен Yahoo! Boss
- 27. activerecord эквивалентен SQL 'минус'
- 28. Свифт эквивалентен __ атрибуту ((objc_requires_super))?
- 29. Elasticsearch эквивалентен Map-Reduce
- 30. Sql Эквивалентен UInt16
[buffer-file-name] (http://www.gnu.org/software/emacs/manual/html_node/elisp/Buffer-File-Name.html) – jfs
В Emacs нет эквивалента. 'buffer-file-name' является переменной Elisp и не может использоваться в командной строке оболочки. –
Перекрестная связь с [Передача переменных Emacs в команды оболочки минибуфера] (http://stackoverflow.com/questions/10121944/passing-emacs-variables-to-minibuffer-shell-commands) (что в основном является дубликатом, за исключением того, что два вопроса исходят из существенно разных углов). – phils