По умолчанию не существует текстового объекта для всего файла, но его можно создать с помощью 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.