明らかな不正行為:

明らかな不正行為:

コマンドを実行したい。

foo --bar=baz <16 zeroes>

16個の0 *を効率的に入力する方法は?Alt長押しすると、次の1 6 0操作が160回繰り返されますが、これは私が望むものではありません。 EmacsではAlt-[number]orを使用できますが、Ctrl-u 1 6 Ctrl-u 0bashではCtrl-u現在入力されている行を終了し、次の0は行に0を追加します。

もし私がするなら

foo --bar=baz $(printf '0%.0s' {1..16})

次に、代わりにhistory上記の内容を正確に表示しますfoo --bar=baz 0000000000000000。つまり、bashは私が望む方法で動作しません。 (編集する:要は、コマンド置換を使わずに特定の数のゼロを入力したいということです$(...)

(*)「効率的」の技術的定義は「O(log n)キーストローク」だと思います。この定義によれば、16桁(すべての値16に対して)に定数を加えた値と同じです。効率的です。

答え1

努力する

エコAlt+1Alt+6Ctrl+V0

16個のゼロを挿入するには(少なくともアメリカ/イギリスのQWERTYキーボードを使用していると仮定)、6回のキーを押す必要があります(Alt1と6の両方を保持できます)。

vi標準モード(set -o vi)を使用して次のように入力することもできます。

エコEsc0x16p

(また6つのキー入力)。

emacs複数の単一文字()を繰り返すために使用できる対応するパターンは、では有効ですが、では無効です。echo 0Ctrl+WAlt+1Alt+6Ctrl+Yzshbash

これらすべてはまたzsh(そしてtcshそれらがどこから来たのか)動作します。を使用すると、zsh塗りつぶし変数拡張フラグを使用し、次のように拡張することもできますTab

エコ${(l:16::0:)}Tab

(明らかにもっと多くのキーストロークがあります)。

を使用してを使用して拡張するbashこともできます。ただし、行のすべての項目を拡張することに注意してください(グローバル変数ではありません)。bash$(printf '0%.0s' {1..16})Ctrl+Alt+E

最小限のキーストロークでゲームをプレイするには、繰り返し数に応じてサイズ変更されたキーにウィジェットをバインド<some-number>XできXます<some-number>。そして<some-number>36進数をさらに減らしてください。

zsh(にバインディング)F8

repeat-string() {
  REPLY=
  repeat $1 REPLY+=$2
}
expand-repeat() {
  emulate -L zsh
  set -o rematchpcre
  local match mbegin mend MATCH MBEGIN MEND REPLY
  if [[ $LBUFFER =~ '^(.*?)([[:alnum:]]+)(.)$' ]]; then
    repeat-string $((36#$match[2])) $match[3]
    LBUFFER=$match[1]$REPLY
  else
    return 1
  fi
}
zle -N expand-repeat
bindkey "$terminfo[kf8]" expand-repeat

次に、16個のゼロに対して次のように入力します。

エコg0F8

(3回のキー入力)デフォルトの数字は36gです16

これで、これを16個のゼロを挿入するキーでさらに簡素化できます。これは不正行為かもしれません。F22個0(または2個$STRING、デフォルトは0)、3、16 F3...最大19個までバインドできます。任意のウィジェットを定義できれば可能性は無関心です。0F1F60

おそらくキーを押し続けると、01回のキーを押すだけで必要なだけゼロを挿入できることに注意する必要があります。 :-)

答え2

ターミナルエミュレータがキーストローク(タブ切り替えなど)を使用しないと仮定すると、通常のxtermが機能するため、を押すことができますAlt-1 6 Ctrl-V 0。繰り返したい数字と文字を分離するにはControl-Vが必要です(文字を繰り返す場合は必要ありません)。

(これはreadlineという関数なので、関連する修飾キーを変更するためにdigit-argument使用できます。)bind

答え3

Emacsは通常、C-q数値入力と区切られたプレフィックス引数を使用します。

BashはXON / XOFFフロー制御の問題を回避するためにCtrl+v代わりを使用します。C-q

だからあなたは使用することができますAlt+1 Alt+6 Ctrl+v 0

答え4

マクロを使用してください:

バインドされたファンクションキーF8に最終的に2が掛けられます。言葉(前のスペース)(発見されたF8キーコードを使用Ctrl-V F8):

$ bind '"\e[19~": "\C-w\C-y\C-y"'

同じ文字を送ると~/.inputrc

$ echo '"\e[19~": "\C-w\C-y\C-y"' >> ~/.inputrc

次に、次のように入力します。

エコ0F8F8F8F8

2^4乗算0を求めます。 (まだ5回のキー入力)

または、次のように入力してください。

エコブックF8F8F8

この本から2^3の単語を入手してください。

より速く:

4を掛けます:

$ bind '"\e[19~": "\C-w\C-y\C-y\C-w\C-y\C-y"'

エコ0F8F8

キー3つ。

8を掛けます(ファンクションキーと同じ数字)。

$ bind '"\e[19~": "\C-w\C-y\C-y\C-w\C-y\C-y\C-w\C-y\C-y"'

エコ00F8

それでも3つのボタンがあります。

だまされますか?

トリックを書くには16を掛けます。

$ bind '"\e[19~": "\C-w\C-y\C-y\C-w\C-y\C-y\C-w\C-y\C-y\C-w\C-y\C-y"'

エコ0F8

ボタンは2つだけです。 (まだ便利なシンプルな機能)

^^^^^^^^^^^^^^^^^^(36進数?ハ!):-P

明らかな不正行為:

$ bind '"\e[19~": "0000000000000000"'

エコF8

1つだけ(例:一つ) キー入力.



バインディングの変更ctrl+U:

次のアドレスに送信してください~/.inputrc

echo '"\C-u": universal-argument >> ~/.inputrc

~/.inputrcファイルをもう一度読んでください。

ctrl+Xctrl+R

(必要に応じて)emacsの規則に従ってください。

foo --bar=baz ctrl+U16 ctrl+U0

7キー(「設定」の後)。

やや短い:

「universal-argument」にデフォルトの「4を掛ける」を使用し、次に終了します。

 ctrl+V0

foo --bar=baz ctrl+Uctrl+Uctrl+V0

鍵は5つだけです。

alt+n(引数:n)を使用したアクセス

foo --bar=baz Alt+16Ctrl+V0

16個のゼロを取得するには6個のキーが必要です。

キーボードショートカットを変更せずに、次の操作を行います。

bashに 。があればbash C-u kills the currently-being-typed line
"\C-u":unix-line-discard

しかし、これが役に立つかもしれません。
カーソルの前の内容が削除されると、その内容も「キリング」に配置されます。

したがって、消去された内容を消去してctrl+u再度インポートしてください。きれいな線で:「erer it」と入力し、後ろに2回引いて作成します。 (8個の0)を得るために繰り返し、最後にコマンドを入力して後ろに2回引いてください。ctrl+y
000000
00000000

最初のセット(7つのキーを保持ctrl):

00ctrl+Uctrl+Yctrl+Y ctrl+U 

2番目のグループ(5つ)

ctrl+Uctrl+Yctrl+Y ctrl+U 

これにより、クリアリングに8つのゼロが表示され、必要なものを入力します。

foo--bar=bazctrl-Y ctrl-Y 

取得するには:

foo --bar=baz 0000000000000000

アイデアを得たら、必要なものを入力して行の先頭(ctrl-Y)に移動し、上記と同じ手順に従い(最大8つの0)最後に移動して(2回)ctrl-E引っ張ることもできます。

foo --bar=baz ctrl-A00ctrl-Uctrl-Yctrl-Y ctrl-Uctrl-Yctrl-Y ctrl-U ctrl-Ectrl-Yctrl-Y

(コマンド自体に加えて)15個のキーがあります。
私も知っている、短くはありませんが、それは利用可能なものにのみ適用されます。

これは少し短いです。

0000 ctrl-U ctrl-Y ctrl-Y ctrl-Y ctrl-YCtrl-A foo --bar=baz

鍵が11個ですね

関連情報