Jak mogę wyświetlić ścieżkę do bieżącego pliku w wierszu poleceń, aby wpisać podobną nazwę pliku? Nie chcę skrótu, który zostałby zastąpiony bieżącą nazwą pliku, chcę edytować nazwę pliku wraz ze ścieżką do katalogu. Na przykład chcę :edit
plik o podobnej nazwie lub w podobnym katalogu, np
vim src/submodule/frontend/frobnicate2.c
a teraz chcę edytować ../trunk/src/submodule/frontend/frobnicate.c
i chcę tylko wstawić ../trunk
i usunąć 2
, a nie ponownie wpisać pełną ścieżkę.
Mogę oczywiście wrócić do powłoki i skorzystać z historii poleceń lub też skopiować i wkleić ścieżkę przez GUI, ale szukam bardziej wydajnego sposobu, który nie wymaga opuszczania Vima.
źródło
Ctrl-r =expand('%:p')
. Używa to rejestru = .Jeśli ustawiłeś
path
zmienną vim , masz pełną moc:find
polecenia, a mianowicie uzupełnianie nazw plików tabulatorami (bez konieczności określania części katalogu!)W twoim przypadku coś takiego
może być wszystkim, czego potrzebujesz
:fin frob<tab>
do pracy. Do krwawych szczegółów:help find
,:help file-searching
.źródło
Oto mapowanie, które możesz wypróbować:
Zapisuje to bieżące polecenie, a następnie ustawia rejestr „a” na nazwę bieżącego pliku. Następnie ostatnie polecenie jest przywoływane i dołączane do zawartości rejestru „a”. Oczywiście, jeśli masz coś użytecznego w rejestrze „a”, spowoduje to zastąpienie go.
Możesz zmienić zamapowane postacie na coś innego. Lubię używać klawisza Alt, ale nie działa w niektórych terminalach.
Jak wskazał Carpetsmoker w swojej odpowiedzi, możesz zmienić wywołanie funkcji na
wymusić pełną ścieżkę.
źródło
a
. Spróbuj czegoś takiego:cnoremap <M-q> <C-r>=fnameescape(expand('%:p'))<CR>