[20231109]bash shell快捷鍵alt+number的問題.txt

lfree發表於2023-11-10

[20231109]bash shell快捷鍵alt+number的問題.txt

--//前一陣子,我想實現12行合併1行的輸出,理論講要使用paste命令加入12個- .輸入命令時候要數輸入了多少-.我知道bash shell有一
--//個快捷鍵alt+number可以產生連續輸入某個字元,但是我一直不知道如何關掉這個功能.有時候誤觸發這個功能,有一些版本每次輸入1
--//個字元相當於輸入多個,我不知道如何關閉,出現這樣情況我基本選擇關閉會話,重新登陸.

--//比如輸入:
$ seq 12 | paste - - - -

--//可以這樣操作,輸入:
seq 12 | paste <alt-4>-
--//然後移動回去加入空格.
--//有一些版本存在bug,比如你再使用方向鍵向左移動,相當於移動向左移動4個字元.使用完成後必須關閉它.
--//打入一個字元會出現4個相同字元的情況.
--//我測試一下,發現使用<ALT+`>可以關閉,好像這個問題存在於早期bash shell版本中。

# man bash
Numeric Arguments
   digit-argument (M-0, M-1, ..., M--)
   Add this digit to the argument already accumulating, or start a new argument.  M-- starts a negative argument.

--//怎麼還能輸入負數,不理解,負數實際上反向操作。
111 222 333<alt +   3><esc><backspae> --//假設游標在最後,刪除3個詞。
111 222 333<alt + - 3><esc><backspae> --//假設游標在1的位置,也能實現相同效果。

universal-argument
    This is another way to specify an argument.  If this command is followed by one or more digits, optionally with a
    leading minus sign, those digits define the argument.  If the command is followed by  digits,  executing
    universal-argument  again ends the numeric argument, but is otherwise ignored.  As a special case, if this command
    is immediately followed by a character that is neither a digit nor minus sign, the argument count for the next
    command is multiplied by four.  The argument count is initially one, so executing this function the first time makes
    the argument count four, a second time makes  the argument count sixteen, and so on.

通用引數

這是指定引數的另一種方法。如果此命令後面跟著一個或多個數字,或者帶有前導負號,則這些數字將定義該引數。如果命令後面跟著數
字,則執行通用引數再次結束數字引數,否則將忽略。作為一種特殊情況,如果這個命令緊接著是一個既不是數字也不是負號的字元,下
一個命令的引數計數乘以4。引數計數最初是1,所以第一次執行這個函式使引數數4,第二次使引數數16,以此類推。
--//不理解?怎麼意思。

--//如果你需要輸出12 個1,如何操作呢?要輸入ctrl+v.
--//<alt+1+2>,<ctrl+v> 1 .

--//另外我還看了一些blog,發現一個技巧就是利用它輸入前面輸入的引數.
--//假設先執行如下命令:
$ echo 1 2 3
1 2 3

$ echo 4 5 6
4 5 6

$ echo 7 8 9
7 8 9

--//要實現echo 1 5 9,可以這樣操作.
<alt+0> <alt+.>    --//顯示echo,輸入空格
<alt+1> <alt+...>  --//顯示1,輸入空格
<alt+2> <alt+..>   --//顯示5,輸入空格
<alt+3> <alt+.>    --//顯示9,回車執行.
--//最後一步可以使用<alt+.>顯示最後一個引數.我個人很少使用這個功能,我喜歡在inputrc定義<insert>鍵抽取最後1個引數。
"\e[2~": yank-last-arg        # insert

--//有一些功能類似vim.比如
$ echo 0123456
--//想刪除123456 6個字元,可以這樣輸入:
<alt+6> <backspace>
<alt+-> 6 <del>
<alt+-> 6 <ctrl+d>
--//負數表示反向操作的意思。

--//連結上有一些介紹:


--//我前面的測試產生12個-.如果要實現輸入12個-加空格,如何操作呢?
$ seq 24 | paste - <alt+2><backspace> <alt+12><ctrl+y>

--// 先<alt+2><backspace> ,刪除"- ",記入快取。
--// 然後<alt+12><ctrl+y>,抽取快取12次。
--// 我的測試無效!!不知道那位有什麼好方法.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2994801/,如需轉載,請註明出處,否則將追究法律責任。

相關文章