スパム対策として書込み時にID/PWを要求されますが、ローマ字で ほげ/ホゲ で書き込めるようになります。

選択範囲内から検索

  • ページ: tips
  • カテゴリー: 検索
  • 投稿日: 2005-01-26 12:34:40 (水)

メッセージ

http://www.vim.org/tips/tip.php?tip_id=796
より

vnoremap /<Esc>/\%><C-R>=line("'<")-1<CR>l\%<<C-R>=line("'>")+1<CR>l
vnoremap ? <Esc>?\%><C-R>=line("'<")-1<CR>l\%<<C-R>=line("'>")+1<CR>l 

このマッピングをしておいて範囲選択中に / や ? をすると、"/\%>5\%<25" のように表示されるので、そのまま検索したい文字列をうちこんで<CR>。
n N での再検索もその範囲内だけになる。
"/\%>5\%<25"の表示が嫌ならオリジナルのDavid Fishburn氏の関数を。

function! RangeSearch(direction)
  call inputsave()
  let g:srchstr = input(a:direction)
  call inputrestore()
  if strlen(g:srchstr) > 0
      let g:srchstr = g:srchstr.
                  \ '\%>'.(line("'<")-1).'l'.
                  \ '\%<'.(line("'>")+1).'l'
  else
      let g:srchstr = ''
  endif
endfunction
" Each map should be on a single line
vnoremap <silent> / :<C-U>call RangeSearch('/')<CR>:if  strlen(g:srchstr) > 0\|exec '/'.g:srchstr\|endif<CR>
vnoremap <silent> ? :<C-U>call RangeSearch('?')<CR>:if strlen(g:srchstr) > 0\|exec '?'.g:srchstr\|endif<CR> 

  • vim7 からは /\%Vhoge で前回選択した範囲から hoge を検索できるようになった。ただし'ignorecase'が効かないので、大文字小文字の違いを無視するには /\%V\choge で検索する。 -- 2006-07-15 11:12:09 (土)
  • vi でもできる手軽なのがよければ '<,'>:g/hoge/p# とか。 -- 2006-12-05 06:00:28 (火)
  • '<,'>はviじゃ使えないよ. -- 2008-07-13 20:06:16 (日)



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-10-14 (火) 01:13:17 (1288d)