
由於我之前的問題,我決定
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