私がヒットしたとき、私は一致をリストしたいと思います:
/example
すべての一致が一度にどこにあるかを確認できるようにします。
私がヒットしたとき、私は一致をリストしたいと思います:
/example
すべての一致が一度にどこにあるかを確認できるようにします。
回答:
" put in your ~/.vimrc file
" START search related configs and helps
"
" ignore case when searching
set ignorecase
" search as characters are entered, as you type in more characters, the search is refined
set incsearch
" highlight matches, in normal mode try typing * or even g* when cursor on string
set hlsearch
" yank those cheat commands, in normal mode type q: than p to paste in the opened cmdline
" how-to search for a string recursively
" :grep! "\<doLogErrorMsg\>" . -r
"
" how-to search recursively , omit log and git files
" :vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`
" :vimgrep /srch/ `find . -type f -name '*.pm' -o -name '*.pl'`
"
" how-to search for the "srch" from the current dir recursively in the shell
" vim -c ':vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`'
"
" how-to highlight the after the search the searchable string
" in normmal mode press g* when the cursor is on a matched string
" how-to jump between the search matches - open the quick fix window by
" :copen 22
" how-to to close the quick fix window
" :ccl
" F5 will find the next occurrence after vimgrep
map <F5> :cp!<CR>
" F6 will find the previous occurrence after vimgrep
map <F6> :cn!<CR>
" F8 search for word under the cursor recursively , :copen , to close -> :ccl
nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>
" omit a dir from all searches to perform globally
set wildignore+=**/node_modules/**
" use perl regexes - src: http://andrewradev.com/2011/05/08/vim-regexes/
noremap / /\v
"
" STOP search related configs and helps
:g//p
より長い形で:
:global/regular-expression/print
パターン/正規表現を省略すると、Vimは以前の検索語を再利用します。
トリビア:grepのツールは、このコマンドシーケンスにちなんで命名されました。
:g//
-p(rint)はデフォルトのアクションなので、省略してもかまいません。
:g/
さらに短いです!
--context 9
ですか?
:%s/regular-expression//gn
てみてくださいこれらの線に沿って何かが生成されます:X matches on Y lines
あなたも行うことができます:
g/pattern/#
必要なパターンと行番号を印刷します。
#
は必要ありません。デフォルトで行番号が表示されます
このリストを見て一致間をすばやくジャンプする場合は、使用を検討してください
:vimgrep example %
または
:grep example %
これはあなたが使用できるように試合のすべてと、「エラーリスト」を移入します:copen
クイックフィックスバッファ内のリストにそれらのすべてを、プレスのようなその試合、または使用コマンドにジャンプする特定の行に入力:cn
し、:cp
前後に行くことに。
詳細な説明については、同様の質問への私の返信を参照してください
E499: Empty file name for '%' or '#', only works with ":p:h"
MacVim 8.1に与える
新しいものを学んだ:Location List
!
入力:lvim foo %
しfoo
て現在のファイルを検索し、含まfoo
れるすべての一致をロケーションリストに入力します。
入力:lopen
して、通常どおり完全にナビゲートできるクイックフィックスウィンドウでロケーションリストを開きます。/ toを
使用してリスト全体を表示します(最良のエクスペリエンスを得るにはtpope / unimpairedマッピングを使用します):lnext
:lprevious
別の可能性は、インクルードファイル検索コマンドを使用することです。
[I
これにより、カーソルの下にある単語のすべての出現がリストされます。ただし、現在のファイルに含まれているすべてのファイルも検索されるため、必要以上の数になる可能性があります。
ただし、このコマンドの良い点は、検索結果の表示には、各一致の行番号に加えて、一致数のカウントも表示されることです。
:help include-search
多くのバリアントを表示します。
についてのメモ
:g//p
これはさらに削減することができます
:g//
他の人が言ったように、p(rint)がデフォルトのアクションだからです。
[I
grepのように、コンテキストで結果を取得することは可能--context 9
ですか?
あなたは素敵な得ることができquickfix
、あなたの現在の検索パターンを形成試合でウィンドウを
:vim // %
:copen
以前に複雑な検索パターンを作成した場合に非常に便利です。 /pattern
編集:これは、すべての開いているバッファでも機能することがわかりました
:bufdo vimgrepadd // %
:copen
を使用:set hlsearch
すると、すべての一致が黄色で強調表示され、ファイルを簡単にスキャンして一致を探すことができます。それはあなたが望むものではないかもしれませんが、検索した後、:g // pはリストされた一致を与えます
:nohl
ハイライトが不要になった場合は、マップしてハイライトをクリアすることも役立ちます。
このためのコードを書きました。これは実際にの問題を回避しますvimgrep
。名前のないファイルでも機能します。そして、それは使いやすいです。
function! Matches(pat)
let buffer=bufnr("") "current buffer number
let b:lines=[]
execute ":%g/" . a:pat . "/let b:lines+=[{'bufnr':" . 'buffer' . ", 'lnum':" . "line('.')" . ", 'text': escape(getline('.'),'\"')}]"
call setloclist(0, [], ' ', {'items': b:lines})
lopen
endfunction
パターンで呼び出すと、すべての一致を含むロケーションウィンドウが開きます。
これはコマンドかもしれません
command! -nargs=1 Mat call Matches(<f-args>)
だからあなたがしなければならないすべてはタイプすることです :Mat pattern
また、次のマッピングを使用して、現在のビジュアル選択の一致を取得します。
vnoremap Y "xy:call Matches(@x)<CR>
node_modules
です--なぜですか?--perl正規表現はVimのデフォルト機能をどのように変更しますか?--以下は、.texファイルの検索をどのように設計したかです。askubuntu.com/a/789769/25388それを改善する方法をあなたから学ぶとよいでしょう。あまり直感的ではないので、自分でもロジックを忘れてしまいました。