Удалить переменную из нескольких строк VIM

Я хочу удалить все строки, в которые записано linksData.

const linksData = [                                                                                     
    {                                                                                                     
      title: 'Docs',                                                                                      
      caption: 'quasar.dev',                                                                              
      icon: 'school',                                                                                     
      link: 'https://quasar.dev'                                                                          
    },                                                                                                    
    {                                                                                                     
      title: 'Github',                                                                                    
      caption: 'github.com/quasarframework',                                                              
      icon: 'code',                                                                                       
      link: 'https://github.com/quasarframework'                                                          
    }
]

Я использую фреймворк Vue, возможно, это поможет.


person Oprea Catalin    schedule 28.08.2020    source источник


Ответы (3)


Основываясь на ответе @SergioAraujo

:g/linksData/norm d%

кажется, что ты делаешь то, что хочешь.

person m_mlvx    schedule 30.08.2020
comment
Иногда несбалансированные пары могут существовать в строках или комментариях. - person Light; 30.08.2020
comment
@Light, вы правы, но в моем случае пары были сбалансированы. Решение сработало! Спасибо :) Я только что сделал d% с курсором на первой строке. - person Oprea Catalin; 30.08.2020
comment
@m_mlvx не могли бы вы уточнить d%., я пробовал в своем редакторе vim, он удаляет все содержимое после курсора, если в текущей строке присутствуют какие-либо пары литералов. Но вы можете указать здесь правильное значение%. Благодарность :) - person girish; 02.10.2020
comment
@girish - Вы можете привести пример буквальных пар, присутствующих в текущей строке? (d% в моем ответе - удалить текст в строках с совпадающими парами [].) - person m_mlvx; 05.10.2020
comment
@m_mlvx, например: {} () [] ... (не работает для аннотаций) (может быть, буквальные пары могут быть неточными словами), но можете ли вы объяснить философию d% в vim здесь - person girish; 06.10.2020
comment
Я все еще не понимаю часть буквальных пар, но d% просто. % находит совпадающие пары знаков препинания вложения, которые я для краткости назову ep. Это (), {} и []. (Хорошо это или плохо, ep не включает кавычки.) И d удаляет. Итак, d% удалит текст от курсора до противоположного совпадающего ep. Попробуйте это в Vim - используйте d% (и отмените с помощью u) в различных местах этого текста, чтобы лучше понять, как это работает: Amazingly, {the [quick brown fox] jumps [over (the lazy) dog].} Wow. - person m_mlvx; 08.10.2020

Предположим, что ваш курсор находится на первой строке, попробуйте:

f[di]

Тогда у вас будет:

const linksData = []
person Kent    schedule 28.08.2020
comment
Ваш ответ полезен, но я стараюсь удалить все строки. (включая const linksData = []) - person Oprea Catalin; 29.08.2020

Если у вас много ссылок, вы можете использовать:

:g/linksData/norm f[di[kgJ

После удаления содержимого [] вы присоединитесь к строкам без пробелов между ними, поэтому мы поднимаемся на одну строку с k и используем gJ вместо j.

person SergioAraujo    schedule 29.08.2020
comment
Попробовал и получил const linksData = [], решение @Kent более стильное. - person Oprea Catalin; 30.08.2020