Quasus
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: Работает, но копирует без закрывающей скобки. | Чёрт-те что. А ведь правда, и я не знал такого эффекта. Оказывается, при прыжке к метке сама метка не включается, как учит нас :h mark-motion. Чтобы метка включалась, надо после команды поставить v. Получается Код: Мой косяк. Это решение почти идеальное. Что метка создаётся - это можно считать фичей. Можно другой буквой её обозвать, если хочется. Меток-то на любую букву можно создавать, так что в действительности проблем с ними не бывает. Если записать макрос - уже получается вроде как повесили на клавиши. Можно, конечно, и не на @ вешать. В нормальном режиме клавиши в основном заняты уже и пользовательские команды нормального режима часто имеют вид <Leader><что-то>, где <Leader> - некий символ, по умолчанию - бэкслэш. То есть можно написать Код: nnoremap <Leader>h lbmaf[%"*yv`a | Можно было бы на функциональную клавишу повесить... Короче, дело вкуса. Цитата: скопировать весь блок, выделив только одну закрывающую скобку. | Здесь естественное решение - поставить метку, перейти до парной скобки (%), потом выполнить поиск слова head назад (?) и скопировать. Проще всего сделать так один раз и записать макрос. Если же вешать на клавишу, может быть что-то такое: Код: nnoremap <buffer> <Leader>q ma%?head<CR>yv`a | Здесь <CR>, как нетрудно понять, символизирует конец строки. А волшебное слово <buffer> означает, что определение действует только в текущем буфере. Кстати, фокус. Это команду можно не перепечатывать себе в командную строку. Можно просто скопировать из браузера в системный буфер, а в командной строке вима сделать :@* Это выполнит содержимое регистра * (стандартного буфера как раз). Функции здесь писать, мне кажется, оверкилл. Лично у меня так: когда работаешь, записываешь макросы в основном (совершенно рутинная операция), а функции начинаешь писать, когда охота заняться программированием вима вместо того, чтобы делать дело. Лезешь в справку, вспоминаешь стандартные функции... Но может я напишу, просто ради иллюстрации. Популяризация вима - хорошее дело. |