V、54、50バイト
¬ ~9ñ9É 11|á
ñ2ñ20lá
ñ$18é 9ñ^y|Ehé
Pf xxywk$hP>ñd
オンラインでお試しください!
通常とは異なり、このプログラムには印刷できない文字は含まれていません。
説明:
¬ ~ " Insert the entire printable ASCII range
9ñ ñ " 9 times:
9É " Insert 9 spaces at the beginning of this line
11| " Move to the 11'th column on this line
á<CR> " And append a newline after the 11'th column
バッファは次のようになります。
!
"#
$%
&'
()
*+
,-
./
01
23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
次に、中間を構築します。
2ñ ñ " Two times:
20l " Move 20 characters to the right (because 'l' == 'right', duh)
á<CR> " Append a newline
ここで少し奇妙になります。
$ " Move to the end of this line
18é " Insert 18 spaces before the last character
9ñ " Repeat the following 9 times:
^ " Move to the first non-whitespace character
y| " Yank all the whitespace before the current character.
" We'll call this the "Leading whitespace register"
E " Move to the end of the current WORD (up to before a space)
h " Move back one character
é<CR> " And insert a newline before the current character
P " Paste the leading whitespace for indentation
f " Move forward to a space
xx " Delete two characters
" (Note how we are inbetween the two bottom branches right now)
yw " Yank everything upto the next branch (all spaces)
" We'll paste this on the line up so that we can yank it again later
" To keep track of how far apart the branches are
k$ " Move up a line and to the end of that line
hP " Move back a character and paste the whitespace we yanked
> " Indent this line by one space
ñ " End the loop
ここに重要な注意事項があります。>
このコマンドは、実際にあるオペレータのテキストが上で動作する、それが引数なしで何もしないことを意味し、。例えば、
>_ "Indent the current line
>> "Indent the current line
>j "Indent the current and next line
>G "Indent every line
ただし、このコマンドはループ内にあるため、演算子を指定しないことで文字を保存できます。ループの最後で、保留中の演算子がある場合、_
暗黙的に引数として(現在の行)を埋めます。
ここで、このループは少し奇妙であり、すべてのテキストがどのような状態にあるかを常に把握するのは困難です。したがって、この単純なプログラムを使用して、Nループ後の外観を確認できます。
9に設定すると、削除するテキストが少しあることがわかります。(現在の行だけ)。
したがって、現在の行をで削除しdd
ます。ちょっと待って!演算子が暗黙的に入力される引数を取る必要があると私が言った方法を知っていますか?引数は、プログラムの最後に暗黙的に入力されます。したがって、dd
or d_
(または同等)ではなく、d
Vを埋めてVを埋めること_
ができます。