Criar: editar {arquivo} usar o diretório atual durante: Explorar


8

Costumo usar :Exou :Sexexplorar o sistema de arquivos a partir de um diretório de arquivos aberto ou simplesmente invocar o vim passando um diretório para começar a explorar o sistema de arquivos e depois abrir um arquivo.

De qualquer forma, durante a navegação na árvore de diretórios, o uso do :edit {file}comando para abrir novos arquivos sempre utiliza caminhos relativos ao diretório atual a partir do qual o vim foi executado; tão:

~# vim .
-> navigate to Development/
-> open a file
:e <tab> will complete path from home dir

ou:

~# vim Development/
-> open a file
:Sex
:e <tab> will complete paths from Development/

é possível (automagicamente ou com um comando) alterar o diretório de trabalho atual do vim para o diretório selecionado atual enquanto navega no sistema de arquivos?

Respostas:


5

É possível definir a variável de configuração netrw g:netrw_keepdircomo 0 (o padrão é 1).
Para torná-lo permanente, adicione no arquivo .vimrc esta linha:

let g:netrw_keepdir=0

7

Sim, o vim possui um :cdcomando que imprime o diretório atual ou altera o diretório atual. Na ajuda é esta - observe as últimas linhas:

:cd[!] {path}           Change the current directory to {path}.
                        If {path} is relative, it is searched for in the
                        directories listed in |'cdpath'|.
                        Does not change the meaning of an already opened file,
                        because its full path name is remembered.  Files from
                        the |arglist| may change though!
                        On MS-DOS this also changes the active drive.
                        To change to the directory of the current file: >
                                :cd %:h

Conforme observado na parte superior da ajuda :cd, isso afeta o diretório de trabalho do vim, não apenas o que :Exretorna ou os comandos internos usam, portanto, os comandos externos também usarão o novo local.


Existe um evento semelhante ao "diretório alterado", enquanto navegava, ao qual eu poderia vincular um comando automático? Além disso, ele só funciona depois de abrir um arquivo?
guido

@guido Não que eu saiba, mas as outras duas respostas parecer uma possibilidade de mudança automática
Izkata

7

Defino as duas opções a seguir para garantir que o diretório de trabalho atual do Vim seja sempre o mesmo que o do buffer atual.

set autochdir                   " Changes the cwd to the directory of the current
                                " buffer whenever you switch buffers.
set browsedir=current           " Make the file browser always open the current
                                " directory.

O segundo comando faz isso; o primeiro também mudará de diretório ao abrir um arquivo com o vim path/to/filequal não quero.
guido

@ guido Eu não entendo como a configuração somente a browsedirconfiguração afeta o comportamento que você está descrevendo. Essa configuração afeta o diretório que o navegador de arquivos da GUI abre, não o diretório usado para a conclusão da linha de comandos.
Rich

@ Rich você perfeitamente certo; Esqueci de excluir let g:netrw_keepdir=0do vimrc antes de testar isso!
guido
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.