如何為包含撇號和引號的指令新增別名?

如何為包含撇號和引號的指令新增別名?

由於我之前的問題,我決定

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 創建的""整個別名周圍使用了雙引號,但只有在發出命令後,該別名才可用。logrrlogr

相關內容