методы в мерзавце grep и энергии

Примечание: отмеченный как общественная Wiki

Я кодирую в энергии.

Я использую мерзавца; и любите мерзавца grep.

У кого-либо есть особенно хороший набор методов / сценарии для использования мерзавца grep в энергии?

Читатели: ответы upvote, включающие энергию + мерзавец grep; ответы downvote, включающие нередакторы Vim и редакторов, обращающихся к внешним инструментам помимо мерзавца grep.

15
задан 2 revs, 2 users 94% 19 July 2012 в 16:04
поделиться

4 ответа

У вас есть это расширение VIM (создано Тимо Хирвонен еще в 2006 году!)

git grep выполняет поиск шаблона в выбранном в данный момент ветка git.
Это добавляет команду : G для запуска команды из Vim.

func GitGrep(...)
  let save = &grepprg
  set grepprg=git\ grep\ -n\ $*
  let s = 'grep'
  for i in a:000
    let s = s . ' ' . i
  endfor
  exe s
  let &grepprg = save
endfun
command -nargs=? G call GitGrep(<f-args>)

Вы также можете ограничить поиск файлами, соответствующими шаблону (git выполнит сопоставление с шаблоном):

:G <pattern> -- '*.c'

Дополнения:

Следующее дополнение будет запускать git grep для слова под курсором, когда Ctrl + X G нажата.

func GitGrepWord()
  normal! "zyiw
  call GitGrep('-w -e ', getreg('z'))
endf
nmap <C-x>G :call GitGrepWord()<CR>
7
ответ дан 1 December 2019 в 03:52
поделиться

Все еще в том же наборе инкапсуляции Git (включая git grep ]) у вас есть:

MinSCM: абстрактный интерфейс для Mercurial / Git / Bazaar , из Takeshi NISHIDA :
См. его Git репо

альтернативный текст http://bitbucket.org/ns9tks/vim-minscm/wiki/log.png

:MinSCMGrep[!]                  (Default mapping: \sg)

Ищет указанный шаблон и создает | quickfix | список.

Используемые команды SCM ~

  • hg: grep -n
  • git: grep -n -e
  • bzr: (недоступно)
2
ответ дан 1 December 2019 в 03:52
поделиться

Проверьте также fugitive.vim - Обертка Git настолько классная, что должна быть незаконной
(это его официальный тег - line;)), из Тим Поуп (см. проект репозитория Git ):

Он включает, среди многих других команд, одну для git grep :

call s:command("-bar -bang -nargs=? -complete=customlist,s:EditComplete Ggrep :execute s:Grep(<bang>0,<q-args>)")
call s:command("-bar -bang -nargs=* -complete=customlist,s:EditComplete Glog :execute s:Log('grep<bang>',<f-args>)")

function! s:Grep(bang,arg) abort
  let grepprg = &grepprg
  let grepformat = &grepformat
  let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd ' : 'cd '
  let dir = getcwd()
  try
    execute cd.'`=s:repo().tree()`'
    let &grepprg = s:repo().git_command('--no-pager', 'grep', '-n')
    let &grepformat = '%f:%l:%m'
    exe 'grep! '.a:arg
    let list = getqflist()
    for entry in list
      if bufname(entry.bufnr) =~ ':'
        let entry.filename = s:repo().translate(bufname(entry.bufnr))
        unlet! entry.bufnr
      elseif a:arg =~# '\%(^\| \)--cached\>'
        let entry.filename = s:repo().translate(':0:'.bufname(entry.bufnr))
        unlet! entry.bufnr
      endif
    endfor
    call setqflist(list,'r')
    if !a:bang && !empty(list)
      return 'cfirst'
    else
      return ''
    endif
  finally
    let &grepprg = grepprg
    let &grepformat = grepformat
    execute cd.'`=dir`'
  endtry
endfunction
9
ответ дан 1 December 2019 в 03:52
поделиться

У вас также есть этот набор команд vim, из проекта Git git grep vim, от tjennings.
(вдохновленный ack.vim : Plugin for the Perl module / CLI script 'ack' от Miles Sterrett)

let g:gitgrepprg="git\\ grep\\ -n"

function! GitGrep(args)
    let grepprg_bak=&grepprg
    exec "set grepprg=" . g:gitgrepprg
    execute "silent! grep " . a:args
    botright copen
    let &grepprg=grepprg_bak
    exec "redraw!"
endfunction

function! GitGrepAdd(args)
    let grepprg_bak=&grepprg
    exec "set grepprg=" . g:gitgrepprg
    execute "silent! grepadd " . a:args
    botright copen
    let &grepprg=grepprg_bak
    exec "redraw!"
endfunction

function! LGitGrep(args)
    let grepprg_bak=&grepprg
    exec "set grepprg=" . g:gitgrepprg
    execute "silent! lgrep " . a:args
    botright lopen
    let &grepprg=grepprg_bak
    exec "redraw!"
endfunction

function! LGitGrepAdd(args)
    let grepprg_bak=&grepprg
    exec "set grepprg=" . g:gitgrepprg
    execute "silent! lgrepadd " . a:args
    botright lopen
    let &grepprg=grepprg_bak
    exec "redraw!"
endfunction

command! -nargs=* -complete=file GitGrep call GitGrep(<q-args>)
command! -nargs=* -complete=file GitGrepAdd call GitGrepAdd(<q-args>)
command! -nargs=* -complete=file LGitGrep call LGitGrep(<q-args>)
command! -nargs=* -complete=file LGitGrepAdd call LGitGrepAdd(<q-args>)
1
ответ дан 1 December 2019 в 03:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: