Czy istnieje sposób na uzyskanie gf
polecenia vima (lub czegoś podobnego) w celu rozpoznania +{cmd}
argumentu dla ścieżek plików?
Można uruchomić vima i przejść bezpośrednio do wyszukiwanego hasła, wykonując:
$ vim +/coding_effort ~/project/file
Podobnie w trybie poleceń możesz:
:e +/coding_effort ~/project/file
Często robię notatki i odnoszę się do innych plików takich jak ten:
For more info see +/coding_effort ~/project/file where there's a detailed discussion.
Chciałbym móc wybrać +/coding_effort ~/project/file
, wpisać coś w stylu gf
i sprawić, że vim postąpi właściwie.
key-bindings
command-line
search
Oliver Taylor
źródło
źródło
Odpowiedzi:
Nie, pierwszym problemem jest to, że niezbędna przestrzeń między poleceniem a nazwą pliku nie jest częścią
isfname'
opcji ' , a dodanie jej oznaczałoby, że nie można było w ogóle rozpoznać granic plików. Musisz albo użyć wizualnego wyboru (polecenia i nazwy pliku), albo wdrożyć niestandardową analizę w przypadkugf
przeciążenia polecenia.Po drugie, wbudowana funkcja
gf
nie rozpoznaje+{cmd}
składni, więc naprawdę nie ma sposobu na zaimplementowanie własnego niestandardowego mapowania. Jest to oczywiście możliwe (przy użyciu funkcji takich jakexpand('<cfile>')
,getline()
itp), ale prawdopodobnie trwa kilka linijek funkcji Vimscript.Jeśli wybierzesz inną składnię (
filename:+command
), możesz zachować oryginalnegf
polecenia i zaimplementować podział w:autocmd
, podobny do tego, co robi bardzo powiązana wtyczka file: linefilespec:linenumber
).źródło
Oto funkcja, która powinna replikować wbudowane
gf
zachowanie, a także skanuje w poszukiwaniu prac, od+
których następnie przechodzi:edit
Komentarze powinny bardziej szczegółowo wyjaśniać, co robi ta funkcja ... Napisałem to rano w pociągu i (oczywiście) nie testowałem tego obszernie ;-)
źródło
Jedną z opcji byłoby (zakładając, że
+cmd file/path
wybrano) szarpnięcie wyboru do rejestru, a następnie wstawienie tego rejestru do wiersza polecenia. Zrobiłem to z następującym mapowaniem:vnoremap gsf "0y:e <c-r>0<cr>
źródło
Ta notacja działa (
file name
+trailing :
+/ pat /
)z funkcją i mapowaniem poniżej.
źródło