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?

guido
fonte

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
Giovanni Maggiorani
fonte
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.

Izkata
fonte
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.
Quincy Bowers
fonte
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