Vimで一連のファイルを移動する

コードを修正する際には、最も単純なものを変更するために、何十ものファイルを調べなければならないことがよくあります。たとえば、関数 pretty_print を持っていて、それをcamel case prettyPrint に適合するように変更するとします。ここで、 apple1.js ファイルを apple99.js に移動し、そこにいくつかの orange.js ファイルを配置したいと考えています。 Vimでこれを行う簡単な方法はありますか?

注:これは私が自動化できるものではなく、実際に入り込んでコードを自分で修正する必要があります。

I know I can do :b , but, although it supports name completion/pattern matching, I don't think the pattern is carried over.

たとえば、私が

:b apple*.js

私はタブを押すと、私は得るでしょう

:b apple1.js

しかし、( + upArrowまたは q:を押して)その機能を再訪すると、タブを押すと移動しません

:b apple2.js

私が欲しいのは、次のようなものを指定することです

:b apple*.js

ファイルを編集すると、:w と入力すると、次のバッファに移動します。私はVimにとどまり、私は出て欲しくないので、 vim apple * .js とタイプしてVimに戻り、:x コマンドを使います。私はこれが動作することを認識しますが、私は、タグ間のジャンプなど、必要な場合に備えて、他のファイルもすべて必要です。

3

3 答え

これで始める:

:set hidden "required because `argdo` won't load next argument into current window
            "if there is a modified buffer displayed inside this window
:args apple*.js
:argdo %s/\/prettyPrint/g
:rewind " if you want to proofread all files then use :next and :prev
:wa

そのような変更の後、あなたのファイルをバージョンアップしてdiffを実行してください。

1
追加された

Wikiaの BufSel 機能はニーズに合致していますか?

のリストからバッファを選択できるようにするには   部分一致]を使用することができます。それはにジャンプします   マッチするバッファが1つだけ見つかった場合、または多数ある場合   一致するバッファのリストを出力します。   コマンドラインエリアを開き、一致するバッファの1つを選択することができます   バッファ番号で指定します。

function! BufSel(pattern)
  let bufcount = bufnr("$")
  let currbufnr = 1
  let nummatches = 0
  let firstmatchingbufnr = 0
  while currbufnr <= bufcount
    if(bufexists(currbufnr))
      let currbufname = bufname(currbufnr)
      if(match(currbufname, a:pattern) > -1)
        echo currbufnr . ": ". bufname(currbufnr)
        let nummatches += 1
        let firstmatchingbufnr = currbufnr
      endif
    endif
    let currbufnr = currbufnr + 1
  endwhile
  if(nummatches == 1)
    execute ":buffer ". firstmatchingbufnr
  elseif(nummatches > 1)
    let desiredbufnr = input("Enter buffer number: ")
    if(strlen(desiredbufnr) != 0)
      execute ":buffer ". desiredbufnr
    endif
  else
    echo "No matching buffers"
  endif
endfunction

"Bind the BufSel() function to a user-command
command! -nargs=1 Bs :call BufSel("")
1
追加された
私はBufSelを実際にインストールし、それを最初に使用しましたが、それからあきらめました。いずれにしても、:b より改善されたものではなく、vimを閉じるのがずっと簡単で、編集したいファイルのみで再起動しました。
追加された 著者 puk,

Probably the most suitable solution for you in this case would be to use the grep capabilities integrated in Vim. The following command performs a search for the pattern \ in files matching the wildcard apple*.js, and stores locations of the pattern's occurrences in the quickfix list allowing to easily jump through all the matches.

:vimgrep /\/ apple*.js

検索に関するクイックフィックスリストの詳細については、 ファイルについては、を参照してください。私の答えを質問 "

特定のファイルと一致するファイルのリストを開くだけであれば ワイルドカード、ファイル名を引数リストにロードする

:args apple*.js

いつものように:n:N を使ってそれらの間を移動します。

1
追加された