Como definir o diretório de trabalho / atual no Vim?

109

Portanto, quando desejo criar um novo arquivo usando o comando: e, não desejo especificar o caminho completo, apenas o novo nome do arquivo. Isso pode ser feito?

Fred
fonte

Respostas:

144

Como já sugerido, você pode usar autochdir, que mudará para o diretório do arquivo que você abriu, a outra opção é

:cd mydirectory

que mudará o diretório. Este pode ser um caminho absoluto ou relativo, portanto :cd .., subirá um nível. Ou você pode usar o :cd %:hqual também mudará para o diretório onde o arquivo atual está, mas sem definir autochdir.

:cd

irá alterar o diretório para o seu diretório inicial (ou no Windows, imprimirá o diretório atual).

:cd -

irá mudar o diretório para o diretório anterior que você visitou.

falstro
fonte
13
se estiver usando várias janelas, você pode até usar: lcd para alterar o diretório apenas para a janela atual.
Inútil
1
@Useless: interessante ... Acho que nunca vou querer isso, mas acho que é uma questão de gosto. Obrigado pela informação.
falstro
3
Estou tentando descobrir o que%: h significa, alguma ajuda?
Michael
10
@Michael %traduz para o nome do arquivo atual incluindo o caminho, :adiciona o modificador, hé o cabeçalho, ou seja, o caminho até o último separador de caminho, que exclui o próprio nome do arquivo.
falstro 02 de
@falstro, você sabe como: o comando cd pode ser aplicado a todas as janelas nas mesmas instâncias em execução do vim? Ex: ao usar divisão: sp
mgouin
15

Além disso, se você estiver navegando no sistema de arquivos com o explorador de arquivos netrw, poderá definir o diretório atual pressionando a tecla c.

Dave Kirby
fonte
também use set autochdirpara fazer o 'c' keyefeito no shell, para que você possa usar !command args no diretório alterado.
pimgeek de
9

Tente adicionar set autochdirao seu .vimrc. Se você quiser mudar apenas uma vez, use :cd(ou :cd!para forçar).

John Feminella
fonte
1
a ajuda diz que isso quebra alguns plug-ins (não sei quais), então tomei o cuidado de adicionar mapeamento no meu .vimrc: cnoremap cd. lcd %:p:he em nnoremap ,cd :cd %:p:h<CR>:pwd<CR>vez disso
ErichBSchulz
também use 'c' keyno explorador de arquivos netrw para acompanhar isso.
pimgeek
3

Eu não sei o que há de errado com o vim. Eu quero o diretório onde inicio o vim como o atual.

Eu segui a dica sobre autochd acima e configurei como noautcd no meu .vimrc.

Ainda não fiz, mas vou começar o vim assim a partir de agora:

vim —cmd 'cd `pwd`'

Isso o manterá no diretório atual!

McUsr
fonte
2

Com netrw:além de pressionar a ctecla para definir o diretório atual, você também pode colocar:

let g:netrw_keepdir= 0

em seu .vimrc; isso significa que netrwmanterá o diretório de navegação igual ao diretório atual.

Chip Campbell
fonte
Isso parece ter um comportamento equivalente a: lcd para cada mudança de pasta netrw. Você tem uma ideia de como essa configuração pode ser equivalente a: cd (alterar o diretório para todas as janelas)? Obrigado!
mgouin
1

Adicionar isso ao meu .vimrcmuda automaticamente o diretório de trabalho do Vim para o arquivo atual:

autocmd BufEnter * silent! :lcd%:p:h
Matthias Braun
fonte
3
set autochdirfaz isso também :-)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功