Как я могу рассматривать логический блок как текстовый объект в Vim?

вот ситуация, в которой я нахожусь каждый день:

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 но для этого блока с разделителями скобок. Здесь представлены различные идеи, в порядке возрастания gnarliness. (ai и ii отображения с помощью vim-indent-obj плагин.)

  1. 3Gdai. Это почти работает, но оставляет закрывающую скобку для .inner_selector блок, где он находится.

  2. 2Gdai. Ничего хорошего; это удаляет все .outer_selector блок.

  3. 2Gdii. Это удаляет правильный блок, но не окружающие пробелы (т. е., эквивалент dip вместо dap).

  4. 2Gf{d%. Перейти к { С f{, удалить, чтобы соответствующая скобка (d%). Это удаляет текст от скобки в строке 2 ее парную скобку, но оставляет текст ".inner_selector".

  5. 2Gf{v%okd. Начинается так же, как (4), а затем перейти к началу выбранного текста (o), распространяются на одну строку вверх (k), и удалить (d). То же, что и в пункте 3 выше.

  6. 3Gvaikojjd. Выделите текст, выделите одну дополнительную строку вверх (k), перейти к нижней части выделенной области (o), выберите две линии вниз (jj), удалить (d). Эта работа.

я могу определить отображение клавиатуры для последнего и сделать с ним, но прежде чем я это сделаю, я хочу быть уверенным, что я не пропущу что-то здесь. Поскольку это такая общая конструкция кода на многих языках, я удивлен, что ее так трудно лечить text { /* multiple lines /* } как текстовый объект, или что для него нет плагина.

19
задан Sasgorilla
01.03.2023 22:51 Количество просмотров материала 2587
Распечатать страницу

1 ответ

есть текстовый объект для фигурных скобок, это B или { или }.

если вы идете к пробелу в .outer-selector но .inner-selector вы можете увидеть его выбрать все с Vi{ выбрать все, что внутри .outer-selector фигурные скобки.

я также могу ударить только .inner-selector запчасти управлением Vi{ внутри .inner-selector, а затем нажать V снова заставить его взять все полные строки. Это не даст вам пробел вокруг .inner-selector но Я подумал, что это тоже может быть интересно.

1
отвечен Camilo Payan 2023-03-03 06:39

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх