¿Cómo configurar el directorio de trabajo / actual en Vim?

109

Entonces, cuando quiero crear un nuevo archivo usando el comando: e, no quiero especificar la ruta completa, solo el nuevo nombre de archivo. Se puede hacer?

Fred
fuente

Respuestas:

144

Como ya se sugirió, puede usar autochdir, que cambiará al directorio del archivo que abrió, la otra opción es

:cd mydirectory

que cambiará el directorio. Esta puede ser una ruta absoluta o relativa, por lo que :cd ..subirá un nivel. O puede usar :cd %:hque también cambiará al directorio en el que se encuentra el archivo actual, pero sin configurar autochdir.

:cd

cambiará el directorio a su directorio de inicio (o en Windows, imprimirá el directorio actual).

:cd -

cambiará el directorio al directorio anterior que visitó.

falstro
fuente
13
si está utilizando varias ventanas, incluso puede usar: lcd para cambiar el directorio solo para la ventana actual.
Inútil
1
@Useless: interesante ... no creo que quiera eso nunca, pero supongo que es cuestión de gustos. Gracias por la info.
falstro
3
Estoy tratando de averiguar qué significa%: h, ¿alguna ayuda?
Michael
10
@Michael se %traduce al nombre del archivo actual, incluida la ruta, :agrega el modificador, hes head, es decir, la ruta hasta el último separador de ruta, es decir, excluye el nombre del archivo en sí.
falstro
@falstro, ¿sabe cómo: el comando cd se puede aplicar a todas las ventanas dentro de las mismas instancias en ejecución de vim? Ej: cuando se usa split: sp
mgouin
15

Además, si está navegando por el sistema de archivos con el explorador de archivos netrw, puede configurar el directorio actual presionando la tecla c.

Dave Kirby
fuente
también se usa set autochdirpara hacer que 'c' keysurta efecto en shell, de modo que pueda usar !command args bajo dir cambiado.
Pimgeek
9

Intente agregar set autochdira su .vimrc. Si desea cambiarlo solo por esta vez, use :cd(o :cd!para forzarlo).

John Feminella
fuente
1
la ayuda dice que esto rompe algunos complementos (no sé cuáles), así que tomé la precaución de agregar mapeo en mi .vimrc: cnoremap cd. lcd %:p:hy en su nnoremap ,cd :cd %:p:h<CR>:pwd<CR>lugar
ErichBSchulz
también se usa 'c' keyen el explorador de archivos netrw para acompañar esto.
pimgeek
3

No sé qué le pasa a vim. Quiero el directorio donde inicio vim como el actual.

Seguí el consejo sobre autochd anterior y lo configuré en noautcd en mi .vimrc.

Todavía no lo he hecho, pero estoy a punto de iniciar vim así a partir de ahora:

vim —cmd 'cd `pwd`'

¡Eso hará que se quede en el directorio actual!

McUsr
fuente
2

Con netrw:además de presionar la ctecla para establecer el directorio actual, también se puede poner:

let g:netrw_keepdir= 0

en tu .vimrc; esto significa que netrwmantendrá el directorio de navegación igual que el directorio actual.

Chip Campbell
fuente
Esto parece tener un comportamiento equivalente a: lcd para cada cambio de carpeta netrw. ¿Tiene una idea de cómo esta configuración podría ser el equivalente a: cd en su lugar (cambiar dir para todas las ventanas)? ¡Gracias!
mgouin
1

Agregar esto a mi .vimrccambia automáticamente el directorio de trabajo de Vim al archivo actual:

autocmd BufEnter * silent! :lcd%:p:h
Matthias Braun
fuente
3
set autochdirhace eso también :-)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功