Коли використовувати: grep і: vimgrep in vim?


17

In vim :makeдозволяє легко створювати та виправляти помилки, :grepі так :vimgrepсебе вести :make. Але навіщо вам ці дві команди? Чому б не просто знайти шаблон і просто натиснути n? Які їх переваги перед просто пошуком?

Відповіді:


17

Як кажуть доктори:

Vim has two ways to find matches for a pattern: Internal and external.

Коротше кажучи, :vimgrepвикористовує механізм grep Vim для читання та пошуку у файлах. :grepвикористовує зовнішні команди для досягнення тієї ж роботи.

/Пошук для поточного буфера тільки, в той час як :[vim]grepпошук за шаблоном файлів, що дозволяє шукати в весь проект відразу.

Перегляньте :h grepдля отримання додаткової інформації.


4

/?шукати тільки поточний буфер , але :grepі :vimgrepприймати довільні файли / шаблони / кульки в якості аргументів.


4

Одна з переваг :[vim]grepнад /?тим, що результати потрапляють до списку швидких виправлень (або списку місцеположень, якщо ви використовуєте :l[vim]grep), це означає, що ви можете скласти список усіх збігів, які використовують :cl. Потім ви можете використовувати число, щоб перейти безпосередньо до потрібного результату зі списку.

Це також означає, що ви можете використовувати ту саму команду для пошуку в поточному буфері, :[vim]grep pattern %як і для пошуку всієї бази коду, :[vim]grep pattern pathтак що в ній є приємна симетрія.

Додатково до цього ви можете розгалужуватися та використовувати Silver Surfer / Ripgrep, щоб отримати дуже потужний пошук. Вони можуть бути відображені в :[vim]grepкоманді.


0

Я бачу 3 основні переваги

  1. Використовуйте послідовний regexдвигун / синтаксис: Використання :grep/vimgrepдозволяє визначити a grepprg, яке можна визначити і grep/ack/agт. Д. За допомогою цього ви можете шукати поточний буфер або кілька буферів / файлів, використовуючи послідовний regexмеханізм. З іншого боку, якщо ви використовуєте опцію vim/pattern , ви застрягли в двигуні регулярних виразів vim за замовчуванням, який має інший синтаксис порівняно з extended regular expressionсинтаксисом. Отже, щоразу, коли вам доведеться шукати вираз, вам доведеться подумати / запам'ятати, чи слід вживати \)чи просто )та інші відмінності. Це може дуже дратувати ( /programming/3864467/whats-the-difference-bet between-vim-regex-and-normal- regex )

  2. vimgrep заповнює список виправлень / місцеположення : використання :grep/vimgrepдозволяє заповнити список пошуку. ( https://medium.com/@lakshmankumar12/quickfix-and-location-list-in-vim-ca0292ac894d ).

    Якщо ви хочете скористатися списком місцеположень, ви можете скористатися ]qярликом для навігації по ньому, якщо у вас є непідключений плагін Tim-Popes ( https://github.com/tpope/vim-unimpaired )

  3. складні пошуки під час vim : зазвичай, якщо вам доведеться робити складні пошуки, можливо, доведеться використовувати командний рядок. Однак якщо ви greprgправильно визначитесь і використовуєте таку команду, як [1]

    : vim / pattern1 / find . -type f

    Ви можете робити дуже складні пошуки та відображати результати пошуку у вашому location listабо quickfix list.

[1] http://vimcasts.org/episodes/search-multiple-files-with-vimgrep/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.