2011-05-08 123 views
16

Soy un usuario de mac que le da una gran oportunidad a vim. La mayoría de los editores GUI Estoy utiliza para permitir que abra un directorio como un "proyecto" mediante la ejecución de un comando como:Abrir un directorio en vim

editar ~/www/example.com/

El vim equivalente vim ~/www/example.com/ me mostrará una lista de archivos en el directorio, y puedo abrirlos. Pero no establece el directorio de trabajo de vim en esa ruta, tengo que ejecutar :cd . para establecer el directorio de trabajo.

¿Hay alguna forma, tal vez con un script de shell, para abrir vim y tener su directorio de trabajo configurado en una ruta determinada?

En realidad estoy usando MacVim, si eso hace la diferencia.

+3

En vista de directorio, simplemente con apretar 'C' se cd que en ese directorio - no hace exactamente lo que quiere, pero vale la pena conocer. –

+2

Está bien proponer respuestas a su propia pregunta. Recomiendo mover su trabajo en progreso para responder la pregunta, ya que no es parte de la pregunta. Incluso hay una insignia que puede ganar para responder su propia pregunta con un puntaje de 3 o más. (ps buena respuesta!) – Ziggy

+0

@ Ziggy gracias. Intenté responder mi propia pregunta, pero no me permitió (algo sobre esperar 24 horas antes de responder tu propia pregunta). No estaba seguro de qué hacer, pero ahora lo he publicado como respuesta. –

Respuesta

6

Gracias a las sugerencias de @ sehe, se me ocurrió esto. No estoy seguro si es la mejor solución, pero parece funcionar.

#!/bin/bash 

if [ "$#" -eq 1 ];then # is there a path argument? 
    if test -d $1;then # open directory in vim 
    vim $1 +':cd %' 
    else # open file in vim 
    vim $1 +':cd %:h' 
    fi 
else # no path argument, just open vim 
    vim 
fi 
6

Braindead:

(cd /path/to/dir && vim file) 

Menos de modo:

vim /path/to/dir/file +':cd %:h' 

Siempre se puede asignar a una tecla :cd %:h conveniente o poner en un AutoCommand (no me realmente recomiendo este último, pero no hay no hay discusión sobre el gusto)


Oh y para los directorios en lugar de archivos:

:cd % 

es más que suficiente

+0

¡Gracias, eso me apuntó en la dirección correcta! Pero no es la respuesta perfecta, porque el "archivo" al que se refiere no existe, quiero abrir vim con un directorio de trabajo dado, no abrir un archivo en vim (el archivo que quiero abrir es probablemente de varios sub directorios profundos) –

1

Trate de añadir lo siguiente a su .vimrc

let g:netrw_liststyle=3 
let g:netrw_keepdir=0 

Esto hará que la exploración de directorios utilizar un estilo de árbol para mostrar los archivos (se puede ampliar un directorio colocando el cursor sobre un directorio y presionando enter) y hacer que el directorio de trabajo actual sea también el que está explorando.

Puede que también le interese el plugin NERDTree que proporciona un explorador de directorios que es más avanzado que el integrado. Tiene una opción

let g:NERDTreeChDirMode=2 

para hacer que el directorio actual coincide con la raíz del árbol se muestra o

let g:NERDTreeChDirMode=1 

para cambiar el directorio cada vez que utilice un comando (:e o :NERDTree) para buscar un nuevo directorio .

1
$ cd ~/my/working/directory 
$ vim . 
Cuestiones relacionadas