Existe uma maneira de obter o gf
comando do vim (ou algo semelhante) para reconhecer um +{cmd}
argumento para caminhos de arquivos?
Pode-se iniciar o vim e ir diretamente para um termo de pesquisa, fazendo:
$ vim +/coding_effort ~/project/file
Da mesma forma, no modo de comando, você pode fazer:
:e +/coding_effort ~/project/file
Costumo fazer anotações e me refiro a outros arquivos como este:
For more info see +/coding_effort ~/project/file where there's a detailed discussion.
Eu adoraria poder selecionar +/coding_effort ~/project/file
, digitar algo como gf
e fazer com que o vim faça a coisa certa.
key-bindings
command-line
search
Oliver Taylor
fonte
fonte
Respostas:
Não, o primeiro problema é que o espaço necessário entre o comando e o nome do arquivo não faz parte da
isfname'
opção ' e adicioná-lo significaria que as bordas do arquivo não poderiam ser reconhecidas. Você sempre deve usar uma seleção visual (de comando e nome de arquivo) ou implementar a análise personalizada em umagf
sobrecarga de comando.Em segundo lugar, o built-in
gf
não reconhece a+{cmd}
sintaxe, então não há realmente nenhuma maneira de implementar seu próprio mapeamento personalizado. Isso certamente é possível (usando funções comoexpand('<cfile>')
,getline()
etc.), mas provavelmente requer algumas linhas da função Vimscript.Se você escolher uma sintaxe diferente (
filename:+command
), poderá manter osgf
comandos originais e implementar a divisão em um:autocmd
, semelhante ao que o arquivo muito relacionado : o plugin de linha faz parafilespec:linenumber
).fonte
Aqui está uma função que deve replicar o
gf
comportamento interno e também procura por trabalhos que começam com os+
quais são passados para:edit
Os comentários devem explicar o que a função faz com mais detalhes ... Escrevi isso no trem pela manhã e (obviamente) não o testei extensivamente ;-)
fonte
Uma opção seria (assumindo que
+cmd file/path
está selecionada) para puxar a seleção para um registro e, em seguida, insira esse registro no prompt de comando. Eu fiz isso com o seguinte mapeamento:vnoremap gsf "0y:e <c-r>0<cr>
fonte
Esta notação funciona (
file name
+trailing :
+/ pat /
)com função e mapeamento abaixo.
fonte