Como posso abrir o caminho para o arquivo atual na linha de comando, para digitar um nome de arquivo semelhante? Não quero uma abreviação que seria substituída pelo nome do arquivo atual. Quero editar o nome do arquivo, completo com o caminho do diretório. Por exemplo, quero :edit
um arquivo com um nome semelhante ou em um diretório semelhante, por exemplo
vim src/submodule/frontend/frobnicate2.c
e agora quero editar ../trunk/src/submodule/frontend/frobnicate.c
e só quero inserir ../trunk
e remover o 2
e não redigitar o caminho completo.
É claro que posso voltar ao shell e usar seu histórico de comandos ou copiar e colar o caminho na GUI, mas estou procurando uma maneira mais eficiente que não exija a saída do Vim.
fonte
Ctrl-r =expand('%:p')
. Isso usa o registrador = .Se você configurou sua
path
variável vim , terá todo o poder do:find
comando, ou seja, preenchimento de tabulação de nomes de arquivo (sem a necessidade de especificar a parte do diretório!)No seu caso, algo como
pode ser tudo o que você precisa para
:fin frob<tab>
trabalhar. Para os detalhes,:help find
,:help file-searching
.fonte
Aqui está um mapeamento que você pode tentar:
Isso salva o comando atual e define o registro 'a' para o nome do arquivo atual. Em seguida, o último comando é chamado e anexado ao conteúdo do registro 'a'. Obviamente, se você tiver algo útil no registro 'a', isso o substituirá.
Você pode alterar os caracteres mapeados para outra coisa. Eu gosto de usar a tecla Alt, mas ela não funciona em alguns terminais.
Como Carpetsmoker apontou em sua resposta, você pode alterar a chamada de função para
para forçar o caminho completo.
fonte
a
. Tente algo parecido com isto:cnoremap <M-q> <C-r>=fnameescape(expand('%:p'))<CR>