2012-09-27 14:47:47 +0000 2012-09-27 14:47:47 +0000
89
89

復旧済みのVimのスワップファイルを削除する一番簡単な方法は?

たまにVimがクラッシュしてスワップファイルが残ってしまうことがあります。それはすごいですね。その後、私は私が編集していたファイルを開き、Vimは私が回復したいかどうかを尋ねてきます。私はそうします、ありがとうございます。それが終わると、Vimは私に、

You may want to delete the .swp file now.

Why, yes, I do. どうすればいいの?古いswapfileをまたswapfileとして使い始めて、私が終了したらクリーンアップしてくれるだろうと思っていたのですが、そんなことはありません。それは新しいものを作り、それをクリーンアップし、私は再びファイルを開くとき、それは最初のものから回復するために私に再びプロンプトが表示されます。

確かに私は何かを欠落しています。

回答 (12)

86
86
86
2013-12-13 12:39:26 +0000

少し簡単な方法:

ターミナルエミュレータから:

vim filename

その後、recoverを選択し、write(保存)したスワップを削除したい場合はvim内から:

:e // no argument needed. It assumes the current buffer.

…そして今回はdeleteを選択してください。そうすれば、リカバリが壊れていることが判明しても、誤って作業ファイルを上書きしてしまうこともありません(試したことはありませんが)。

また、Stack Overflowに関連するTips on this question があります(ここでこのTipsを見つけました)。

40
40
40
2014-08-30 18:39:56 +0000

このコマンドは、vimが***実行されていない間(別のウィンドウでも、別のログインセッションでも)、ディレクトリ内で以下のコマンドを使用することができます:

find . -type f -name "*.sw[klmnop]" -delete

いくつかのインスピレーションと考えは、ジャンクな.swpファイルの削除at Google Groups. から来ました。 これは、カレントディレクトリツリー内の名前が.swk, .swl, .swm, .swn, .swo, .swp, または.swkで終わるすべてのファイルを削除します。

  • .swl, .swm, .swn, .swo, .swp, .swp, .swk, .swl, .swm, .swn, .swo, .swpで終わる名前のファイルをすべて削除します。 &nbsp Gary Johnson says ,

  • 一方で、やりすぎかもしれません。   記載されているように、名前がhello.cpp, .hello.cpp.swp, &007, &007, &007, &007, &007.  しかし、どうやらvimのスワップファイルは一般的に「ドット」ファイルらしいですね。で始まるファイルだけを削除した方が安全です。

14
14
14
2013-12-21 17:14:36 +0000

タイプls -aは、ディレクトリ内のすべてのファイルをリストアップしています

タイプrm .whatever.your.swpを入力し、Enterを押してください

そのシンプルなものです。

7
7
7
2015-08-04 20:27:23 +0000

プラグインの中には、自動的にそれを行ってくれるものもあります。説明から autoswap.vim

:

1.ファイルはすでに他のウィンドウで別のVimセッションで開かれていますか? 2.もしそうならば、そのファイルを編集するウィンドウをスワップします。その場合は、そのファイルを編集しているウィンドウにスワップしてください。**また、スワップファイルがファイル自体よりも古い場合は、単にそれを取り除く。我々はそれを見て、それを保存することができますので、それ以外の場合は、読み取り専用のファイルを開きます。

6
6
6
2012-09-27 15:00:27 +0000

あなたは、(再び)

[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it

今ちょうど Vim を押すとプロンプトが表示されます :)

2
2
2
2013-09-27 09:40:43 +0000

Vim は他の多くの Unix コマンドと同様に、仮定や暗黙のものではなく、シンプルで明示的です。リカバリーが気に入らなかったり、リカバリーが壊れていたりした場合は、破棄することができます。気に入った場合は、ファイルを保存することができます。®ecover, (w)rite, (q)uitでリカバリーを行い、再度編集して(d)eleteを選択するか、"rm .myfile.js.swp “を選択して再度編集します。これは素早くできますし、Vimの観点からは常に100%正しい動作です。

1
1
1
2017-06-18 21:48:08 +0000

ここでは、.vimrcに追加するスニペットです。それは現在のファイルバッファに関連付けられているすべてのスワップファイルを削除し、スワップ拡張子をリセットします。

function! DeleteFileSwaps()
    write
    let l:output = ''
    redir => l:output 
    silent exec ':sw' 
    redir END 
    let l:current_swap_file = substitute(l:output, '\n', '', '')
    let l:base = substitute(l:current_swap_file, '\v\.\w+$', '', '')
    let l:swap_files = split(glob(l:base.'\.s*'))
    " delete all except the current swap file
    for l:swap_file in l:swap_files
        if !empty(glob(l:swap_file)) && l:swap_file != l:current_swap_file 
            call delete(l:swap_file)
            echo "swap file removed: ".l:swap_file
        endif
    endfor
    " Reset swap file extension to `.swp`.
    set swf! | set swf!
    echo "Reset swap file extension for file: ".expand('%')
endfunction
command! DeleteFileSwaps :call DeleteFileSwaps()

一度苦境に遭遇した場合、1つは:DeleteFileSwapsを実行することができます。1つのファイルには1つ以上のスワップファイルを持つことができます。その理由は、:windo の拡張子を持つスワップファイルがまだ存在しており、:tabdo はそれを理由に新しいスワップファイルを作成し続けるからである。

  • vimで開いているターゲットファイルで、現在のスワップファイルを取得するために.swpを実行します。
  • 現在のスワップファイルが含まれているディレクトリをチェックしてください。
1
1
1
2016-06-23 12:03:20 +0000

これらのファイルは私にとっても迷惑なものでしたが、.vimrc - set noswapfileでオプションを設定してvimが作成しないようにし、代わりにファイルをメモリに保存しておきました。

1
1
1
2017-06-07 15:33:24 +0000

これは、Github の gitignore ファイル for Vim

$ find ./ -type f \( -name "\.*\.s[a-v][a-z]" -o -name "\.*\.sw[a-p]" \) -delete

に基づいた、すべての vim スワップファイルをクリーンアップするためのより完全な正規表現です。それらのファイルを使用する場合は、正規表現を変更したい場合があります。

0
0
0
2015-01-26 20:03:16 +0000

マニュアルより :h swap:

コマンドで現在使用しているスワップファイルの名前を見ることができます。

0
0
0
2015-09-22 12:05:33 +0000

もしあなたが尋ねられたら、現在のファイルのスワップファイルを削除するためにDボタンを押してください。

-1
-1
-1
2015-03-18 08:48:14 +0000

使用できるのは、

rm -f .<filename>.<ext>.swp

例:

rm -f .rc.local.swp
``` です。

関連する質問

4
5
6
8
4