当我们给一个不存在的文件命名时,Vim 会创建新文件。这对我来说是不可取的,因为有时我给出错误的文件名并且无意打开文件,然后关闭它。
有没有办法阻止 Vim 打开新文件?例如,当我这样做时vi file1
,它应该说File doesn't exist
并留在bash
终端上(不打开vi
窗口)
您可以将此功能添加到您的 .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[@]}"
}
:w
仅当您使用写入(例如,或:x
,等效于:wq
)选项时,它才会保存文件。
而是退出:q
,并且不会创建任何文件。