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
중요한 메모가 있습니다. 이 >
명령은 실제로 operator 입니다. 즉, 조작 할 텍스트 인 인수 없이는 아무 것도하지 않습니다. 예를 들어
>_ "Indent the current line
>> "Indent the current line
>j "Indent the current and next line
>G "Indent every line
그러나이 명령은 반복되므로 연산자를 제공하지 않으면 서 문자를 저장할 수 있습니다. 루프가 끝날 때, 어떤 작업자가 보류중인 경우 채워집니다_
암시 적으로 인수로 (현재 행)을 .
이제이 루프가 조금 이상하다는 것을 인정할 것이며, 어떤 순간에 모든 텍스트가 어떻게 보이는지 추적하기가 어려울 수 있습니다. 따라서이 간단한 프로그램 을 사용 하여 N 루프 후의 모습을 볼 수 있습니다 .
9로 설정하면 제거 할 약간의 추가 텍스트가 있음을 알 수 있습니다. (현재 줄만).
로 현재 행을 삭제합니다 dd
. 하지만 기다려! 운영자가 언젠가 암시 적으로 채워진 인수를 취해야한다고 어떻게 말했는지 알고 있습니까? 인수는 프로그램의 끝에서 암시 적으로 채워집니다. 그래서 dd
또는 d_
(동등한) 대신에, 우리는 단순히 d
V를 대신해서 채울 수 있습니다 _
.