Odpowiedzi:
Jestem pewien, że istnieją inne sposoby, aby to zrobić ... ale głównym poleceniem, które chcesz, jest :r[ead]
wstawienie wyniku polecenia do bufora.
Tak więc, aby wstawić tylko nazwę pliku:
:r! echo %
Aby uwzględnić pełną ścieżkę:
:r! echo %:p
Po więcej informacji:
:help read
:help filename-modifiers
Bieżąca nazwa pliku znajduje się w "%
rejestrze, więc możesz ją wstawić (w trybie wstawiania) za pomocą <c-r>%
; pełną ścieżkę można wstawić za pomocą <c-r>=expand("%:p")
. Możesz zrobić z niego makro, jeśli często go używasz. Aby uzyskać więcej podobnych sztuczek, zobacz :h expand
i :h "=
.
<c-r>
określa, że następny znak jest rejestrem.
"%p
w trybie normalnym lub wizualnym.
Jak widać :h registers
, "%
rejestr zawiera bieżącą nazwę pliku. :pu[t]
Polecenie wstawia zawartość rejestru do tekstu.
Aby wstawić rzeczywistą nazwę pliku, możesz wpisać dowolny z nich w trybie poleceń:
:put %
lub
"%p
Aby wstawić nazwę pliku z pełną ścieżką, wpisz
:put=expand('%:p')
w trybie komend.
Więcej informacji:
:h pu[t]
Wpisując "rp
, możesz wkleić zawartość rejestru "r
.
:put "%:p"
chyba nie działa dla mnie. Wydaje się, że działa tylko z funkcją expand () , jak w :put =expand('%:p')
:, co czyni go nie mniej kłopotliwym niż <c-r>=expand('%:p')
niestety.
Prostym sposobem jest uruchomienie:
!!echo %
!!
zastępuje bieżący wiersz wynikiem następującego po nim polecenia.
%
jest zastąpiony nazwą edytowanego pliku w poleceniu, aby skutecznie wstawić tę nazwę do edytowanego pliku.
Nazwa pliku została przekazana do komendy vi (m) i może zawierać ścieżkę względną lub bezwzględną. Jeśli chcesz go usunąć i zachować tylko nazwę pliku, uruchom
!!basename %
Jeśli musisz to robić często, przydatne może być powiązanie sekwencji klawiszy z tym, co chcesz, zgodnie z http://vim.wikia.com/wiki/Insert_current_filename
wstawia bieżącą nazwę pliku bez rozszerzenia w pozycji kursora, gdy jesteś w trybie wstawiania.
:inoremap \fn <C-R>=expand("%:t:r")<CR>
Aby zachować rozszerzenie, użyj:
:inoremap \fn <C-R>=expand("%:t")<CR>
Aby wstawić bezwzględną ścieżkę do katalogu, plik jest w użyciu:
:inoremap \fn <C-R>=expand("%:p:h")<CR>
Aby wstawić ścieżkę względną katalogu, plik jest używany:
:inoremap \fn <C-R>=expand("%:h")<CR>
Powyżej wszystko działa bezpośrednio vim
dla sesji lub można je umieścić w .vimrc
(gdzie dwukropek na linii jest opcjonalny).
Google szukałem najprostszego sposobu wstawienia bieżącej nazwy pliku (bez ścieżki lub rozszerzenia) do bieżącej pozycji (bez nowej linii, bez zastępowania bieżącej linii). Więc łącząc poprzednie odpowiedzi i ten link , właśnie tego szukałem.
W trybie wstawiania :
<C-R>=expand("%:t:r")
Następnym razem (z poleceniem już w historii):
<C-R>=<UP>
<c-r>
mapowane jako polecenie powtórzenia?