vimで作業しているとき、ヘルプファイルを含む分割が開いていることがよくあります。vimがヘルプウィンドウのみが開いた状態のままになるよう
に他のウィンドウを:q
閉じると、vimはエディター全体を閉じます。これにより、ヘルプページでの位置が失われます。例:このレイアウトがあるとしましょう
tab1 (this is the only tab open)
+------------------+-------------+-----------------+
| | | |
| |:h usr_26.txt| |
| A normal file, | | :h change.txt|
| containing code |section 26.2 | |
| e.g. |line 47 | line 272 |
| | | |
| app_db.sql | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
+------------------+-------------+-----------------+
コマンドをapp_db.sql
発行したウィンドウに入ると:q
、驚くことに、エディタ全体が失われます。
多くの場合、ヘルプを検索してそのヘルプコンテンツを最終的に見つけるのに、最大15〜20分かかります。そのため、作業が完全に失われたわけではありませんが、これが発生すると、明らかに多くの時間が失われます。
ヘルプウィンドウのみが開いているウィンドウを閉じるときに、vimがエディター自体を閉じるのを防ぐにはどうすればよいですか?
私が考えた可能な解決策
- ヘルプウィンドウが開いているときに、最後のウィンドウを閉じないでください。
- これの問題は、現在のウィンドウを閉じるときに他のウィンドウの内容に注意を払っていないことです。
- 使用する
mksession
- これには、事前に知っておく必要があること
:mksession
と、エディターが常に予期せず終了することが必要です。
- これには、事前に知っておく必要があること
- 常にファイルを更新するvim obsessionのようなプラグインを使用し
Session.vim
ます。- (皮肉にも)vim-obsessionを使用して一時停止してい
Session.vim
ます。vimobsessionがSession.vim
作成するファイルはヘルプページを含むタブを復元しないことがよくありますが、によって生成されたファイル:mksession
はヘルプウィンドウでタブを復元します。(また、タブラベルがタブ自体と一致しない別の問題)
- (皮肉にも)vim-obsessionを使用して一時停止してい
@ user9433424いいですね、うまくいきました!ありがとう。私に追加して
—
監視し
~/.vimrc
、奇妙な副作用を
@ user9433424は実際にはすべてのケースで機能していません。おそらく、最後に開いたウィンドウが前のウィンドウとしてマークされていない場合、つまり、
—
the_velour_fog
wincmd p
pがnullである可能性があるため、機能していません。時間があるときは少し後でテストする必要があります
はい、申し訳ありません。ウィンドウが2つしかない場合は機能せず、ヘルプウィンドウを閉じるとVimが終了します。多分誰かが別の実用的な解決策を持っているでしょう。
—
user9433424 2016
obsession
セッションを保存する前に時間を追加help
すると、ヘルプウィンドウが保存されます。sessionoptions
set sessionoptions+=help
QuitPre
、現在の1を閉じる前に、前のウィンドウにフォーカスバックを与えるイベントを:autocmd QuitPre * wincmd p