VSCodeで勝手にタブが消えて困っていた話
現在、ソフト開発の仕事で携わっているプロジェクトでは、その開発をVSCode(Visual Studio Code)を使用して行っています。
2年ほど前まで携わっていたプロジェクトでは、Windows CEをベースとした組込み機器を開発していましたので、Visual Stuido 20XX を使用していたのですが(XXは、その開発対象に応じていろいろと)、現在は組込みLinuxということもあって、プロジェクトメンバー全員がVSCodeを使用しています。
ビルド環境は仮想マシンで動作するUbuntuにあって、そこにVSCodeからリモート接続している、という構成です。
開いたはずのファイルが…
2年近くVSCodeを使い続けていて、ソフト開発を行うエディタとしての便利さはかなり感じています。IntelliSenseでの補完機能や、複数ファイルにまたがる一括置換、定義箇所・参照箇所への移動など、数え上げればキリがありません。
が、そんな中で唯一使いづらいと思っていたのが「参照のために開いたファイルが、いつのまにか閉じられている」という問題。
新たなタブで開くケース
例えば、こんな感じ。
PROJECT1というフォルダに、test-1.c ~ test-3.c というファイルがあるとします。
エクスプローラー上で表示されている、test-1.c を開きます。
この時に、test-1.c を開いた目的がソースコードを編集するためならば、特に違和感はありません。
というのも、例えば、1行追加します(修正内容に意味はありません)。
保存ファイルと差分が出ると、タブに「●」が表示されます。
ここで、test-2.c ファイルを参照したくてエクスプローラーから test-2.c をクリックすると、
新しいタブとして、test-2.c が開きます。
test-1.c 、test-2.c とも、タブ切替で行き来できますので、違和感なく使えます。
同じタブで開くケース
ところが、ソースコードの修正をしようと test-1.c を開いた後、
test-2.c を参照したいと(例えば、test-2.c のある部分をコピーしたい時など)、エクスプローラー上で test-2.c をクリックすると…。
新たなタブではなく、test-1.c が開いていたタブが、test-2.c に置き換わります。
えー、せっかく開いたのに。。
という心境です。
勝手に閉じさせない対策方法
test-1.c を開いた後、編集前に test-2.c を新しいタブで開くためにはいくつかの方法があります。
①「開いたままにする」を明示的に指示
その一つが、開いたタブを、勝手に閉じさせないよう明示的に指示する方法。
タブの上で右クリックして、「開いたままにする」をクリック。ショートカットキーの Ctrl+K Enter でも可能です。
すると、その次にエクスプローラー上で test-2.c をクリックしても、新しいタブで開いてくれます。
②ドラッグアンドドロップで新たに開く
開いたファイルをそのままにする、と明示してやるのが面倒ならば、逆に直感的に「test-2.c を新しいタブで開く」ために、エクスプローラーから test-1.c の右隣のタブ位置に、ドラッグアンドドロップしてやります。
カーソルがキャプチャできないので妙な画像になりましたが、「test-2.c をここで開くぞ」という意思表示ですね。
こうすると、test-2.c のタブは「test-2.c用」となって、別のファイル(例えば、test-3.c)をエクスプローラー上からクリックしても、勝手に消えることはありません。
最初に開いた test-1.c は、開いたままにする明示的な操作をしていませんので、置き換わりました。こちらは、意図せず消えた感じが否めません。
③ダブルクリックで開く
最後に。実は、2年間VSCodeを使っていたのに、つい先日知ったことです。
勝手に閉じられたくないファイルは、エクスプローラーから「ダブルクリックで開く」。それだけです。
test-1.c をダブルクリックで開いて、その後に test-2.c をシングルクリックで開くと
test-1.c は保護され、 test-2.c が新たなタブで開きます。
test-2.c はシングルクリックで開いたので、この状態から test-3.c をシングルクリックで開くと、
test-2.c が test-3.c に置き換わりました。test-1.c は保護されています。
保護されるかどうかは見た目で判断できる
で、実は、もう1つ、ダブルクリックで開くのと同時に、つい先日知ったことが、「開いた状態を維持するか、勝手に閉じられる対象かどうかは、タブに表示されるファイル名でわかる」ということ。
シングルクリックで開いたとき(勝手に閉じられる対象)は、ファイル名が斜字で、ダブルクリックで開いたとき(開いた状態を維持する対象)もしくはシングルクリックで開いた後、明示的に「開いたままにする」を指定したときは、ファイル名が斜体ではなく通常の文字で表示されています。
ファイル編集時は保存ファイルと差異があるということで●が付くことは知っていましたが、シングルクリックで開いた後に編集すると、●が付くと同時に「開いた状態を維持する」ことを示すために、斜体が通常書体に変化していることには気づいてませんでした。
うっかり消えるケースを防ぐ
例えば、test-1.c をシングルクリックで開いた後、プロジェクト内で全文検索をして、結果を別タブで開いたとします。
例では表現しきれませんでしたが、例えば、思い当たる関数に利用したい処理があって、それを参照したい、という場合などでしょうか。
検索した結果から、test-2.c を開いてみようと、検索タブから test-2.c のあたりをクリックすると、
処理をコピーして貼り付けようとした、肝心の test-1.c が消えてしまっています。
こういうことにならないためにも、「これから加工したいファイル」は、ダブルクリックで開いておくのがいいんでしょうね。
test-1.c をダブルクリックで開いた後、検索して、その結果から test-2.c を開いた様子です。
2年間、VSCodeを使い続けてきて、今さらながらに知った、基本のキの話でした。