Eu sei que posso concluir nomes de arquivos / caminhos do diretório atual usando ctrl + x, ctrl + f ( compl-filename
). Isso funciona muito bem em combinação com o conjunto autochdir, que altera atualiza o diretório atual para o diretório do buffer ativo.
No entanto, comecei a usar airblade/vim-rooter
para tornar o diretório atual a pasta "projeto". Agora, a conclusão do nome do arquivo sempre começa na pasta do projeto.
A pergunta: Existe uma maneira de fazer a conclusão do nome do arquivo usar o diretório do buffer ativo em vez do diretório atual? Ou alguma outra solução alternativa?
autocompletion
Rafael Barbosa
fonte
fonte
path
). Depende do uso pretendido para o vim-rooter. Dependendo do que você deseja dele, poderíamos usar outros plugins. Além disso: eu uso o youcompleteme, que completa os caminhos do diretório do buffer atual se você começar a digitar./
. Veja reddit.com/r/vim/comments/216jdd/…Respostas:
Como o @muru mencionou, não há opções para configurar o diretório a partir do qual concluir os nomes de caminho e arquivo. Ele sempre usa o diretório de trabalho da janela.
Eu escrevi algumas funções e mapeamentos para ajudar nisso. Nos bastidores, eles alteram o diretório de trabalho local (usando
:lcd
) temporariamente e, em seguida, restauram o diretório de trabalho anterior.Elefante
Por motivos desconhecidos para mim, chamei este micro-plugin de elefante .
Aqui está o código (copiado da minha configuração do Vim no GitHub ):
Como usá-lo
O uso desses mapeamentos ocorre em 3 etapas.
1. Invoque o mapeamento
No modo Inserir ou no modo de linha de comando, chame o mapeamento usando
<C-R><C-E>
.2. Escolha um diretório
Digite um único caractere para escolher de qual diretório raiz você deseja concluir. O código acima fornece dois tipos de raízes:
f
- O diretório em que o arquivo atual (buffer) residep
- O diretório base do projeto Git ao qual o arquivo atual pertence3. Digite o caminho ou o nome do arquivo
Você será solicitado a inserir o caminho ou o nome do arquivo em relação ao diretório especificado, com a conclusão disponível. Pressione
Enter
quando terminar.Algumas notas
<C-X><C-F>
faz; em vez disso, você digitará o caminho ou o nome do arquivo no prompt da linha de comando (para onde:
vão os comandos). Ao pressionarEnter
, o caminho será inserido no buffer.Enter
e esquece que ainda precisa pressionarEnter
para emitir o comando que estava digitando.g:elephant_map
.fonte