W VIM w trybie wiersza poleceń "%" oznacza bieżący plik, "cword" oznacza bieżące słowo pod kursorem. Chcę utworzyć skrót, w którym potrzebuję bieżącego numeru linii. Jaki jest symbol oznaczający to?W trybie wiersza komend VIM jaki jest znak specjalny/symbol dla bieżącej linii?
Odpowiedz
Jeśli chcesz przekazać bieżący numer linii do linii poleceń, można zrobić
:exe "!echo " . line(".")
. (kropka) oznacza bieżącą linię.
Dla wyjaśnienia: ta jest przeznaczona na rzeczy, jak :1,.s/foo/bar/g
które zmienią każdy foo
do bar
od początku pliku do bieżącej linii.
Nie wiem, znam sposób, aby uzyskać bieżący numer wiersza rozszerzony na polecenie powłoki, która jest, co chce zrobić, wykonując :!echo .
można dowiedzieć się o ekspansji, które są zrobione (na przykład %
i #
) w :he cmdline-special
.
To nie działa. Kiedy wydaję polecenie :! Echo. Dane wyjściowe to tylko "." zamiast oczekiwanego numeru linii. – akshat
Nie, to nie działa, zobacz moje wyjaśnienie. Może, jeśli zadasz kolejne pytanie, w którym szczegółowo wyjaśnisz swój planowany skrót, możemy Ci pomóc w inny sposób osiągnięcia tego, co zamierzasz. – WMR
dzięki WMR. patrząc wstecz na moje pytanie zdaję sobie sprawę, że nie wyjaśniłem poprawnie mojego wymogu. PS: Spojrzałem na cmdline-special, ale nie znalazłem tego. Miałem nadzieję, że jest coś, o czym nie wspomniano. – akshat
poleceń w vim działa na bieżącej linii tak:
:s/foo/bar/g
przekształci każdy foo w pasku na linii jesteś obecnie.
Myślę, że "g" spowoduje, że będzie on zastępował globalnie w całym pliku. –
Nie, w tym przypadku "g" spowoduje, że wyrażenie regularne zostanie zastosowane globalnie do bieżącego wiersza. – Tomalak
Aby to zrobić globalnie, musisz umieścić:% s/foo/bar/g LUB: 1, $ s/foo/bar/g –
Aby powrócić numer wiersza bieżącej linii w dolnej części ekranu, należy:
:.=
Witam, To jest niesamowita odpowiedź. dokładnie to, czego szukałem. – akshat
Dzięki za brakujący składnik dla mojej linii i dołącz wyjście ": exe" r! " . getline (".") ' – bsb