【问题标题】:Open blank new file with the same name as existing file in one step, in VIM?在VIM中一步打开与现有文件同名的空白新文件?
【发布时间】:2018-02-14 02:34:41
【问题描述】:

假设我在当前目录中有 stuff.txt,里面装满了东西。我想摆脱它,并在 vim 中创建一个新的 stuff.txt。显然我可以做到

rm stuff.txt
vi stuff.txt

但那是两个步骤,太可怕了!有没有办法在不调用 rm 的情况下将其整合到一个 vim/vi 调用中?在查看手册时,我以某种方式错过了 vim 上的一些 -option?

明显的解决方法是在名为 new.sh 的文件中创建类似的内容:

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

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

【问题讨论】:

  • > stuff.txtvim !$?
  • 2 个命令但快捷方式是否有效?您可以利用 bash 并通过 !$(例如 vim !$)或使用 M-. 获取最后一个参数,请参阅帖子:How to use arguments from previous command?

标签: bash ubuntu vim vi


【解决方案1】:

你可以像这样开始vim

vim -c '%d' stuff.txt

这里-c 选项是:

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

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

【讨论】:

  • vim -c '%d' -c 'w' stuff.txt,在:q!:e! 之后,您将无法取回东西。如果您还想针对u(撤消)采取措施,请尝试vim -c '%d' -c 'w' -c 'e' stuff.txt
  • 能够使用撤消可能是最好的选择,更不用说持久历史它变得更加有用。
【解决方案2】:
rmed () {
    local EDITOR=${EDITOR:-vi}
    [ -f "$1" ] && rm "$1"
    command $EDITOR "$1"
}

这是一个 shell 函数,它将删除给定的文件,然后使用同名文件打开 $EDITOR(或 vi,如果未设置 $EDITOR)。

$ rmed somefile

【讨论】:

    【解决方案3】:

    你编写一个函数/别名/脚本来做你想做的事。
    我有一个名为 vix 的脚本,当参数不存在或只有 chmod 时,它将开始编写一个 shell 脚本(shebang 行和 chmod +x),并在它存在时对其进行编辑。
    也许你应该使用virm,因为我不喜欢rmvi 的声音。

    【讨论】:

      猜你喜欢
      • 2010-12-15
      • 1970-01-01
      • 2017-01-01
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 2014-07-04
      相关资源
      最近更新 更多