2010-01-31 14 views
15

código I en Vim, no un IDE. Mi código fuente a menudo se anida 2-3 directorios de profundidad.Vim: e directorio de inicio?

~/foo$ find 
xyz 
bar/abc 
bar/def 

~/foo$ vim 
// inside of vim 
:e bar/abc 
... some work ... 
:e <-- is there a way I can have this :e start in ~/foo/bar instead of ~/foo ? 

Básicamente, quiero: e para iniciar el directorio en el "nombre de ruta de último archivo editado"

Gracias!

Respuesta

12

Hay muchas razones por las que no me gusta el autochdir ya que estropea algunos complementos y si termina haciendo: e ../../../foo.txt no está ganando nada. Del mismo modo que una idea probar este CMAP Toqué hasta

:cnoremap red edit <c-r>=expand("%:h")<cr>/ 

entonces se puede escribir: rojo y obtener

:e /the/path/to/your/current/files/dir/ 

(edit: quizá utilizar z en lugar de rojo, ya que hay comandos que comienzan con rojo)

Para ampliar el tema, también consulte el plugin FuzzyFinder y algunas asignaciones personalizadas para saltar rápidamente a archivos comunes que siempre está editando. Por ejemplo,

10 o más de sus archivos normales no deben estar a más de 2 teclas de distancia. Ayuda si se nombran sistemáticamente

Aquí hay una idea que uso para django.

http://code.djangoproject.com/wiki/UsingVimWithDjango#Mappings

+0

Esta es exactamente la respuesta que estaba buscando. – anon

2

Lo sentimos, pero el comando vim: edit toma una ruta que se interpreta en relación con el directorio de trabajo actual de la instancia de vim.

Tiene un comando: cd que puede usar para :cd bar luego trabajar por un tiempo, luego :cd ...

Espero que ayuden a algunos.

3

Para cambiar siempre el directorio de trabajo al directorio del archivo actual que tengo esto en mi .vimrc:

if has("autocmd") 
    autocmd BufEnter * :lcd %:p:h 
endif " has("autocmd") 
+0

Genial! Pero los comandos automáticos como ese siempre muestran un error 'E32' cuando cierras todos los archivos con': bd' en cada uno. – Niloct

11

pruebe la opción autochdir. Cambiará automáticamente el directorio de trabajo actual a cualquier archivo que se haya abierto o seleccionado recientemente. En .vimrc:

set autochdir 

Para obtener más información, :help autochdir

0
  • :cd cambios de directorio
  • :pwd impresiones de la actual.
1

Hace algún tiempo hice preguntas relacionadas con esta en la lista de correo vim: http://www.mail-archive.com/[email protected]/msg03266.html Tal vez usted podrá encontrar consejos útiles en ese hilo.

He probado muchos complementos, pero como las GUI basadas en CLI no son de mi gusto, simplemente terminé usando vim estándar con algunos ajustes de configuración.

Como señaló la bocina, esta línea establece el directorio de trabajo al igual que el archivo de su trabajo en:

autocmd BufEnter * lcd %:p:h 

Mi otro consejo es utilizar la wildmenu. Hace que sea más fácil obtener una visión general de los archivos en su directorio actual cuando vaya: e y luego TAB. Soy un programador de Python, así que la última línea muestra cómo ocultar los archivos generados automáticamente que escupe el intérprete de Python, pero podrías usarlo para ocultar los archivos java .class o c .obj o lo que sea.

set wildmode=list:longest 
set wildignore=*.pyc,*pyo 
+0

Hago algo similar, pero excluyo los archivos de ayuda: 'au BufReadPost * if & ft! = 'Help' | ¡silencio! cd%: p: h | endif' – idbrii

0

¿por qué no simplemente :E? Explore el directorio del archivo actual.

:help :E

0

Esto no es exactamente lo que quería, pero echa un vistazo NERDTree.

+0

Esto es realmente un comentario, no una respuesta. Con un poco más de repetición, [podrá publicar comentarios] (http://stackoverflow.com/privileges/comment) .. – Jack

+0

@Jack Lo sé ... – Gaelan

0

En vim/gVim acabo de tener cd C:/blah/blah en la parte superior de mi vimrc. Me imagino que funciona en todas las plataformas.

Yo personalmente uso vagabundo para cada proyecto, así que un CD es suficiente, pero creo que también puede obtener vim para usar diferentes archivos de configuración, creo que -u bandera.

O asigne una clave para cada proyecto que tenga presionando Ctrl + F1 ¿cd path/to/project/1 y Ctrl + F2 hace cd path/to/project/2 quizás?

Nota: No utilizo ningún complemento

Cuestiones relacionadas