web-dev-qa-db-ja.com

vimのファイルのリストでファイルを開く方法は?

私は次のようにvimで開かれたファイルの長いリストを持っています:

/dir1/file1
/dir2/file2
/dir2/file3
.....

分割または編集のいずれかを使用して、vimの同じセッションで可能な最も簡単な方法でそれらすべてを1つずつ開くにはどうすればよいですか?

30
dimus

タブの場合は-pを使用します

vim -p `cat yourlistoffiles`
58
Ronny Brendel

次のように、クイックフィックスモードを使用できます

:set errorformat=%f
:cf myfilelist

この時点で、通常のクイックフィックスショートカットを使用してファイルを移動できます。次のファイルの場合は:cn、前のファイルの場合は:cp、最初のファイルに移動するには:crです。

編集:

ああ、現在のバッファからリストを読み取りたい場合は、上記の手順で:cbの代わりに:cfを使用してください

16
Hasturkun

Vim内でファイルリストを開いていて、リスト全体で「gf」コマンドをシミュレートしたいとします。

.vimrcを編集して、この関数を含めます。

function Openall()
    edit <cfile>
    bfirst
endfunction

次に、ビジュアルモード(1G、Shift-V、G)を使用し、「:call Openall()」と入力して、ファイル全体(または開きたいパスのセット)を強調表示できます。その後、コマンド行に次のように表示されます。

:'<,'>call Openall()

これにより、強調表示されたすべての行で新しいOpenall()関数が実行されます。

Enterキーを押すと、すべてのファイルがバックグラウンドバッファで開かれます。その後、通常のバッファコマンドを使用してそれらにアクセスできます。 :lsはそれらをリストとして表示します。

8
seanhodges

あなたは次のことができます

cat file | xargs vim

「file」にファイルのリストが含まれている場合、これにより同じvimセッションでファイルが開きます。複数のバッファを開くときはいつものように、:bnで前方に移動し、:bpで後方に移動できます。

5
ng.

vimで選択してリストしたいと思います。特定の拡張子のすべてのファイル。ホームディレクトリまたは特定のソースから。

find . -name "*.sh" | vim -

次に、vim内で、この潜在的に巨大なリストを検索して表示できます。 (別のトピック)

あなたはあなたのファイルを見つけました、今あなたはそれを分割して開きたいですか?

CTRL-W F                        *CTRL-W_F*
    Split current window in two.  Edit file name under cursor and
    jump to the line number following the file name. See |gF| for
    details on how the line number is obtained.
    {not available when the |+file_in_path| feature was disabled
    at compile time}


CTRL-W gf                       *CTRL-W_gf*
    Open a new tab page and edit the file name under the cursor.
    Like "tab split" and "gf", but the new tab page isn't created
    if the file does not exist.
    {not available when the |+file_in_path| feature was disabled
    at compile time}
2
Will Budic

これをbashで試してください:

$ vim -S <(sed "s/^/badd /" <your file name>)

しかし、ファイルの最初の行が無視される理由はわかりません...:-O

このスクリプトは期待どおりに機能します。

rm -f myfile
for i in `seq 10000`
do
  touch $i
  echo $i >> myfile
done
vi -c "badd `head -1 myfile`" -S <(sed "s/^/badd /" myfile)

http://vimdoc.sourceforge.net/htmldoc/starting.html#-S
http://vimdoc.sourceforge.net/htmldoc/windows.html#:bad

1
Daniel Fanjul

入力するのと同じくらい簡単です

vim /dir1/file1 /dir2/file1 /dir2/file2 ...

Vimに入ったら、「:n」で次のファイルに移動し、「:prev」で前のファイルに移動するように切り替えることができます。

1
Paul Tomblin

SVNチェックアウトで変更されたファイルの変更リストを開く必要があることがよくあります。このワンライナーは、vimタブで変更されたすべてのファイルを開くために機能します。

svn st | grep ^M | awk "{print($2)}" | xargs vim -p
1

多分これは役立つかもしれません:

http://vimdoc.sourceforge.net/htmldoc/windows.html

0
Eldelshell

私の searchInRuntime プラグインには:Spコマンドと:Vspコマンドがあり、bangedと呼ばれるとトリックを実行します。ただし、ファイルは存在する必要があります。

0
Luc Hermitte