5

VIMでは%、シェルコマンドを呼び出すときに現在のファイル名を示すために使用できます。誰かが私をドキュメントの方向に向けて、emacsで同等のものが何であるかを示すことができますか?

4

3 に答える 3

5

ありません。しかし、これは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)
于 2012-06-29T17:57:19.900 に答える
1

ミニバッファが何かを入力することを期待するときはいつでもこれを使用できます(注意:idoでは機能しませんが、Cx Cfなどでいつでもそれから抜け出すことができます)。通常のバッファーでも使用できます。

(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)
于 2012-06-29T21:12:02.493 に答える
0

私の場合、homebrewのemacs 24 guiバージョンを使用しています。ファイル名は、ミニバッファーのすぐ上にある(マイナー)モードバーの左下隅から3番目の項目として表示されます。

私がどこにいるかを確認するには、ido-modeを使用して、C-x C-f設定は必要ありません。

于 2013-08-15T18:35:59.297 に答える