По умолчанию не существует текстового объекта для всего файла, но его можно создать с помощью omap
. В этом случае это будет выглядеть примерно так:
onoremap f :<c-u>normal! mzggVG<cr>`z
Вот разбивка того, как это работает:
onoremap f " make 'f' the text object name
:<c-u> " use <c-u> to prevent vim from inserting visual selection marker at the beginning of the command automatically.
normal! " use normal to make key presses ignoring any user mappings
mzggVG<cr>`z " make a marker in register z, select the entire file in visual line mode and enter the normal command, and go back to the z marker
Заметки:
Ctrluможет использоваться в режиме командной строки для удаления всего, что находится слева от позиции курсора. Причина, по которой это делается, состоит в том, что если вы вводите командную строку прямо из визуального режима, она автоматически вставляется '<,'>
в командную строку, а это не то, что нам нужно. Я бы также предложил вам использовать что-то другое f
, потому что f
обычно используется для перехода к следующему искомому символу в строке. Например, fi
перейдем к следующему i
на текущей строке.
Соответствующие разделы справки:
:help omap-info
:help :normal
:help c_CTRL-U
:help v_:
mmgg"+yG`m
и никогда не думал об этом. Спасибо, это происходит прямо в .vimrc.