#1 楼
您可以使用:w newname
将文件保存为其他名称。但是此操作不会删除旧文件,并且“旧”文件保留在缓冲区中,因此所有更改都将应用于“旧”文件。:saveas
保存并打开新文件在新的缓冲区中。但是它不会删除旧文件。我将tpope / vim-eunuch用于
:Move
文件。:移动:重命名缓冲区和文件同时在磁盘上。
评论
:w或:saveas的一个缺点是,如果您正在编辑脚本,它将失去执行权限。 netrw重命名将保留权限。
– Wisbucky
19年9月12日在23:01
是:Move实质上与:!mv {src} {dest}相同,然后运行:e {src},其中{src}是旧缓冲区的名称,因此将销毁,因为您将看到`E211:File {src}不再可用,{dest}在哪里是新缓冲区的名称?
–尼古拉斯·库萨尔(Nicholas Cousar)
20年8月29日在16:38
#2 楼
您可以放到Netrw并在其中重命名文件。如果要编辑的文件在当前目录中,请执行以下操作: />导航到文件,按R键,然后更改名称。
按Enter键编辑文件。 br />如果切换到该文件,则该文件为空。
:edit .
如果不想更改整个Vim会话的目录,而只想更改当前缓冲区的目录,则可以改为:
:cd %:p:h
评论
直接输入:edit%:p:h似乎也可以。
–MladenJablanović
16年2月11日在8:13
:E也会打开netrw
– Wisbucky
19年9月12日在22:52
我使用:ex
–罗伯特
20年7月10日在16:21
#3 楼
我多年来一直在使用Rename2插件。它重命名当前缓冲区和磁盘上的文件::Rename {newname}
编辑:我在github上找到了一个
.vimrc
文件: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>
评论
如果使用此代码段的用户需要使用旧文件删除缓冲区,则可以添加exec':bd'。静音!rm…行后的old_file
–德米特里·科罗里奥夫(Dmitry Koroliov)
20年7月6日,0:19
#4 楼
最好的方法是使用:Move
,如OrangTux所说。为了完整起见,您还可以在命令模式下使用bang(!
)在vi编辑器中执行终端命令。从您的缓冲区列表中。#5 楼
您可以只从vim中执行shell命令。有点脏,因为旧缓冲区仍然存在,但是使用NerdTree插件对我来说已经足够了:!mv <current path> <new path>
评论
欢迎来到Vi和Vim!
– D. Ben Knoble♦
20 Sep 9 '13 at:40
#6 楼
在Vim中重命名文件的一种简单方法是:Explore
命令。导航到要重命名的文件,而不是重命名文件。
评论
相关:stackoverflow.com/questions/1205286/…我有兴趣在neovim中做到这一点
@ MigueldeVal-Borro只需使用vim-eunuch。它也适用于Neovim。