2012-06-04 22 views
13

Vim内でファイルを移動する方法はありますか?例えば。 Vimにfoo/bar.txtというファイルをオープンしました。 mv foo/bar.txt foo/bar2.txt Vim内でファイルを移動

  • とシェルの移動を実行:bd bar.txt
  • でバッファを削除

    1. :e foo/bar2.txt
    2. とのvimでファイルをロードします。

      まず解決策:私は、このファイルを移動するには2つの方法を知っています

    第2の解決策:

    1. Vimを閉じると、すべてのバッファが閉じられます。
    2. シェルで移動を実行します。
    3. Vimを起動してファイルをロードします。

    しかし、これらの2つのソリューションは恥ずかしいです。私は、ファイル名を変更するためのプラグインがあることを知っていますvim-enuchしかし、そのような基本的な機能を実行するためのVimの方法はありませんか?

  • 答えて

    6

    あり、そのようなファイルを移動するためのアトミックな方法はありませんが、これは近いはず:

    function! MoveFile(newspec) 
        let old = expand('%') 
        " could be improved: 
        if (old == a:newspec) 
         return 0 
        endif 
        exe 'sav' fnameescape(a:newspec) 
        call delete(old) 
    endfunction 
    
    command! -nargs=1 -complete=file -bar MoveFile call MoveFile('<args>') 
    

    今、あなたが言うことができる:

    :MoveFile file2.txt 
    

    をFILE2.TXTする名前を変更するには
    :MoveFile %.0 
    

    file2.txtをfile2.txt.0に移動する

    +1

    私は私のvimrcにこのライン5を追加するのではなく、ヘビー級のプラグインをロードすることができますので、このソリューションは、より良いです。 – SvenK

    +0

    私はいくつかのテストの後でそれを更新しました – sehe

    +0

    エスケープされたファイル名の問題は、提供された実装では無視されます。これに関して修正するには、次のように関数の最後の2行を変更する必要があります。まず、 'exe 'sav' fnameescape(a:newspec)'; 2番目に、 'call delete(old)'です。また、 'delete()'関数の戻り値をチェックして、ファイルの削除に失敗した場合にユーザに通知することも賢明です( '!rm'の機能のもう一つの利点は、 )。 –

    3

    あなたはbar.txtバッファにいる場合:bar2.txtはすでに現在のディレクトリに存在する場合は、

    :w bar2.txt 
    :!rm bar.txt 
    

    :w!を使用しています。

    +2

    しかし '!rm bar.txt'は開いているバッファーを閉じません – SvenK

    +1

    それは':sav'を ':w'に変更します – pb2q

    +1

    ' bar.txt'のバッファーはまだ開いています。これは 'bd 'で終了することができます。 –

    24

    また、netrw(デフォルトのファイルエクスプローラ)の名前変更機能を使用することもできます。 :E

    1. オープンnetrwのは、この場合のbar.txtには、名前を変更しようとするファイルとの行にカーソルを移動し
    2. 。 h、j、k、lを使用して問題のファイルに移動するか、/(例:/bar.txt
    3. Rで検索できます。新しいファイルパスの入力を求められます。ファイルパスを入力することで行わが<CR>
    4. が新しいファイルにカーソルを移動し、このソリューションは、VIM-eunchを使用してのように、迅速ではないかもしれないが、それはあなたがプロジェクトのを見ることができるん <CR>

    で開き

  • ヒットするとファイルの名前を変更する際にこれにより、一度に複数のファイルを移動することもできます。さらに読書の実行のために

    :help netrw-move

  • +1

    ファイルエクスプローラを( ':Sex'や':Vex')で開くこともできます。 – installero

    関連する問題