que para opción manejo imprime directorio cuál crear comandos comando autor archivos archivo emacs icicles

opción - Emacs: ¿cuáles son las buenas tácticas para navegar por directorios y abrir archivos?



crear archivo en unix (6)

La semana pasada, enfurecida (de nuevo) por tener que lidiar con diferentes IDEs para R y Perl, ninguno de los cuales me gusta o uso lo suficiente como para sentirme realmente cómodo, decidí probar Emacs. Esta decisión no fue tomada sin un cierto temor por mi parte. Mi uso principal es para Perl con cperl y para R con ESS. Mi entorno es Windows 7 Ultimate de 64 bits y estoy ejecutando v23.4.1, que creo que es lo que el paquete ESS instaló en mi nombre.

Casi una semana y hasta ahora ha sido sorprendentemente indolora, no más involucrada que cualquier otra pieza importante de software. He reasignado mi tecla ctrl a mayúsculas, cambié las carpetas predeterminadas, jugué un poco con .emacs y realicé algunas adiciones como autoinstalación, yasnippet, color-theme, icicles y algunas otras. Claramente hay algunas cosas muy sofisticadas por ahí. Además, por supuesto, ciertas características de Emacs base son inmediatamente muy potentes y útiles, como la búsqueda hacia arriba y hacia abajo. En general, he sido gratamente sorprendido y tranquilizado.

Una cosa que es más cruda de lo que esperaba es el proceso de encontrar y abrir archivos. Después de una breve lectura de varios tutoriales, tuve esta imagen de ubicación de archivos casi mágica y terminación automática de archivos. Los directorios principales en mi configuración tienen rutas como g: / roaming / code / perl o g: / roaming / code / R / pero a menudo necesito bifurcarme en rutas completamente diferentes como g: / pricedata / support files / sector / project01 / y así.

Actualmente borro laboriosamente la ruta del archivo cuando necesito tomar una bifurcación diferente, luego uso la función de autocompletar para profundizar en esa rama del sistema de archivos. Me lleva de nuevo a ejecutar un shell de bash en el Amiga hace veinte años.

¿Qué había esperado? Algo así como (usando el ejemplo anterior) escribiendo ''project01'' para saltar inmediatamente a la carpeta en la parte inferior de la ruta. Por alguna razón, tenía en la cabeza la idea de que Emacs cargaría los directorios. Así que tal vez esto no era realista.

Supongo que mis dificultades probablemente provienen de mi propia falta de familiaridad en lugar de una deficiencia estructural en Emacs y lleva a mis preguntas. No me puedo quejar de que no hay suficiente documentación; más bien, hay abundante información de que está dispersa alrededor de forma bastante casual. Los carámbanos tienen un problema similar, si hay algo demasiado.

1) ¿Cuál es la mejor táctica para moverse por las diferentes ramas del árbol de archivos al intentar abrir archivos en el minibúfer o usar algún otro método? ¿Hay alias que se puedan usar para atajar de un lugar a otro o se pueden precargar directorios? ¿La gente simplemente cd alrededor mucho? ¿O acudo a esto desde un ángulo totalmente erróneo y necesito adoptar una estrategia diferente?

2) Con una configuración adicional, ¿se puede usar la función de autocompletar para encontrar archivos en (digamos) el proyecto01 directamente arriba con un prefijo con comodines, etc.? ¿En qué debería centrarme para ser más eficiente aquí? ¿No estoy aprovechando el poder de los complementos como carámbanos, cualquier cosa, etc.?

Me doy cuenta de que estas preguntas cierran peligrosamente la categoría obsoleta de no tener respuestas claras. Mi defensa es que algunos consejos / orientación en esta etapa antes de comprometerme con malos hábitos o con una mala solución a largo plazo serían bienvenidos y sospecho que las respuestas beneficiarán a otros que podrían estar considerando el cambio. Estoy feliz de retirar o reformular si hay problemas.


Además de IDO y recetf, puede utilizar los siguientes métodos:

  1. Abra el directorio de forma recursiva.

    (defun op-i:dired (rec) "customized dired: will display directory recursively when called with an argument" (interactive "P") (let ((dir (car (find-file-read-args "Dired: " nil))) (opts (if rec (read-string "options: " "-lhAR") "-lhA"))) (if (file-directory-p dir) (dired dir opts)))) (define-key (current-global-map) (kbd "C-x C-d") ''op-i:dired)

    Luego, puede navegar en el búfer del directorio como en cualquier otro búfer usando una búsqueda (comodín).

  2. Utilice los registros de Emacs para apuntar a directorios de uso frecuente. Puedes inicializarlos en tus .emacs

    (set-register ?0 (cons ''file "c:/path/to/my-project0")) (set-register ?1 (cons ''file "c:/path/to/my-project1"))

    Luego salta para registrarte usando Cx rj


Hay varios enfoques. El nombre del archivo caché es una solución integrada. La apertura de archivos de archivos recientes también es muy efectiva, especialmente si configura los archivos almacenados a un número alto (por ejemplo, 1000). También hay paquetes para abrir archivos desde cualquier lugar en el sistema de archivos. Y hay soluciones meta como anything.el que pueden mostrarte completaciones de archivos de múltiples fuentes (historial, archivos de proyectos, etc.) en una interfaz común.

Debes investigar las diferentes opciones para descubrir cuál es la más adecuada para ti.


Otras personas ya han mencionado algo, basta decirlo, creo que resuelve todos sus problemas. :)

Llamar a una característica específica de cualquier cosa es anything-locate . En los sistemas * nix, esto utiliza la base de datos creada por el comando localizar para encontrar archivos rápidamente. En Windows, creo que funciona con "Todo", que debería proporcionarte resultados de búsqueda casi instantáneos en todos tus archivos. Me refiero a todos

Tom ha mencionado file-cache . Cualquier cosa funciona con eso.

Solo como nota al margen, Dired es un monstruo absoluto una vez que te acostumbras. Deberías leer las páginas de emacswiki relacionadas con él. En particular dired-x , que viene con los dired-x Emacs Cx Cj , los saltos al búfer actual en Dired fue una revelación para mí. También dired-find , wdired .

Edición: algunos detalles sobre por qué Cx Cj es impresionante.

Cuando abre el búfer actual en un búfer Dired, puede modificarlo, es decir, renombrarlo, borrarlo, etc. Y Emacs es consciente de lo que ha hecho y lo ajusta en consecuencia.


Otras posibilidades:

  1. Marcadores Si usas Bookmark+ también puedes:

    • Bookmark Dired buffers, que recuerda sus subdirectorios insertados, sus marcas y sus omisiones de archivos. Puede tener un marcador que abre Dired a un conjunto específico de archivos que no necesitan estar en el mismo directorio o incluso en el mismo árbol de directorios.

    • Desde Dired puede presionar una tecla para crear un marcador separado para cada archivo o subdirector marcado.

    • Marcadores de archivos automáticamente (autofiles).

    • Etiquetar marcadores y archivos (marcadores de autofile) con etiquetas de texto arbitrario. (Las etiquetas pueden ser incluso objetos Lisp sin texto). Usa etiquetas para organizar, buscar, etc. diferentes categorías de marcadores.

    • Marcadores de conjuntos de marcadores o archivos de marcadores o escritorios de Emacs. Salte a ese marcador para restaurar el estado / contexto de un proyecto dado.

  2. Icicles

    • Defina conjuntos de archivos temporales o persistentes sobre la marcha, incluso desde directorios diferentes. Operar en los archivos en un conjunto de varias maneras. (Utilice los conjuntos de archivos de Emacs, menos potentes, de la misma manera). Complete los nombres de los archivos de dichos conjuntos guardados durante cualquier comando de finalización, no solo la búsqueda de archivos.

    • Actuar de diferentes maneras en los archivos candidatos durante la finalización.

    • Busque objetos marcados o conjuntos de archivos o buffers guardados.

  3. Dired+ .

    • navigation adicional, incluido el rebote entre una lista de subdirectorios y la línea de subdirectorios en la lista principal.

Refs:


Podría beneficiarse del uso ido-mode , que mejora en gran medida el autocompletado en casi todas partes en emacs (especialmente cuando se encuentran archivos o buffers)

(setq ido-enable-flex-matching t ido-auto-merge-work-directories-length -1 ido-create-new-buffer ''always ido-use-filename-at-point ''guess ido-everywhere t ido-default-buffer-method ''selected-window) (ido-mode 1) (put ''ido-exit-minibuffer ''disabled nil) (when (require ''ido-ubiquitous nil t) (ido-ubiquitous-mode 1))

Si bien esto podría ayudarlo a encontrar rápidamente los archivos "no muy lejos", probablemente no le ayudará mucho a encontrar archivos en ubicaciones completamente diferentes.

Si encuentra que una forma de comenzar a resolver este problema es usar recentf-mode reciente para saltar rápidamente a ubicaciones recientes (si tiene solo un pequeño número de directorios de proyectos habituales, esto podría funcionar). recentf puede recentf con ido usando algo como esto (no estoy seguro de dónde obtuve este fragmento):

(recentf-mode 1) (setq recentf-max-saved-items 50) (defun ido-recentf-open () "Use `ido-completing-read'' to //[find-file] a recent file" (interactive) (if (find-file (ido-completing-read "Find recent file: " recentf-list)) (message "Opening file...") (message "Aborting"))) (global-set-key (kbd "C-x C-r") ''ido-recentf-open)

Con esto, puede usar Cx Cf ( ido-find-file ) para buscar archivos cerca de su ubicación actual, y Cx Cr ( ido-recentf-open ) para buscar archivos abiertos recientemente (esperando que uno de ellos no esté muy lejos) de donde quieres ir).


helm (anteriormente conocido como anything ) podría ser adecuado para usted. Puede instalarlo manualmente, o utilizando una extensión de auto-install .

Para la forma de auto-install : descárguela, coloque en su load-path , luego agregue a .emacs :

(add-to-list ''load-path "~/.emacs.d/site-lisp/auto-install") (require ''auto-install) (setq auto-install-directory "~/.emacs.d/site-lisp/auto-install/")

Entonces haz Mx auto-install-batch anything . Una vez hecho esto, poner en .emacs:

(require ''anything) (require ''anything-match-plugin) (require ''anything-config) (require ''anything-show-completion)

Entonces haz Mx anything por cualquier cosa.

También dale una oportunidad a ECB (significa Emacs Code Browser). Si está en Linux, probablemente lo tenga disponible en un repositorio estándar.