Vimの最近のファイル履歴?


132

GVimで開いて閉じた最近のファイルにアクセスしたいと思います。GVimを頻繁に開閉します。以前のセッションの最近のファイルにもアクセスしたいと思います。

GVimは最近のファイルをWordや他の多くのデスクトップアプリと同じ場所に保存しますか?それらにアクセスする方法は?


回答:


229

少なくともterminal vimは、以前の10個のファイルを~/.viminfofilemarksセクションに格納します。あなたは使用することができ'0'1'2...、'9それらの間でジャンプします。

'0あなたの記憶が私のものより強い場合を除いて、おそらくあなたが編集していた最後のファイルに戻るためにのみ有用です。)

この:browse oldfilesコマンドを使用して、数字のメニューを取得することもできます。


2
使用したい場合0- 9ナビゲーションのマークとして、手動でマークしないでください

16
:browse oldget file-listを使用します。Enterキーqを押して、編集するファイルを選択します。
ソンヒル2014

5
:e #<1最後のファイルを開きます:h c_#<。を見てください。
Hotschke

:bro olは機能しますが、多くのキーを入力する必要があります。最初にファイルのリストを取得し、次にqを押してから、番号を選択します。下記のMRUプラグインの方がはるかに優れ ていると思います。stackoverflow.com / a / 3171323/4752883 <リーダー> fを押してから、hjklまたは他のキーでファイルを参照するか、ファイル名を検索してください。次に、o、Enter、T、またはVを押して、カーソルの下のファイルをすばやく開きます。
alpha_989 2017年

rm前述の方法を使用して誤って削除したファイルを復元しました。
タンデム

55

私が使用する最良の方法は

:browse oldfiles

vimで最も簡単な方法。


1
いいね!〜/ .vimrcでその式を "nmap bo:browse oldfiles <CR>"(引用符なし)としてマップしました。ノーマルモードでそのマッピング(bo)を入力するだけで、そのコマンドが実行されます
Victoria Stuart


22

ここで非常に遅い答え... @sarnoldsの答えを解説-oldfilesコマンド@see:h oldfilesまたは:h viminfoでファイル履歴を表示できます

:oldfiles 

さらに、ビューとセッションで詳細なファイル管理を行うことができます...詳細については、@ see:h mkviewおよび:h mksession ...


4
のリストから番号がわかっているファイルを実際に開く方法を知っていると便利です:oldfiles:browse@sarnoldで説明されているように、コマンドを使用してインタラクティブにこれを行うことができます:e #<Nが、Nがoldfilesリストからの番号である場合に、手動でこれを行うこともできます。
Krzysztof Adamski

11

ファイル切り替えCtrlPプラグインのスイスナイフがあります。これはjanusの一部でもあります。配布のます。それは持っている:CtrlPMRU最近使用したファイルのうち、スマート検索を使用してコマンドを。

注:では CtrlP、最近使用したファイルの独自のリストが維持されますg:ctrlp_cache_dir."mru/cache.txt"set viminfo?ファイルマークのリストを含むviminfo()を再利用していません。これは、このリストをクリアしたい場合に役立ちます。


1
CtrlPインターフェイスはvimユーザーにとって直感的ではありませんか?MRUファイル=〜/ regexp /を見つけるための単純なことを実行するための複雑なインターフェースを学ぶのに苦労する価値はありません=〜/ regexp /(perl / grep regexp〜/ _viminfoで簡単に実行できます)。
mosh 2016

ええ..私はCtrlpの使い方を理解しようと努めてきましたが、単純なファイルのセット(stackoverflow.com/a/3171323/4752883)があると、MRUの方がはるかに使いやすいようです。MRUでは、VIM正規表現検索を実行して、必要なファイルを見つけることもできます...
alpha_989

9

を使用して:bro ol、開きたいファイルに対応する番号を押します。


5

CTRLPのプラグインは、このコマンドでカレントディレクトリにあなたの最近使用したファイルだけでなく、ファイルを検索することができます:

nnoremap <c-p> :CtrlPMixed<cr>

これにより、組み込みのVimコマンドとMRUプラグインを処理する手間が省けます。どちらもファジーファイル検索を実行できません。これは、大規模なプロジェクトで作業する場合に重要です。


Ctrl-Pのデフォルトを機能的に再マッピングすることに抵抗がある場合:Ctrl-Pを通常どおり開き、Ctrl-FまたはCtrl-Bを使用してモードを切り替えることができます(MRUはその1つです)
Gustavo Matias


2

ここのコメント(http://stackoverflow.com/questions/571955/undo-close-tab-in-vim)に見られるように、ファイルはおそらくバッファでまだ開いています:

:ls " get the buffer number
:tabnew +Nbuf " where N is the buffer number

たとえば、3番目のバッファを新しいタブで再度開くことができます(タブを使用しない場合は、代わりに:eを使用してください)。

:tabnew +3buf

1
はい、これでうまくいきます。しかし、確かに編集者の仕事は物事を簡単にすることですか?コマンドを発行する必要がある場合は、何かを視覚的に識別し、IDを覚えてから、ユーザーの時間を浪費する別のコマンドを発行します。あなたの答えは正しいです、そして私は犯罪を意味するわけではありませんが、それはVimのキラー機能の1つにはなりません!
artfulrobot 2013

私も同じ問題を抱えていました。あなたはbuffexplorerを試しましたか?lsと:tabnew + Nbufを組み合わせたものです。これで、バッファのリストを開き、1つのキーストローク(o、t、v)などで新しいタブなどに開くことができます。
alpha_989 2017年

2

コマンドラインから次のコマンドを使用してリストにアクセスできる場合があります。

grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'"$HOME"','

説明:

grep '^>' ~/.viminfo  #find the list of recent files
cut -c3-              #remove the first 2 characters
sed 's,~,'"$HOME"','  #replace ~ with absolute path

これを定期的に使用する場合、bashエイリアスを持つことができます

alias vim_mru="grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'\"$HOME\"','"

2

fzfが前に言及されていなかったため、ここに2セントを追加します。これはとても素晴らしいツールです
。fzf.vimには、:History最近使用されたファイルをあいまい検索し入力しながら検索できるコマンドがあります。
fzfが検索結果リストを最もよく一致するように並べ替えないようにして、このコマンドの(デフォルト)動作をカスタマイズします。一致するすべてのファイル名の順序を、これらのファイルが最後に使用された順序のままにしておきます。
このカスタマイズを実現するために、以下を.vimrcに追加Historyして、fzf.vimプラグインによって定義されたデフォルトのコマンドをオーバーライドします。

    command! -bang -nargs=* History
      \ call fzf#vim#history({'options': '--no-sort'})

1

最後に変更されたプラグインのリストからファイルを選択できるようにするもう1つのプラグインはstaritfyです。スタート画面を最近変更されたファイルのリストに置き換えます。:Startifyコマンドを使用して、後でいつでもこのページを開くことができます。


1
startifyをインストールすることすらできませんでした-基本的なインストールと使用法についてさらにドキュメントが必要です。インストールと使用が簡単だったので、MRUを使用します。
モッシュ2017年

1

:ls 左側の列にバッファ番号が付いた最近のファイルをリストします。

その後、:b{buffer-number}そこにジャンプします。

例: :lsファイルのリストを表示します。アクセスした最後から3番目のファイルにジャンプしたい。 :b3そこへ連れて行ってくれます。

より高速に検索するには:ls、たとえば<Leader>..vimrcファイル内などにマップします。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.