Не існує текстового об’єкта для всього файлу за замовчуванням, але їх можна створити за допомогою 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.