我已经把下面的函数到我~/.zshrc
文件:简单ZSH功能和文件在他们的名字空间
function note() {
vim $HOME/Dropbox/$1.md
}
当我与note "20150209-132501-Recx-new note today.md"
叫它例如,它创建一个新的文件,但文件名“ 20150209-132501-Recx新”。我意识到这是一个简单的问题,但我怎样才能使用全名创建注释?
我已经把下面的函数到我~/.zshrc
文件:简单ZSH功能和文件在他们的名字空间
function note() {
vim $HOME/Dropbox/$1.md
}
当我与note "20150209-132501-Recx-new note today.md"
叫它例如,它创建一个新的文件,但文件名“ 20150209-132501-Recx新”。我意识到这是一个简单的问题,但我怎样才能使用全名创建注释?
壳执行按照该顺序参数替换和字分割。 这意味着你最终执行
vim /home/username/Dropbox/20150209-132501-Recx-new note today.md.md
也就是说,你用三个文件名称来调用vim。如果要抑制上取代部分字拆分,则必须在函数定义使用引号还有:
function note() {
vim "$HOME/Dropbox/$1.md"
}
与
note "20150209-132501-Recx-new note today"
EDIT 1叫它:这版本note
连接所有参数与单个空间:
function note() {
filename=$1
while test $# -gt 1; do shift; filename="$filename $1"; done
vim "$HOME/Dropbox/$filename.md"
}
编辑2:这可能是更容易:
function note() {
vim "$HOME/Dropbox/$*.md"
}
我不认为我很清楚。我想要做的是这样调用该函数:'注意20150209-132501-Recx-新的注释today'并让它执行此:'VIM“20150209-132501-Recx新笔记今天”'。在函数中放入'vim“$ HOME/Dropbox/$ 1.md”'不能达到目的。有效地将引号忽略 – pdoak 2015-02-11 09:38:46
@pdoak:这是不可能的。外壳总是将空间分开。如果空格应该是文件名的一部分,你必须**使用引号。 – Jens 2015-02-11 09:43:14
你的意思是什么,我想实现是不可能的,或者把'“$ HOME/Dropbox的/ $ 1.md”'引号不会达到我想要的。谢谢你的建议。 – pdoak 2015-02-11 13:14:37
只要你拨打电话时'note'它应该工作的引用文件名(或至少是空格)。至少它在zsh-5.0.5上对我有用,它可能不适用于旧版本(5.0之前)。你是否试过用双引号('vim“$ HOME/Dropbox/$ 1.md”')引用函数内部的完整路径? – Adaephon 2015-02-10 08:29:10