mirror of
				https://github.com/amix/vimrc
				synced 2025-10-31 14:43:35 +08:00 
			
		
		
		
	Removed ack.vim
This commit is contained in:
		
							
								
								
									
										1
									
								
								sources_non_forked/ack.vim/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								sources_non_forked/ack.vim/.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1 +0,0 @@ | ||||
| tags | ||||
| @ -1,89 +0,0 @@ | ||||
| ack.vim is distributed under the same license terms as Vim itself, which you | ||||
| can find in full with `:help license` within Vim, or copied in full herein. | ||||
|  | ||||
| Copyright (c) 2007-2015 Antoine Imbert <antoine.imbert+ackvim@gmail.com> | ||||
|                         and contributors. | ||||
|  | ||||
| Maintainers may be contacted via GitHub Issues at: | ||||
|  | ||||
|    https://github.com/mileszs/ack.vim/issues | ||||
|  | ||||
|  | ||||
| VIM LICENSE | ||||
|  | ||||
| I)  There are no restrictions on distributing unmodified copies of Vim except | ||||
|     that they must include this license text.  You can also distribute | ||||
|     unmodified parts of Vim, likewise unrestricted except that they must | ||||
|     include this license text.  You are also allowed to include executables | ||||
|     that you made from the unmodified Vim sources, plus your own usage | ||||
|     examples and Vim scripts. | ||||
|  | ||||
| II) It is allowed to distribute a modified (or extended) version of Vim, | ||||
|     including executables and/or source code, when the following four | ||||
|     conditions are met: | ||||
|     1) This license text must be included unmodified. | ||||
|     2) The modified Vim must be distributed in one of the following five ways: | ||||
|        a) If you make changes to Vim yourself, you must clearly describe in | ||||
| 	  the distribution how to contact you.  When the maintainer asks you | ||||
| 	  (in any way) for a copy of the modified Vim you distributed, you | ||||
| 	  must make your changes, including source code, available to the | ||||
| 	  maintainer without fee.  The maintainer reserves the right to | ||||
| 	  include your changes in the official version of Vim.  What the | ||||
| 	  maintainer will do with your changes and under what license they | ||||
| 	  will be distributed is negotiable.  If there has been no negotiation | ||||
| 	  then this license, or a later version, also applies to your changes. | ||||
| 	  The current maintainer is Bram Moolenaar <Bram@vim.org>.  If this | ||||
| 	  changes it will be announced in appropriate places (most likely | ||||
| 	  vim.sf.net, www.vim.org and/or comp.editors).  When it is completely | ||||
| 	  impossible to contact the maintainer, the obligation to send him | ||||
| 	  your changes ceases.  Once the maintainer has confirmed that he has | ||||
| 	  received your changes they will not have to be sent again. | ||||
|        b) If you have received a modified Vim that was distributed as | ||||
| 	  mentioned under a) you are allowed to further distribute it | ||||
| 	  unmodified, as mentioned at I).  If you make additional changes the | ||||
| 	  text under a) applies to those changes. | ||||
|        c) Provide all the changes, including source code, with every copy of | ||||
| 	  the modified Vim you distribute.  This may be done in the form of a | ||||
| 	  context diff.  You can choose what license to use for new code you | ||||
| 	  add.  The changes and their license must not restrict others from | ||||
| 	  making their own changes to the official version of Vim. | ||||
|        d) When you have a modified Vim which includes changes as mentioned | ||||
| 	  under c), you can distribute it without the source code for the | ||||
| 	  changes if the following three conditions are met: | ||||
| 	  - The license that applies to the changes permits you to distribute | ||||
| 	    the changes to the Vim maintainer without fee or restriction, and | ||||
| 	    permits the Vim maintainer to include the changes in the official | ||||
| 	    version of Vim without fee or restriction. | ||||
| 	  - You keep the changes for at least three years after last | ||||
| 	    distributing the corresponding modified Vim.  When the maintainer | ||||
| 	    or someone who you distributed the modified Vim to asks you (in | ||||
| 	    any way) for the changes within this period, you must make them | ||||
| 	    available to him. | ||||
| 	  - You clearly describe in the distribution how to contact you.  This | ||||
| 	    contact information must remain valid for at least three years | ||||
| 	    after last distributing the corresponding modified Vim, or as long | ||||
| 	    as possible. | ||||
|        e) When the GNU General Public License (GPL) applies to the changes, | ||||
| 	  you can distribute the modified Vim under the GNU GPL version 2 or | ||||
| 	  any later version. | ||||
|     3) A message must be added, at least in the output of the ":version" | ||||
|        command and in the intro screen, such that the user of the modified Vim | ||||
|        is able to see that it was modified.  When distributing as mentioned | ||||
|        under 2)e) adding the message is only required for as far as this does | ||||
|        not conflict with the license used for the changes. | ||||
|     4) The contact information as required under 2)a) and 2)d) must not be | ||||
|        removed or changed, except that the person himself can make | ||||
|        corrections. | ||||
|  | ||||
| III) If you distribute a modified version of Vim, you are encouraged to use | ||||
|      the Vim license for your changes and make them available to the | ||||
|      maintainer, including the source code.  The preferred way to do this is | ||||
|      by e-mail or by uploading the files to a server and e-mailing the URL. | ||||
|      If the number of changes is small (e.g., a modified Makefile) e-mailing a | ||||
|      context diff will do.  The e-mail address to be used is | ||||
|      <maintainer@vim.org> | ||||
|  | ||||
| IV)  It is not allowed to remove this license from the distribution of the Vim | ||||
|      sources, parts of it or from a modified version.  You may use this | ||||
|      license for previous Vim releases instead of the license that they came | ||||
|      with, at your option. | ||||
| @ -1,161 +0,0 @@ | ||||
| # ack.vim | ||||
|  | ||||
| Run your favorite search tool from Vim, with an enhanced results list. | ||||
|  | ||||
| This plugin was designed as a Vim frontend for the Perl module [App::Ack]. Ack | ||||
| can be used as a replacement for 99% of the uses of _grep_. The plugin allows | ||||
| you to run ack from Vim, and shows the results in a split window. | ||||
|  | ||||
| But here's a little secret for the Vim-seasoned: it's just a light wrapper for | ||||
| Vim's [grepprg] and the [quickfix] window for match results. This makes it easy | ||||
| to integrate with your own Vim configuration and use existing knowledge of core | ||||
| features. It also means the plugin is flexible to use with other search tools. | ||||
|  | ||||
| [App::Ack]: http://search.cpan.org/~petdance/ack/ack | ||||
| [grepprg]: http://vimdoc.sourceforge.net/htmldoc/options.html#'grepprg' | ||||
| [quickfix]: http://vimdoc.sourceforge.net/htmldoc/quickfix.html#quickfix | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
| ### Ack | ||||
|  | ||||
| You will need ack (>= 2.0), of course. To install it follow the | ||||
| [manual](http://beyondgrep.com/install/). | ||||
|  | ||||
| ### The Plugin | ||||
|  | ||||
| It is recommended to use one of the popular plugin managers for Vim. There are | ||||
| many and you probably already have a preferred one, but a few examples for your | ||||
| copy-and-paste convenience: | ||||
|  | ||||
| #### Pathogen | ||||
|  | ||||
|     $ git clone https://github.com/mileszs/ack.vim.git ~/.vim/bundle/ack.vim | ||||
|  | ||||
| #### Vundle | ||||
|  | ||||
| ```vim | ||||
| Plugin 'mileszs/ack.vim' | ||||
| ``` | ||||
|  | ||||
| #### NeoBundle | ||||
|  | ||||
| ```vim | ||||
| NeoBundle 'mileszs/ack.vim' | ||||
| ``` | ||||
|  | ||||
| #### Manual (not recommended) | ||||
|  | ||||
| [Download][releases] the plugin and extract it in `~/.vim/` (or | ||||
| `%PROGRAMFILES%/Vim/vimfiles` on Windows). | ||||
|  | ||||
| [zipball]: https://github.com/mileszs/ack.vim/archive/master.zip | ||||
|  | ||||
| ## Usage | ||||
|  | ||||
|     :Ack [options] {pattern} [{directories}] | ||||
|  | ||||
| Search recursively in `{directories}` (which defaults to the current directory) | ||||
| for the `{pattern}`. | ||||
|  | ||||
| Files containing the search term will be listed in the quickfix window, along | ||||
| with the line number of the occurrence, once for each occurrence. `<Enter>` on | ||||
| a line in this window will open the file, and place the cursor on the matching | ||||
| line. | ||||
|  | ||||
| Just like where you use `:grep`, `:grepadd`, `:lgrep`, and :`lgrepadd`, you can | ||||
| use `:Ack`, `:AckAdd`, `:LAck`, and `:LAckAdd` respectively. (See `:help Ack` | ||||
| after installing, or [`doc/ack.txt`][doc] in the repo, for more information.) | ||||
|  | ||||
| For more ack help see [ack documentation](http://beyondgrep.com/documentation/). | ||||
|  | ||||
| [doc]: https://github.com/mileszs/ack.vim/blob/master/doc/ack.txt | ||||
|  | ||||
| ### Keyboard Shortcuts | ||||
|  | ||||
| The quickfix results window is augmented with these convenience mappings: | ||||
|  | ||||
|     ?    a quick summary of these keys, repeat to close | ||||
|     o    to open (same as Enter) | ||||
|     O    to open and close the quickfix window | ||||
|     go   to preview file, open but maintain focus on ack.vim results | ||||
|     t    to open in new tab | ||||
|     T    to open in new tab without moving to it | ||||
|     h    to open in horizontal split | ||||
|     H    to open in horizontal split, keeping focus on the results | ||||
|     v    to open in vertical split | ||||
|     gv   to open in vertical split, keeping focus on the results | ||||
|     q    to close the quickfix window | ||||
|  | ||||
| ### Gotchas | ||||
|  | ||||
| Some characters have special meaning, and need to be escaped in your search | ||||
| pattern. For instance, `#`. You need to escape it with `:Ack '\\\#define | ||||
| foo'` to search for '#define foo'. See [issue #5]. | ||||
|  | ||||
| [issue #5]: https://github.com/mileszs/ack.vim/issues/5 | ||||
|  | ||||
| ## Possibly FAQ | ||||
|  | ||||
| #### Can I use `ag` ([The Silver Searcher]) with this? | ||||
|  | ||||
| Absolutely, and probably other tools if their output is similar or you can | ||||
| write a pattern match for it--just set `g:ackprg`. If you like, you can fall | ||||
| back to Ack in case you use your vimrc on a system without Ag available: | ||||
|  | ||||
| ```vim | ||||
| if executable('ag') | ||||
|   let g:ackprg = 'ag --vimgrep' | ||||
| endif | ||||
| ``` | ||||
|  | ||||
| Since Ack is quite portable you might check a copy of it into your dotfiles | ||||
| repository in `~/bin` so you'll nearly always have it available. | ||||
|  | ||||
| #### What's the difference from ag.vim? | ||||
|  | ||||
| Well... not a lot really. | ||||
|  | ||||
| Present maintainer, yours truly, [kind of wishes they never forked][sadface], | ||||
| contributes to both, and wouldn't mind seeing them merged again. ag.vim got a | ||||
| nice code clean-up (which ack.vim is now hopefully getting), and ack.vim picked | ||||
| up a few features that haven't made their way to ag.vim, like `:AckWindow`, | ||||
| optional background search execution with [vim-dispatch], and auto-previewing. | ||||
|  | ||||
| #### I don't want to jump to the first result automatically. #### | ||||
|  | ||||
| Use `:Ack!`, with bang. If you want this behavior most of the time, you might | ||||
| like an abbreviation or mapping in your personal config, something like these: | ||||
|  | ||||
| ```vim | ||||
| cnoreabbrev Ack Ack! | ||||
| nnoremap <Leader>a :Ack!<Space> | ||||
| ``` | ||||
|  | ||||
| Most of the `:[L]Ack*` commands support this. Note that this behavior follows | ||||
| the convention of Vim's built-in `:grep` and `:make` commands. | ||||
|  | ||||
| [The Silver Searcher]: https://github.com/ggreer/the_silver_searcher | ||||
| [sadface]: https://github.com/mileszs/ack.vim/commit/d97090fb502d40229e6976dfec0e06636ba227d5#commitcomment-5771145 | ||||
|  | ||||
| ## Changelog | ||||
|  | ||||
| Please see [the Github releases page][releases]. | ||||
|  | ||||
| ## Credits | ||||
|  | ||||
| This plugin is derived from Antoine Imbert's blog post [Ack and Vim | ||||
| Integration][] (in particular, the function in the update to the post). [Miles | ||||
| Sterrett][mileszs] packaged it up as a plugin and documented it in Vim's help | ||||
| format, and since then [many contributors][contributors] have submitted | ||||
| enhancements and fixes. | ||||
|  | ||||
| And of course, where would we be without [Ack]. And, you know, Vim. | ||||
|  | ||||
| [Ack and Vim Integration]: http://blog.ant0ine.com/typepad/2007/03/ack-and-vim-integration.html | ||||
| [mileszs]: https://github.com/mileszs | ||||
| [contributors]: https://github.com/mileszs/ack.vim/graphs/contributors | ||||
| [Ack]: http://beyondgrep.com/ | ||||
|  | ||||
| [vim-dispatch]: https://github.com/tpope/vim-dispatch | ||||
| [releases]: https://github.com/mileszs/ack.vim/releases | ||||
| @ -1,246 +0,0 @@ | ||||
| if exists('g:autoloaded_ack') || &cp | ||||
|   finish | ||||
| endif | ||||
|  | ||||
| if exists('g:ack_use_dispatch') | ||||
|   if g:ack_use_dispatch && !exists(':Dispatch') | ||||
|     call s:Warn('Dispatch not loaded! Falling back to g:ack_use_dispatch = 0.') | ||||
|     let g:ack_use_dispatch = 0 | ||||
|   endif | ||||
| else | ||||
|   let g:ack_use_dispatch = 0 | ||||
| endif | ||||
|  | ||||
| "----------------------------------------------------------------------------- | ||||
| " Public API | ||||
| "----------------------------------------------------------------------------- | ||||
|  | ||||
| function! ack#Ack(cmd, args) "{{{ | ||||
|   call s:Init(a:cmd) | ||||
|   redraw | ||||
|  | ||||
|   " Local values that we'll temporarily set as options when searching | ||||
|   let l:grepprg = g:ackprg | ||||
|   let l:grepformat = '%f:%l:%c:%m,%f:%l:%m'  " Include column number | ||||
|  | ||||
|   " Strip some options that are meaningless for path search and set match | ||||
|   " format accordingly. | ||||
|   if s:SearchingFilepaths() | ||||
|     let l:grepprg = substitute(l:grepprg, '-H\|--column', '', 'g') | ||||
|     let l:grepformat = '%f' | ||||
|   endif | ||||
|  | ||||
|   " Check user policy for blank searches | ||||
|   if empty(a:args) | ||||
|     if !g:ack_use_cword_for_empty_search | ||||
|       echo "No regular expression found." | ||||
|       return | ||||
|     endif | ||||
|   endif | ||||
|  | ||||
|   " If no pattern is provided, search for the word under the cursor | ||||
|   let l:grepargs = empty(a:args) ? expand("<cword>") : a:args . join(a:000, ' ') | ||||
|  | ||||
|   "Bypass search if cursor is on blank string | ||||
|   if l:grepargs == "" | ||||
|     echo "No regular expression found." | ||||
|     return | ||||
|   endif | ||||
|  | ||||
|   " NOTE: we escape special chars, but not everything using shellescape to | ||||
|   "       allow for passing arguments etc | ||||
|   let l:escaped_args = escape(l:grepargs, '|#%') | ||||
|  | ||||
|   echo "Searching ..." | ||||
|  | ||||
|   if g:ack_use_dispatch | ||||
|     call s:SearchWithDispatch(l:grepprg, l:escaped_args, l:grepformat) | ||||
|   else | ||||
|     call s:SearchWithGrep(a:cmd, l:grepprg, l:escaped_args, l:grepformat) | ||||
|   endif | ||||
|  | ||||
|   " Dispatch has no callback mechanism currently, we just have to display the | ||||
|   " list window early and wait for it to populate :-/ | ||||
|   call ack#ShowResults() | ||||
|   call s:Highlight(l:grepargs) | ||||
| endfunction "}}} | ||||
|  | ||||
| function! ack#AckFromSearch(cmd, args) "{{{ | ||||
|   let search = getreg('/') | ||||
|   " translate vim regular expression to perl regular expression. | ||||
|   let search = substitute(search, '\(\\<\|\\>\)', '\\b', 'g') | ||||
|   call ack#Ack(a:cmd, '"' . search . '" ' . a:args) | ||||
| endfunction "}}} | ||||
|  | ||||
| function! ack#AckHelp(cmd, args) "{{{ | ||||
|   let args = a:args . ' ' . s:GetDocLocations() | ||||
|   call ack#Ack(a:cmd, args) | ||||
| endfunction "}}} | ||||
|  | ||||
| function! ack#AckWindow(cmd, args) "{{{ | ||||
|   let files = tabpagebuflist() | ||||
|  | ||||
|   " remove duplicated filenames (files appearing in more than one window) | ||||
|   let files = filter(copy(sort(files)), 'index(files,v:val,v:key+1)==-1') | ||||
|   call map(files, "bufname(v:val)") | ||||
|  | ||||
|   " remove unnamed buffers as quickfix (empty strings before shellescape) | ||||
|   call filter(files, 'v:val != ""') | ||||
|  | ||||
|   " expand to full path (avoid problems with cd/lcd in au QuickFixCmdPre) | ||||
|   let files = map(files, "shellescape(fnamemodify(v:val, ':p'))") | ||||
|   let args = a:args . ' ' . join(files) | ||||
|  | ||||
|   call ack#Ack(a:cmd, args) | ||||
| endfunction "}}} | ||||
|  | ||||
| function! ack#ShowResults() "{{{ | ||||
|   let l:handler = s:UsingLocList() ? g:ack_lhandler : g:ack_qhandler | ||||
|   execute l:handler | ||||
|   call s:ApplyMappings() | ||||
|   redraw! | ||||
| endfunction "}}} | ||||
|  | ||||
| "----------------------------------------------------------------------------- | ||||
| " Private API | ||||
| "----------------------------------------------------------------------------- | ||||
|  | ||||
| function! s:ApplyMappings() "{{{ | ||||
|   if !s:UsingListMappings() || &filetype != 'qf' | ||||
|     return | ||||
|   endif | ||||
|  | ||||
|   let l:wintype = s:UsingLocList() ? 'l' : 'c' | ||||
|   let l:closemap = ':' . l:wintype . 'close<CR>' | ||||
|   let g:ack_mappings.q = l:closemap | ||||
|  | ||||
|   nnoremap <buffer> <silent> ? :call <SID>QuickHelp()<CR> | ||||
|  | ||||
|   if g:ack_autoclose | ||||
|     " We just map the 'go' and 'gv' mappings to close on autoclose, wtf? | ||||
|     for key_map in items(g:ack_mappings) | ||||
|       execute printf("nnoremap <buffer> <silent> %s %s", get(key_map, 0), get(key_map, 1) . l:closemap) | ||||
|     endfor | ||||
|  | ||||
|     execute "nnoremap <buffer> <silent> <CR> <CR>" . l:closemap | ||||
|   else | ||||
|     for key_map in items(g:ack_mappings) | ||||
|       execute printf("nnoremap <buffer> <silent> %s %s", get(key_map, 0), get(key_map, 1)) | ||||
|     endfor | ||||
|   endif | ||||
|  | ||||
|   if exists("g:ackpreview") " if auto preview in on, remap j and k keys | ||||
|     nnoremap <buffer> <silent> j j<CR><C-W><C-W> | ||||
|     nnoremap <buffer> <silent> k k<CR><C-W><C-W> | ||||
|     nmap <buffer> <silent> <Down> j | ||||
|     nmap <buffer> <silent> <Up> k | ||||
|   endif | ||||
| endfunction "}}} | ||||
|  | ||||
| function! s:GetDocLocations() "{{{ | ||||
|   let dp = '' | ||||
|   for p in split(&rtp, ',') | ||||
|     let p = p . '/doc/' | ||||
|     if isdirectory(p) | ||||
|       let dp = p . '*.txt ' . dp | ||||
|     endif | ||||
|   endfor | ||||
|  | ||||
|   return dp | ||||
| endfunction "}}} | ||||
|  | ||||
| function! s:Highlight(args) "{{{ | ||||
|   if !g:ackhighlight | ||||
|     return | ||||
|   endif | ||||
|  | ||||
|   let @/ = matchstr(a:args, "\\v(-)\@<!(\<)\@<=\\w+|['\"]\\zs.{-}\\ze['\"]") | ||||
|   call feedkeys(":let &hlsearch=1 \| echo \<CR>", "n") | ||||
| endfunction "}}} | ||||
|  | ||||
| " Initialize state for an :Ack* or :LAck* search | ||||
| function! s:Init(cmd) "{{{ | ||||
|   let s:searching_filepaths = (a:cmd =~# '-g$') ? 1 : 0 | ||||
|   let s:using_loclist       = (a:cmd =~# '^l') ? 1 : 0 | ||||
|  | ||||
|   if g:ack_use_dispatch && s:using_loclist | ||||
|     call s:Warn('Dispatch does not support location lists! Proceeding with quickfix...') | ||||
|     let s:using_loclist = 0 | ||||
|   endif | ||||
| endfunction "}}} | ||||
|  | ||||
| function! s:QuickHelp() "{{{ | ||||
|   execute 'edit' globpath(&rtp, 'doc/ack_quick_help.txt') | ||||
|  | ||||
|   silent normal gg | ||||
|   setlocal buftype=nofile bufhidden=hide nobuflisted | ||||
|   setlocal nomodifiable noswapfile | ||||
|   setlocal filetype=help | ||||
|   setlocal nonumber norelativenumber nowrap | ||||
|   setlocal foldmethod=diff foldlevel=20 | ||||
|  | ||||
|   nnoremap <buffer> <silent> ? :q!<CR>:call ack#ShowResults()<CR> | ||||
| endfunction "}}} | ||||
|  | ||||
| function! s:SearchWithDispatch(grepprg, grepargs, grepformat) "{{{ | ||||
|   let l:makeprg_bak     = &l:makeprg | ||||
|   let l:errorformat_bak = &l:errorformat | ||||
|  | ||||
|   " We don't execute a :grep command for Dispatch, so add -g here instead | ||||
|   if s:SearchingFilepaths() | ||||
|     let l:grepprg = a:grepprg . ' -g' | ||||
|   else | ||||
|     let l:grepprg = a:grepprg | ||||
|   endif | ||||
|  | ||||
|   try | ||||
|     let &l:makeprg     = l:grepprg . ' ' . a:grepargs | ||||
|     let &l:errorformat = a:grepformat | ||||
|  | ||||
|     Make | ||||
|   finally | ||||
|     let &l:makeprg     = l:makeprg_bak | ||||
|     let &l:errorformat = l:errorformat_bak | ||||
|   endtry | ||||
| endfunction "}}} | ||||
|  | ||||
| function! s:SearchWithGrep(grepcmd, grepprg, grepargs, grepformat) "{{{ | ||||
|   let l:grepprg_bak    = &l:grepprg | ||||
|   let l:grepformat_bak = &grepformat | ||||
|  | ||||
|   try | ||||
|     let &l:grepprg  = a:grepprg | ||||
|     let &grepformat = a:grepformat | ||||
|  | ||||
|     silent execute a:grepcmd a:grepargs | ||||
|   finally | ||||
|     let &l:grepprg  = l:grepprg_bak | ||||
|     let &grepformat = l:grepformat_bak | ||||
|   endtry | ||||
| endfunction "}}} | ||||
|  | ||||
| " Are we finding matching files, not lines? (the -g option -- :AckFile) | ||||
| function! s:SearchingFilepaths() "{{{ | ||||
|   return get(s:, 'searching_filepaths', 0) | ||||
| endfunction "}}} | ||||
|  | ||||
| " Predicate for whether mappings are enabled for list type of current search. | ||||
| function! s:UsingListMappings() "{{{ | ||||
|   if s:UsingLocList() | ||||
|     return g:ack_apply_lmappings | ||||
|   else | ||||
|     return g:ack_apply_qmappings | ||||
|   endif | ||||
| endfunction "}}} | ||||
|  | ||||
| " Were we invoked with a :LAck command? | ||||
| function! s:UsingLocList() "{{{ | ||||
|   return get(s:, 'using_loclist', 0) | ||||
| endfunction "}}} | ||||
|  | ||||
| function! s:Warn(msg) "{{{ | ||||
|   echohl WarningMsg | echomsg 'Ack: ' . a:msg | echohl None | ||||
| endf "}}} | ||||
|  | ||||
| let g:autoloaded_ack = 1 | ||||
| " vim:set et sw=2 ts=2 tw=78 fdm=marker | ||||
| @ -1,315 +0,0 @@ | ||||
| *ack.txt*   Plugin that integrates ack with Vim | ||||
|  | ||||
| ============================================================================== | ||||
| Author:  Antoine Imbert <antoine.imbert+ackvim@gmail.com>         *ack-author* | ||||
| License: Same terms as Vim itself (see |license|) | ||||
|  | ||||
| This plugin is only available if 'compatible' is not set. | ||||
|  | ||||
| {Vi does not have any of this} | ||||
|  | ||||
| ============================================================================== | ||||
| INTRODUCTION                                                             *ack* | ||||
|  | ||||
| This plugin is a front for the Perl module App::Ack.  Ack can be used as a | ||||
| replacement for grep.  This plugin will allow you to run ack from vim, and | ||||
| shows the results in a split window. | ||||
|  | ||||
| :Ack[!] [options] {pattern} [{directory}]                               *:Ack* | ||||
|  | ||||
|     Search recursively in {directory} (which defaults to the current | ||||
|     directory) for the {pattern}.  Behaves just like the |:grep| command, but | ||||
|     will open the |Quickfix| window for you. If [!] is not given the first | ||||
|     occurrence is jumped to. | ||||
|  | ||||
| :AckAdd [options] {pattern} [{directory}]                            *:AckAdd* | ||||
|  | ||||
|     Just like |:Ack|, but instead of making a new list, the matches are | ||||
|     appended to the current |quickfix| list. | ||||
|  | ||||
| :AckFromSearch [{directory}]                                  *:AckFromSearch* | ||||
|  | ||||
|     Just like |:Ack| but the pattern is from previous search. | ||||
|  | ||||
| :LAck [options] {pattern} [{directory}]                                *:LAck* | ||||
|  | ||||
|     Just like |:Ack| but instead of the |quickfix| list, matches are placed in | ||||
|     the current |location-list|. | ||||
|  | ||||
| :LAckAdd [options] {pattern} [{directory}]                          *:LAckAdd* | ||||
|  | ||||
|     Just like |:AckAdd| but instead of the |quickfix| list, matches are added | ||||
|     to the current |location-list| | ||||
|  | ||||
| :AckFile [options] {pattern} [{directory}]                          *:AckFile* | ||||
|  | ||||
|     Search recursively in {directory} (which defaults to the current | ||||
|     directory) for filenames matching the {pattern}.  Behaves just like the | ||||
|     |:grep| command, but will open the |Quickfix| window for you. | ||||
|  | ||||
| :AckHelp[!] [options] {pattern}                                      *:AckHelp* | ||||
|  | ||||
|     Search vim documentation files for the {pattern}.  Behaves just like the | ||||
|     |:Ack| command, but searches only vim documentation .txt files | ||||
|  | ||||
| :LAckHelp [options] {pattern}                                        *:LAckHelp* | ||||
|  | ||||
|     Just like |:AckHelp| but instead of the |quickfix| list, matches are placed | ||||
|     in the current |location-list|. | ||||
|  | ||||
| :AckWindow[!] [options] {pattern}                                 *:AckWindow* | ||||
|  | ||||
|     Search all buffers visible in the screen (current tab page only) files for | ||||
|     the {pattern}. | ||||
|  | ||||
| :LAckWindow [options] {pattern}                                   *:LAckWindow* | ||||
|  | ||||
|     Just like |:AckWindow| but instead of the |quickfix| list, matches are | ||||
|     placed in the current |location-list|. | ||||
|  | ||||
| Files containing the search term will be listed in the split window, along | ||||
| with the line number of the occurrence, once for each occurrence.  <Enter> on | ||||
| a line in this window will open the file, and place the cursor on the matching | ||||
| line. | ||||
|  | ||||
| Note that if you are using Dispatch.vim with |g:ack_use_dispatch|, location | ||||
| lists are not supported, because Dispatch does not support them at this time. | ||||
| `:LAck` versions of commands above will give a warning and proceed to use the | ||||
| quickfix list instead. | ||||
|  | ||||
| See http://beyondgrep.com/ for more information on searching with ack. | ||||
|  | ||||
|  | ||||
| ============================================================================== | ||||
| CONFIGURATION                                              *ack-configuration* | ||||
|  | ||||
|                                                                     *g:ackprg* | ||||
| g:ackprg | ||||
| Default for ubuntu: "ack-grep" | ||||
| Default for other systems: "ack" | ||||
|  | ||||
| Use this option to specify the search command and its default arguments. | ||||
|  | ||||
| Example: | ||||
| > | ||||
|         let g:ackprg = "ag --vimgrep" | ||||
| < | ||||
|                                                        *g:ack_default_options* | ||||
| g:ack_default_options | ||||
| Default: " -s -H --nocolor --nogroup --column" | ||||
|  | ||||
| Use this option to specify the default arguments given to `ack`. This is only | ||||
| used if |g:ackprg| has not been customized from the default--if you are using | ||||
| a custom search program instead of Ack, set your preferred options in | ||||
| |g:ackprg|. | ||||
|  | ||||
| NOTE: This option may be deprecated in the future. ~ | ||||
|  | ||||
| Example: | ||||
| > | ||||
|         let g:ack_default_options = | ||||
|               \ " -s -H --nocolor --nogroup --column --smart-case --follow" | ||||
| < | ||||
|                                                        *g:ack_apply_qmappings* | ||||
| g:ack_apply_qmappings | ||||
| Default: 1 | ||||
|  | ||||
| This option enables mappings on the |quickfix| window. | ||||
|  | ||||
|                                                        *g:ack_apply_lmappings* | ||||
| g:ack_apply_lmappings | ||||
| Default: 1 | ||||
|  | ||||
| This option enables mappings on |location-list| windows. | ||||
|  | ||||
|                                                               *g:ack_mappings* | ||||
| g:ack_mappings | ||||
| Default: { | ||||
|       \ "t": "<C-W><CR><C-W>T", | ||||
|       \ "T": "<C-W><CR><C-W>TgT<C-W>j", | ||||
|       \ "o": "<CR>", | ||||
|       \ "O": "<CR><C-W><C-W>:ccl<CR>", | ||||
|       \ "go": "<CR><C-W>j", | ||||
|       \ "h": "<C-W><CR><C-W>K", | ||||
|       \ "H": "<C-W><CR><C-W>K<C-W>b", | ||||
|       \ "v": "<C-W><CR><C-W>H<C-W>b<C-W>J<C-W>t", | ||||
|       \ "gv": "<C-W><CR><C-W>H<C-W>b<C-W>J" } | ||||
|  | ||||
| This option list all maps create on quickfix/Location list window. | ||||
|  | ||||
| Example, if you want to open the result in the middle of the screen: | ||||
| > | ||||
|         let g:ack_mappings = { "o": "<CR>zz" } | ||||
| < | ||||
|                                                               *g:ack_qhandler* | ||||
| g:ack_qhandler | ||||
| Default: "botright copen" | ||||
|  | ||||
| Command to open the quickview window. | ||||
|  | ||||
| If you want to open a quickview window with 30 lines you can do: | ||||
| > | ||||
|         let g:ack_qhandler = "botright copen 30" | ||||
| < | ||||
|                                                               *g:ack_lhandler* | ||||
| g:ack_lhandler | ||||
| Default: "botright lopen" | ||||
|  | ||||
| Command to open the Location list window. | ||||
|  | ||||
| If you want to open a Location list window with 30 lines you can do: | ||||
| > | ||||
|         let g:ack_lhandler = "botright lopen 30" | ||||
| < | ||||
|                                                               *g:ackhighlight* | ||||
| g:ackhighlight | ||||
| Default: 0 | ||||
|  | ||||
| Use this option to highlight the searched term. | ||||
|  | ||||
| Example: | ||||
| > | ||||
|         let g:ackhighlight = 1 | ||||
| < | ||||
|                                                              *g:ack_autoclose* | ||||
| g:ack_autoclose | ||||
| Default: 0 | ||||
|  | ||||
| Use this option to specify whether to close the quickfix window after | ||||
| using any of the shortcuts. | ||||
|  | ||||
| Example: | ||||
| > | ||||
|         let g:ack_autoclose = 1 | ||||
| < | ||||
|                                                       *g:ack_autofold_results* | ||||
| g:ack_autofold_results | ||||
| Default: 0 | ||||
|  | ||||
| Use this option to fold the results in quickfix by file name. Only the current | ||||
| fold will be open by default and while you press 'j' and 'k' to move between the | ||||
| results if you hit other fold the last one will be closed and the current will | ||||
| be open. | ||||
|  | ||||
| Example: | ||||
| > | ||||
|         let g:ack_autofold_results = 1 | ||||
| < | ||||
|                                                                 *g:ackpreview* | ||||
| g:ackpreview | ||||
| Default: 0 | ||||
|  | ||||
| Use this option to automagically open the file with 'j' or 'k'. | ||||
|  | ||||
| Example: | ||||
| > | ||||
|         let g:ackpreview = 1 | ||||
| < | ||||
|                                                           *g:ack_use_dispatch* | ||||
| g:ack_use_dispatch | ||||
| Default: 0 | ||||
|  | ||||
| Use this option to use vim-dispatch to run searches in the background, with a | ||||
| variety of execution backends for different systems. | ||||
|  | ||||
| Due to limitations in Dispatch at this time, location lists are unsupported | ||||
| and result windows will appear before results are ready. Still, these may be | ||||
| acceptable tradeoffs for very large projects where searches are slow. | ||||
|  | ||||
| Example: | ||||
| > | ||||
|         let g:ack_use_dispatch = 1 | ||||
| < | ||||
|                                              *g:ack_use_cword_for_empty_search* | ||||
| g:ack_use_cword_for_empty_search | ||||
| Default: 1 | ||||
|  | ||||
| Use this option to enable blank searches to run against the word under the | ||||
| cursor. When this option is not set, blank searches will only output an error | ||||
| message. | ||||
|  | ||||
| Example: | ||||
| > | ||||
|         let g:ack_use_cword_for_empty_search = 0 | ||||
| < | ||||
| ============================================================================== | ||||
| MAPPINGS                                                        *ack-mappings* | ||||
|  | ||||
| The following keyboard shortcuts are available in the |quickfix| and | ||||
| |location-list| windows: | ||||
|  | ||||
| ?                   display a quick summary of these mappings. | ||||
|  | ||||
| o                   open file (same as Enter). | ||||
|  | ||||
| O                   open file and close the quickfix window. | ||||
|  | ||||
| go                  preview file (open but maintain focus on ack.vim results). | ||||
|  | ||||
| t                   open in a new tab. | ||||
|  | ||||
| T                   open in new tab without moving to it. | ||||
|  | ||||
| h                   open in horizontal split. | ||||
|  | ||||
| H                   open in horizontal split, keeping focus on the results. | ||||
|  | ||||
| v                   open in vertical split. | ||||
|  | ||||
| gv                  open in vertical split, keeping focus on the results. | ||||
|  | ||||
| q                   close the quickfix window. | ||||
|  | ||||
| To adjust these, see |g:ack_mappings|. | ||||
|  | ||||
| ============================================================================== | ||||
| Ignoring files                                                    *ack-ignore* | ||||
|  | ||||
| If you're using this plugin with ag, The Silver Searcher, bear in mind that: | ||||
|  | ||||
|     - It ignores file patterns from your .gitignore and .hgignore. | ||||
|  | ||||
|     - If there are other files in your source repository you don't wish to | ||||
|       search, you can add their patterns to an .agignore file. | ||||
|  | ||||
| ============================================================================== | ||||
| ISSUES AND FAQ                                            *ack-issues-and-faq* | ||||
|  | ||||
| I don't want to jump to the first result automatically.~ | ||||
|  | ||||
|     Use `:Ack!`, with bang. If you want this behavior most of the time, you | ||||
|     might like an abbreviation or mapping in your personal config, something | ||||
|     like these: | ||||
| > | ||||
|         cnoreabbrev Ack Ack! | ||||
|         nnoremap <Leader>a :Ack!<Space> | ||||
| < | ||||
|     Most of the `:[L]Ack*` commands support this. Note that this behavior | ||||
|     follows the convention of Vim's built-in |:grep| and |:make| commands. | ||||
|  | ||||
| I use NERDTree and opening ack.vim results in a vertical split displacing it.~ | ||||
|  | ||||
|     You are probably using NERDTree with its default alignment at the left | ||||
|     side of the window. Set these custom mappings in your vimrc to work around | ||||
|     this: | ||||
| > | ||||
|         let g:ack_mappings = { | ||||
|               \  'v':  '<C-W><CR><C-W>L<C-W>p<C-W>J<C-W>p', | ||||
|               \ 'gv': '<C-W><CR><C-W>L<C-W>p<C-W>J' } | ||||
| < | ||||
|     This solution will be improved in the future. | ||||
|  | ||||
| Results show a mix of relative and absolute paths, making them hard to read.~ | ||||
|  | ||||
|     This is a quirk of Vim that can happen with plain |:vimgrep| too. You can | ||||
|     try this in your vimrc to work around it: | ||||
| > | ||||
|         autocmd BufAdd * exe "cd" fnameescape(getcwd()) | ||||
| < | ||||
|     but for some users this may be disruptive to their Vim workflow. For more | ||||
|     details, see: | ||||
|  | ||||
|         http://vi.stackexchange.com/a/4816/7174 | ||||
|         https://github.com/mileszs/ack.vim/issues/143 | ||||
|  | ||||
| vim:set et sw=4 ts=4 tw=78: | ||||
| @ -1,15 +0,0 @@ | ||||
| ====  ack.vim quick help =============== | ||||
|  | ||||
|   *?:*  a quick summary of these keys, repeat to close | ||||
|   *o:*  to open (same as Enter) | ||||
|   *O:*  to open and close the quickfix window | ||||
|  *go:*  to preview file, open but maintain focus on ack.vim results | ||||
|   *t:*  to open in new tab | ||||
|   *T:*  to open in new tab without moving to it | ||||
|   *h:*  to open in horizontal split | ||||
|   *H:*  to open in horizontal split, keeping focus on the results | ||||
|   *v:*  to open in vertical split | ||||
|  *gv:*  to open in vertical split, keeping focus on the results | ||||
|   *q:*  to close the quickfix window | ||||
|  | ||||
| ======================================== | ||||
| @ -1,9 +0,0 @@ | ||||
| if exists("g:ack_autofold_results") && g:ack_autofold_results | ||||
|   setlocal foldlevel=0 | ||||
|   setlocal foldmethod=expr | ||||
|   setlocal foldexpr=matchstr(getline(v:lnum),'^[^\|]\\+')==#matchstr(getline(v:lnum+1),'^[^\|]\\+')?1:'<1' | ||||
|   setlocal foldenable | ||||
|   setlocal foldclose=all | ||||
|   setlocal foldopen=all | ||||
|   nnoremap <buffer> j jzz | ||||
| endif | ||||
| @ -1,83 +0,0 @@ | ||||
| if exists('g:loaded_ack') || &cp | ||||
|   finish | ||||
| endif | ||||
|  | ||||
| if !exists("g:ack_default_options") | ||||
|   let g:ack_default_options = " -s -H --nopager --nocolor --nogroup --column" | ||||
| endif | ||||
|  | ||||
| " Location of the ack utility | ||||
| if !exists("g:ackprg") | ||||
|   if executable('ack-grep') | ||||
|     let g:ackprg = "ack-grep" | ||||
|   elseif executable('ack') | ||||
|     let g:ackprg = "ack" | ||||
|   else | ||||
|     finish | ||||
|   endif | ||||
|   let g:ackprg .= g:ack_default_options | ||||
| endif | ||||
|  | ||||
| if !exists("g:ack_apply_qmappings") | ||||
|   let g:ack_apply_qmappings = !exists("g:ack_qhandler") | ||||
| endif | ||||
|  | ||||
| if !exists("g:ack_apply_lmappings") | ||||
|   let g:ack_apply_lmappings = !exists("g:ack_lhandler") | ||||
| endif | ||||
|  | ||||
| let s:ack_mappings = { | ||||
|       \ "t": "<C-W><CR><C-W>T", | ||||
|       \ "T": "<C-W><CR><C-W>TgT<C-W>j", | ||||
|       \ "o": "<CR>", | ||||
|       \ "O": "<CR><C-W>p<C-W>c", | ||||
|       \ "go": "<CR><C-W>p", | ||||
|       \ "h": "<C-W><CR><C-W>K", | ||||
|       \ "H": "<C-W><CR><C-W>K<C-W>b", | ||||
|       \ "v": "<C-W><CR><C-W>H<C-W>b<C-W>J<C-W>t", | ||||
|       \ "gv": "<C-W><CR><C-W>H<C-W>b<C-W>J" } | ||||
|  | ||||
| if exists("g:ack_mappings") | ||||
|   let g:ack_mappings = extend(s:ack_mappings, g:ack_mappings) | ||||
| else | ||||
|   let g:ack_mappings = s:ack_mappings | ||||
| endif | ||||
|  | ||||
| if !exists("g:ack_qhandler") | ||||
|   let g:ack_qhandler = "botright copen" | ||||
| endif | ||||
|  | ||||
| if !exists("g:ack_lhandler") | ||||
|   let g:ack_lhandler = "botright lopen" | ||||
| endif | ||||
|  | ||||
| if !exists("g:ackhighlight") | ||||
|   let g:ackhighlight = 0 | ||||
| endif | ||||
|  | ||||
| if !exists("g:ack_autoclose") | ||||
|   let g:ack_autoclose = 0 | ||||
| endif | ||||
|  | ||||
| if !exists("g:ack_autofold_results") | ||||
|   let g:ack_autofold_results = 0 | ||||
| endif | ||||
|  | ||||
| if !exists("g:ack_use_cword_for_empty_search") | ||||
|   let g:ack_use_cword_for_empty_search = 1 | ||||
| endif | ||||
|  | ||||
| command! -bang -nargs=* -complete=file Ack           call ack#Ack('grep<bang>', <q-args>) | ||||
| command! -bang -nargs=* -complete=file AckAdd        call ack#Ack('grepadd<bang>', <q-args>) | ||||
| command! -bang -nargs=* -complete=file AckFromSearch call ack#AckFromSearch('grep<bang>', <q-args>) | ||||
| command! -bang -nargs=* -complete=file LAck          call ack#Ack('lgrep<bang>', <q-args>) | ||||
| command! -bang -nargs=* -complete=file LAckAdd       call ack#Ack('lgrepadd<bang>', <q-args>) | ||||
| command! -bang -nargs=* -complete=file AckFile       call ack#Ack('grep<bang> -g', <q-args>) | ||||
| command! -bang -nargs=* -complete=help AckHelp       call ack#AckHelp('grep<bang>', <q-args>) | ||||
| command! -bang -nargs=* -complete=help LAckHelp      call ack#AckHelp('lgrep<bang>', <q-args>) | ||||
| command! -bang -nargs=*                AckWindow     call ack#AckWindow('grep<bang>', <q-args>) | ||||
| command! -bang -nargs=*                LAckWindow    call ack#AckWindow('lgrep<bang>', <q-args>) | ||||
|  | ||||
| let g:loaded_ack = 1 | ||||
|  | ||||
| " vim:set et sw=2 ts=2 tw=78 fdm=marker | ||||
		Reference in New Issue
	
	Block a user
	 amix
					amix