Vim
雙引號和單引號都失敗時設置別名
這個問題與為什麼別名的行為與直接執行 bash 命令不同?因為我已經嘗試過該解決方案,但沒有奏效。我用雙引號替換了所有單引號,反之亦然。該命令不起作用。
我正在嘗試實現一個別名,
sys
這將打開一個我跟踪系統更改的文件sys.md
,附加一個日期,拉出該行,粘貼該行,將其替換-
為 markdown h2 格式的 ‘s,打開一個新行,並為 markdown 項目符號格式插入一個-
。從 vi.stackexchange.com 我收到了一些實現命令的幫助。有用:nvim +'$pu_|r!date' +'norm yypVr-o ' ~/notes/sys.md
當我用雙引號替換單引號時, $pu_ 被評估並且我得到
zsh: event not found: date
所以單引號很重要。但是,當我實現別名時
alias sys="nvim +'$pu_|r!date' +'norm yypVr-o- ' ~/notes/sys.md"
別名失敗。
nvim
opens ,但日期附加到第二行而不是底部。顯然 $pu_ 被評估為來自 BASH 的變數。(nvim
的語法檢查器甚至顯示它被評估。) 反轉雙打和單打以產生alias sys='nvim +"$pu_|r!date" +"norm yypVr-o- " ~/notes/sys.md'
具有相同的行為。反引號,
alias sys=`nvim +"$pu_|r!date" +"norm yypVr-o- " ~/notes/sys.md`
凍結 bash 上
source .zshrc
。我不知道該怎麼做。任何幫助將不勝感激。
只需將其放入 bash 函式中(您可以將函式添加到
.bashrc
):sys() { nvim +'$pu_|r!date' +'norm yypVr-o ' ~/notes/sys.md }
然後您可以像使用別名一樣呼叫它。
如果您唯一的問題是了解如何
single quote
在單引號字元串中包含一個字元,那麼這裡是方法。採用:'\''
對於
single quote
單引號字元串中的字元。這會結束目前引用的字元串,然後插入一個帶引號的引號,然後開始一個新的帶引號的字元串。
順便說一句:由於這是一個常見問題,因此
bosh
提供了一種自動化此轉換的方法。您可以獲取schilytools
並編譯它們,然後使用bosh
. 如果你打電話:set -o hashcmds #b aliasname aliasreplacement
in 的值
aliasreplacement
是在 mode 中輸入的raw
,如果您稍後呼叫:alias aliasname
您會以正確引用的形式看到別名,如果您輸入
alias -R aliasname
raw
您會在模式中看到別名。