編集中のファイルの名前を変更するにはどうすればよいですか?


回答:


35

を使用して、別の名前でファイルを保存できます:w。ただし、この操作では古いファイルは削除されず、「古い」ファイルはバッファに残るため、変更は「古い」ファイルに適用されます。

:saveas新しいファイルを保存し、新しいバッファで開きます。ただし、古いファイルは削除されません。

ファイルにはtpope / vim-eneuch:Move使用しています。

:移動:ディスク上のバッファとファイルの名前を同時に変更します。


一つの欠点:wかは:saveas、スクリプトを編集していた場合には、実行権限を失うことになるということです。netrw名前を変更しても権限は保持されます。
ウィスバッキー

11

Netrwにドロップして、そこでファイルの名前を変更できます。

編集しているファイルが現在のディレクトリにある場合は、次を実行します。

:edit .

ファイルに移動し、を押してR、名前を変更します。を押しEnterてファイルを編集します。

ただし、注意が必要です。元のバッファーはバッファーのリストに残ります。切り替えると空になります。

編集しているファイルが別のディレクトリにある場合は、次のコマンドでファイルのディレクトリに変更できます。

:cd %:p:h

Vimセッション全体のディレクトリを変更せず、現在のバッファのみを変更する場合は、代わりに次の操作を実行できます。

:lcd %:p:h

2
まっすぐ入力することで:edit %:p:hも機能するようです。
ムラデンJablanović

:Eまた、netrw
wisbucky

6

私は長年、このためにRename2プラグインを使用しています。現在のバッファとディスク上のファイルの両方の名前を変更します。

:Rename {newname}

編集:私はこれ.vimrcgithubのファイルに見つけました:

function! RenameFile()
    let old_name = expand('%')
    let new_name = input('New file name: ', expand('%'), 'file')
    if new_name != '' && new_name != old_name
        exec ':saveas ' . new_name
        exec ':silent !rm ' . old_name
        redraw!
    endif
endfunction
map <leader>n :call RenameFile()<cr>

3

:MoveOrangTuxが言ったように、最善の方法はを使用することです。完全を期すために!、コマンドモードでbang()を使用してviエディターで端末コマンドを実行することもできます。

:!mv {current_file} {new_name}
:e {new_name}

ただし、このメソッドは、バッファリストから古いバッファを削除しません。

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