Вот ситуация, в которой я нахожусь каждый день:
0 .outer_selector {
1
2 .inner_selector {
3 margin: 0;
4 padding: 0;
5
6 input { display: none; }
7 }
8
9 }
Теперь я хочу вырезать и вставить .inner_selector другом месте. Как мне это сделать? Я не могу найти способ быстро удалить логический блок .inner_selector с окружающими его пробелами; то есть эквивалент dap но для этого блока с разделителями-скобками. Вот различные идеи, в порядке возрастания скованности. (Отображения ai и ii осуществляются через плагин vim-indent-obj .)
3Gdai. Это почти работает, но оставляет закрывающую скобку для блока.inner_selectorгде он находится.2Gdai. Не хорошо; это удаляет весь блок.outer_selector.2Gdii. Это удаляет правильный блок, но не окружающий пробел (т. Е. Эквивалентdipвместоdap).2Gf{d%. Перейти к{с помощьюf{, удалить в соответствующую фигурную скобку (d%). Это удаляет текст из фигурной скобки в строке 2 до соответствующей ему фигурной скобки, но оставляет текст «.inner_selector».2Gf{v%okd. Начинается так же, как (4), затем перейдите к началу выделенного текста (o), растяните на одну строку вверх (k) и удалите (d). То же, что (3) выше.3Gvaikojjd. Выделите текст, выберите одну дополнительную строку вверх (k), перейдите к нижней части выбранной области (o), выберите две строки вниз (jj), удалите (d). Это работает.
Я могу определить раскладку клавиатуры для последнего и покончить с этим, но прежде чем я это сделаю, я хочу быть уверен, что здесь что-то не пропущено. Поскольку это такая распространенная конструкция кода во многих языках, я удивлен, что так трудно трактовать text { /* multiple lines /* } как текстовый объект или что для него нет плагина.
