Во-первых: следующие предполагают, что вы используете vim, а не vi или аналог, или проект семейной реликвии vi.
Вот несколько вариантов:
Сначала, если вы собираетесь использовать :s
, затем наведите курсор на выбранную вами строку и:
:s/texttoreplace/<C-R>=line(".")<CR>/
, где <C-R>=
означает, что на самом деле нажмите Ctrl - R , затем введите знак равенства. Подсказка
изменится, и вы можете ввести:
line(".")
, а затем нажмите клавишу возврата, как указано <CR>
. В этот момент вы вернетесь к своему :s
Команда с вставленным номером строки. Вы можете сделать тот же трюк в режиме вставки
а также (<C-R>=line(".")<CR>
).
Во-вторых, вы можете использовать \=
, чтобы вставить номер строки в регулярное выражение в
таким же образом, но это не работает в режиме вставки или в других местах.
Наконец, это полезно, если вы хотите Ctrl - A в режиме вставки и командной строки для вставки текущего номера строки:
:imap <silent> <C-A> <C-R>=line(".")<CR>
:cmap <C-A> <C-R>=line(".")<CR>
не добавляйте атрибут silent в строку cmap
: он запрещает вывод строки в набираемую вами команду до тех пор, пока вы не отступите.