私は次のようにvimで開かれたファイルの長いリストを持っています:
/dir1/file1
/dir2/file2
/dir2/file3
.....
分割または編集のいずれかを使用して、vimの同じセッションで可能な最も簡単な方法でそれらすべてを1つずつ開くにはどうすればよいですか?
タブの場合は-pを使用します
vim -p `cat yourlistoffiles`
次のように、クイックフィックスモードを使用できます
:set errorformat=%f
:cf myfilelist
この時点で、通常のクイックフィックスショートカットを使用してファイルを移動できます。次のファイルの場合は:cn
、前のファイルの場合は:cp
、最初のファイルに移動するには:cr
です。
編集:
ああ、現在のバッファからリストを読み取りたい場合は、上記の手順で:cb
の代わりに:cf
を使用してください
Vim内でファイルリストを開いていて、リスト全体で「gf」コマンドをシミュレートしたいとします。
.vimrcを編集して、この関数を含めます。
function Openall()
edit <cfile>
bfirst
endfunction
次に、ビジュアルモード(1G、Shift-V、G)を使用し、「:call Openall()」と入力して、ファイル全体(または開きたいパスのセット)を強調表示できます。その後、コマンド行に次のように表示されます。
:'<,'>call Openall()
これにより、強調表示されたすべての行で新しいOpenall()関数が実行されます。
Enterキーを押すと、すべてのファイルがバックグラウンドバッファで開かれます。その後、通常のバッファコマンドを使用してそれらにアクセスできます。 :lsはそれらをリストとして表示します。
あなたは次のことができます
cat file | xargs vim
「file」にファイルのリストが含まれている場合、これにより同じvimセッションでファイルが開きます。複数のバッファを開くときはいつものように、:bnで前方に移動し、:bpで後方に移動できます。
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}
これを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
入力するのと同じくらい簡単です
vim /dir1/file1 /dir2/file1 /dir2/file2 ...
Vimに入ったら、「:n」で次のファイルに移動し、「:prev」で前のファイルに移動するように切り替えることができます。
SVNチェックアウトで変更されたファイルの変更リストを開く必要があることがよくあります。このワンライナーは、vimタブで変更されたすべてのファイルを開くために機能します。
svn st | grep ^M | awk "{print($2)}" | xargs vim -p
多分これは役立つかもしれません:
私の searchInRuntime プラグインには:Spコマンドと:Vspコマンドがあり、bangedと呼ばれるとトリックを実行します。ただし、ファイルは存在する必要があります。