Bem, na verdade ‘gf’ se sai muito bem, mas em alguns casos não funciona. Por exemplo:
my $obj = Foo::Bar->new;
… portanto, esta é AINDA OUTRA FORMA de fazer isso;) …
Coloque essas três linhas em seu vimrc e deixe seus dedos repousarem um pouco:
map <Leader>omv y<C-w>np0ie lib/<esc>A.pm<esc>:%s/::///g<CR>:noh<CR>v$y:bd!<CR>:<C-r>0<CR>
map <Leader>om 0f<Space>eT<Space>vt;<Leader>omv
map <Leader>oms 0f<Space>eT<Space>vt<Space><Leader>omv
NOTA
Ele assume que seus módulos estão no diretório lib / e você opera a partir do diretório de nível superior do seu projeto. Altere a lib para o que quiser se a sua lib não estiver na lib 🙂 …
Qual o proximo?
Quando você vê:
use Foo::Bar;
… tipo
<Leader>om
Quando você vê:
use Foo::Bar qw(baz);
… tipo
<Leader>oms
e quando você vê:
my $var = Foo::Bar->new;
… nome e tipo do módulo visual
<Leader>omv
Novamente, sinta-se à vontade para alterar os atalhos se eles não forem convenientes o suficiente.
O que eles fazem?
- Visualiza o módulo ou pede a você
- Abre uma nova janela e cole lá
- Substitui :: por /
- Puxa
- Abre usa o registro 0