在vim中,為什麼要用:-1j與上面的行連接?

在vim中,為什麼要用:-1j與上面的行連接?

在vim中,為什麼要跟:-1j上面那行連結呢?

例如,:g/^ /-1j連接以空格開頭的所有行。

當你了解它們是如何產生的時,這些命令就更容易記住,在這種情況下我已經預料到了:g/^ /-1J

-1move 移動到上面的行並J與下面的行連接。

答案1

您無法在命令列上使用普通命令按原樣

在 中:g/^ /-1jj是縮寫:join:你向上一行(-1也可能是-)然後執行:join

:g/^ /-1J,對 Vim 來說沒有任何意義:您正在使用超出其上下文的正常模式命令,因此基本上,除了回顯明確的錯誤訊息之外,J它不會執行任何操作。-1

Vim 需要 Ex 指令,而不是普通模式指令。

您的困惑可能來自於冒號只需要一次,因此您無法辨識 Ex 指令。如果我們添加幾個冒號,完整的命令可能對您更有意義:

:g/^ /:-1:j

若要在命令列上使用正常模式命令,請使用:norm

:g/^ /-1norm J

答案2

中有兩種類型的命令vi。有些命令可以在文件中的任何位置直接從命令模式調用(我不確定這些命令是否有特定的名稱),並且有些命令來自ex專門對行(而不是對行)進行操作的命令。:字元來呼叫它們。

通常,只有ex命令可以與命令一起使用:g

相關內容