简单的 ZSH 函数和名称中包含空格的文件

Simple ZSH function and files with spaces in their name

我已将以下函数放入我的 ~/.zshrc 文件中:

function note() {
    vim $HOME/Dropbox/.md
}

例如,当我用 note "20150209-132501-Recx-new note today.md" 调用它时,它会创建一个新文件,但文件名为“20150209-132501-Recx-new”。我知道这是一个简单的问题,但如何才能用全名创建笔记?

shell 依次执行参数替换和分词。 这意味着你最终执行

vim /home/username/Dropbox/20150209-132501-Recx-new note today.md.md

即你用三个文件名调用 vim。如果你想抑制替换部分的分词,你必须在函数定义中也使用引号

function note() {
    vim "$HOME/Dropbox/.md"
}

并用

调用它
note "20150209-132501-Recx-new note today"

编辑 1: 此版本的 note 将所有参数与单个 space:

连接起来
function note() {
    filename=
    while test $# -gt 1; do shift; filename="$filename "; done
    vim "$HOME/Dropbox/$filename.md"
}

编辑 2: 这可能更容易:

function note() {
    vim "$HOME/Dropbox/$*.md"
}