Bash 在VIM中,一步打开与现有文件同名的空白新文件?

Bash 在VIM中,一步打开与现有文件同名的空白新文件?,bash,ubuntu,vim,vi,Bash,Ubuntu,Vim,Vi,假设我在当前目录中有stuff.txt,其中填充了stuff。我想摆脱它,在vim中创建一个新的stuff.txt。显然我能做到 rm stuff.txt vi stuff.txt 但那是两步,恐怖!有没有办法在不调用rm的情况下将其整合到一个vim/vi调用中?Perphaps在vim上的一些选项,我在查看手册时不知怎么错过了 显而易见的解决方法是在一个名为new.sh的文件中创建如下内容: #!/bin/bash rm $1 vim $1 然后从命令行执行,./new.sh stuff.

假设我在当前目录中有stuff.txt,其中填充了stuff。我想摆脱它,在vim中创建一个新的stuff.txt。显然我能做到

rm stuff.txt
vi stuff.txt
但那是两步,恐怖!有没有办法在不调用rm的情况下将其整合到一个vim/vi调用中?Perphaps在vim上的一些选项,我在查看手册时不知怎么错过了

显而易见的解决方法是在一个名为new.sh的文件中创建如下内容:

#!/bin/bash
rm $1
vim $1

然后从命令行执行,./new.sh stuff.txt,但这似乎有点不合逻辑。我在ubuntu上使用标准bash。

您可以像这样启动
vim

vim -c '%d' stuff.txt
此处
-c
选项为:

-c
加载第一个文件后执行

%d
将在打开文件后删除文件中的所有行

rmed () {
    local EDITOR=${EDITOR:-vi}
    [ -f "$1" ] && rm "$1"
    command $EDITOR "$1"
}
这是一个shell函数,它将删除给定文件,然后使用相同名称的文件打开
$EDITOR
(或
vi
(如果未设置
$EDITOR

$ rmed somefile

您可以编写一个函数/别名/脚本来执行所需操作。
我有一个名为
vix
的脚本,当参数不存在或只有chmod时,它将开始编写shell脚本(shebang行和chmod+x),并在参数存在时对其进行编辑。

也许你应该使用
virm
,因为我不喜欢
rmvi

>stuff.txt
vim的声音$?除了快捷方式外,是否有两个命令可以工作?您可以利用bash并通过
获取最后一个参数$(例如
vim!$
)或使用
M-。
参见post:or
vim-c'%d'-c'w'stuff.txt
,以及
之后的
:q
:e你无法取回东西。当您还需要针对
u
(undo)的内容时,请尝试
vim-c'%d'-c'w'-c'e'stuff.txt
。能够使用undo可能是最好的选择,更不用说使用持久历史,它会变得更加有用。