Чи можна зробити греп в vim, щоб він був умовно чутливим до регістру?


2

Коли я здійснюю пошук у документі /або ?виконує пошук з урахуванням регістру, коли велика літера починається в шаблоні пошуку через поєднання параметрів ignorecaseта smartcase. Чи є спосіб імітувати цю поведінку за допомогою :grepкоманди без необхідності -iщоразу вручну додавати налаштування вручну?


Я сумніваюся в цьому, так як команда використовує зовнішній інструмент , і AFAIK в інструмент сам по собі не має такої можливості. :grepgrepgrep
Кайл Странд

Це не виключає можливості фантазійного рішення vimscript, яке робить щось, щоб перевірити аргумент та визначити випадок його, але я не знаю, чи це можливо чи як це зробити
Alex

Оскільки це може бути корисним і за межами Vim, кращим рішенням може бути (1) зробити функцію bash (або zsh або будь-яку іншу), яка виконує це, (2) використовувати shellcmdflagопцію для завантаження функції (я не дуже звичайно, як це зробити, але я впевнений, що для цього є варіант) і (3) викликати цю функцію замість основної grep. (Або ви можете просто псевдоніму grepвашій новій функції, яка дзвонить \grep.) Якщо ви все-таки зробите це, дайте мені знати - мені було б цікаво додати його до моїх особистих налаштувань, але це не досить високий пріоритет для мене на момент.
Кайл Странд

Я б запропонував вам перевірити ag, що є надшвидким та зручнішим у використанні заміни grep. Він має функцію, яку ви хочете, серед багатьох інших. Звичайно, є плагін для плавної інтеграції з Vim.
taketwo

Відповіді:


5

Можливо, вам буде цікаво ознайомитись з :vimgrepможливістю використання регулярних виразів Vim для відповідності шаблонів. Сюди входить вшанування 'ignorecase'та пов'язані з цим варіанти, якщо ви прямо не вказали інше. Зокрема, якщо " \c" з'являється у шаблоні, це робить випадок ігнорування шаблону, а " \C" примушує відповідність випадків. Подивись на:

:help :vimgrep
:help /\c

(Так, похила перекидання вперед і назад має бути частиною команди: help.)

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