2010-05-25 6 views
35

23.1.1muestra ruta de archivo en la barra de estado de Emacs de GNU

Me pregunto ¿hay alguna manera para mostrar la ruta del archivo en la barra de estado, en lugar de sólo el nombre del archivo.

Tengo que abrir muchos archivos en muchos directorios, y a veces olvido en qué directorio están. Simplemente es más fácil mostrar algunos de los caminos en la barra de estado si eso es posible.

A veces mis rutas de directorio son muy largas.

por ejemplo

/projects/clientserver/trunk/src/client/client.c 

como esto en la barra de estado, al igual que aparezcan las últimas dos directorios.

/src/client/client.c 

Muchas gracias por todas las sugerencias,

Respuesta

39

Lo que está pidiendo es cambiar el nombre del búfer. Puede personalizar cómo se denominan los almacenamientos intermedios usando uniquify. Tiene varios métodos para hacer nombres de buffer únicos. La opción más obvia para usted es 'reenviar', lo que le da exactamente lo que pide: prefija el nombre del búfer con parte del camino como prefijo.

Sin embargo, esto tiene un efecto secundario potencialmente no deseado. Normalmente, los nombres de los buffers se hacen únicos añadiendo un sufijo. Cuando hagas 'c-x b' para cambiar los búferes, si escribes "foo" y tienes tanto "foo" como "foo < 1>", se te mostrará el prefijo común y se te dará la posibilidad de proporcionar el sufijo. Entonces, 'c-x b foo' te permitirá completar cuando veas una lista de todos los buffers "foo".

Si usa uniqueify en modo 'forward', tendrá nombres de buffer de la forma "bar/foo" y "baz/foo". Ahora, 'c-x b foo' no lo llevará a un búfer foo, o le permitirá completar para obtener una lista de buffers foo. Debe recordar el prefijo que se agrega a cada nombre de búfer.

Mi consejo es utilizar el modo 'inverso' de uniqify, que usa la ruta del directorio como sufijo. Es tal vez un poco menos intuitivo, pero más fácil de usar en la práctica. Entonces ahora tendrías buffers como "foo \ bar" y "foo \ baz", otra vez dándote la ventaja de poder hacer 'c-x b foo' y obtener una lista de todos los buffers con un nombre de archivo de "foo".

Por lo tanto, añadir esto a su archivo .emacs y ver si te gusta el comportamiento:

(require 'uniquify) 
(setq uniquify-buffer-name-style 'reverse) 
+2

Corrección de sintaxis simple: use 'uniquify-buffer-name-style' en lugar de' uniqueify-buffer-name-style'. – egor7

+1

Puede usar "Mx customize-option RET uniquify-buffer-name-style RET" para elegir el comportamiento, que también proporciona una explicación rápida de ellos (FWIW, prefiero post-forward-angle-brackets, que da "filename "). – rbp

+1

Habilitando el modo ido con '(require 'ido)' y '(ido-mode t)' en sus .emacs (vea http://emacswiki.org/emacs/InteractivelyDoThings) le permitirá escribir' Cx b foo ' y todavía terminan en el buffer foo también. Si tiene varios búferes con 'foo' en ellos, mientras usa ido 'C-s', los pasará cíclicamente. – Wilduck

4

consulte la documentación de la variable 'marco-title-format' Se le apuntan a la variable 'mode-line-format' que detalla las opciones para configurar su título

5

Uniquify deberían hacer prácticamente lo que desee.

7

Esta funciona bien para mí para establecer la ruta completa en el cuadro:

(setq frame-title-format 
    '(:eval 
    (if buffer-file-name 
     (replace-regexp-in-string 
     "\\\\" "/" 
     (replace-regexp-in-string 
      (regexp-quote (getenv "HOME")) "~" 
      (convert-standard-filename buffer-file-name))) 
     (buffer-name)))) 
+0

Muchas gracias, ¡muy apreciado !. – lawlist

26

Si está de acuerdo con ver esto como el título del marco en lugar de en la barra de estado, que personalmente prefiero porque es menos abarrotado y es útil también al cambiar ventanas con Alt + TAB, etc., Entonces se puede añadir algo como lo siguiente a su archivo .emacs sin necesidad de instalar cualquier extensión:

;; Disable loading of “default.el” at startup, 
;; in Fedora all it does is fix window title which I rather configure differently 
(setq inhibit-default-init t) 

;; SHOW FILE PATH IN FRAME TITLE 
(setq-default frame-title-format "%b (%f)") 

%b mostrará el nombre del búfer, como de costumbre, y %f la ruta completa del archivo. Por supuesto, puede cambiar el orden, agregar texto entre, eliminar %b, etc.

+2

Incluso con uniquify, esto es muy útil con mi configuración de xming, que había estado nombrando los marcos algo inútil. –

+2

esto es lo que necesito, simple y hermoso – thisEric

+0

Funcionó para mí en Spacemacs en OSX incluso sin el primer 'setq'. ¡Brillante! – nietaki

Cuestiones relacionadas