10

当我们给一个不存在的文件命名时,Vim 会创建新文件。这对我来说是不可取的,因为有时我给出错误的文件名并且无意打开文件,然后关闭它。

有没有办法阻止 Vim 打开新文件?例如,当我这样做时vi file1,它应该说File doesn't exist并留在bash终端上(不打开vi窗口)

4

2 回答 2

7

您可以将此功能添加到您的 .bashrc (或等效)中。它在调用 vim 之前检查它的命令行参数是否存在。如果你真的想创建一个新文件,你可以通过--new覆盖检查。

vim() {
    local args=("$@")
    local new=0

    # Check for `--new'.
    for ((i = 0; i < ${#args[@]}; ++i)); do
        if [[ ${args[$i]} = --new ]]; then
            new=1
            unset args[$i]   # Don't pass `--new' to vim.
        fi
    done

    if ! (( new )); then
        for file in "${args[@]}"; do
            [[ $file = -* ]] && continue   # Ignore options.

            if ! [[ -e $file ]]; then
                printf '%s: cannot access %s: No such file or directory\n' "$FUNCNAME" "$file" >&2
                return 1
            fi
        done
    fi

    # Use `command' to invoke the vim binary rather than this function.
    command "$FUNCNAME" "${args[@]}"
}
于 2013-04-18T03:23:44.203 回答
6

:w仅当您使用写入(例如,或:x,等效于:wq)选项时,它才会保存文件。

而是退出:q,并且不会创建任何文件。

于 2013-04-18T03:08:06.500 回答