由于我之前的问题,我决定
alias groe= ?vim -c 'normal "+p1Gdddd"' -c ':%s/\n/' -c 'normal"gVGgJy"' -c'q!'?
我不知道如何在我的示例中替换“?s”以使其工作。已经尝试过问号和撇号。任何想法,将不胜感激。谢谢
答案1
使其成为 shell 函数,这样就可以丢失外引号。
groe() {
vim -c 'normal "+p1Gdddd"' -c ':%s/\n/' -c 'normal"gVGgJy"' -c'q!' "$@"
}
那应该vim
用参数-c
, normal "+p1Gdddd"
, -c
, :%s/\n/
, -c
, normal"gVGgJy"
,来调用-cq!
。 at"$@"
扩展为您赋予函数的参数,因此groe foo.txt
应该可以工作。
答案2
“内部”单引号,您可以通过关闭外部单引号来获得单引号,然后添加转义单引号并重新打开外部单引号,例如
echo 'It'\''s ugly.'
换句话说,所有内容'
都将变成'\''
加上外部单引号。
你的别名看起来像这样:
alias groe='vim -c '\''normal "+p1Gdddd"'\'' -c '\'':%s/\n/'\'' -c '\''normal"gVGgJy"'\'' -c'\''q!'\'''
或者您可以使用 C 样式转义$'...'
,其中您只需转义单引号一次,但也转义字符\n
:
echo $'It\'s a newline: \\n'
alias groe=$'vim -c \'normal "+p1Gdddd"\' -c \':%s/\\n/\' -c \'normal"gVGgJy"\' -c\'q!\''
答案3
在 MacOS 上,我发现将以下行放在 my 中.bash_profile
给了我一个别名,该别名仅在以后使用该logr
命令时设置有用的别名:
alias logr="alias r='java -jar LogUtil.jar -gui'"
我在为所有新 shell 创建的""
整个别名周围使用了双引号,但只有在发出命令后,该别名才可用。logr
r
logr