Ctrl-V Ctrl-J셸( 아래)을 누르면 인쇄 urxvt
대신 새 줄이 시작됩니다(새 줄의 시작 부분에 커서 위치 지정) ^J
.
내부에 vim
인쇄되어 있습니다 ^@
.
가상 콘솔에서도 같은 일이 발생합니다.
분명히 약간의 전처리가 있습니다 Ctrl-J. 그것은 무엇입니까? 어떻게 영향을 미칠 수 있나요?
$ stty -a
speed 38400 baud; rows 26; columns 101; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke -flusho -extproc
$ echo $TERM
rxvt-unicode-256color
$ urxvt --help |& head -1
rxvt-unicode (urxvt) v9.26 - released: 2021-05-14
UPD나는 이것을 구성하고 있는데 이 동작으로 인해 이것이 작동하지 않을 것이라고 tmux
생각하게 됩니다 .bind-key C-j send-keys C-j
답변1
Bash의 cv는 readline을 통해 처리됩니다.
$ bind -p | grep '"\\C-v":'
"\C-v": quoted-insert
readline(3)에 설명된 대로:
quoted-insert (C-q, C-v)
Add the next character that you type to the line verbatim. This
is how to insert characters like C-q, for example.
Cv를 사용하여 다른 문자를 삽입할 수 있습니다. 예를 들어 Cv Ci는 탭 문자를 삽입합니다. 주어진 문자를 생성하는 문자를 확인하려면 다음을 수행하십시오
man ascii
.
Oct Dec Hex Char Oct Dec Hex Char
────────────────────────────────────────────────────────────────────────
000 0 00 NUL '\0' (null character) 100 64 40 @
001 1 01 SOH (start of heading) 101 65 41 A
002 2 02 STX (start of text) 102 66 42 B
003 3 03 ETX (end of text) 103 67 43 C
004 4 04 EOT (end of transmission) 104 68 44 D
005 5 05 ENQ (enquiry) 105 69 45 E
006 6 06 ACK (acknowledge) 106 70 46 F
007 7 07 BEL '\a' (bell) 107 71 47 G
010 8 08 BS '\b' (backspace) 110 72 48 H
011 9 09 HT '\t' (horizontal tab) 111 73 49 I
012 10 0A LF '\n' (new line) 112 74 4A J
013 11 0B VT '\v' (vertical tab) 113 75 4B K
014 12 0C FF '\f' (form feed) 114 76 4C L
015 13 0D CR '\r' (carriage ret) 115 77 4D M
보시다시피 J는 새 줄과 같은 줄에 있고 I는 가로 탭과 같은 줄에 있습니다.
벨소리를 생성하는 Cv Cg와 같은 다른 예를 사용하여 자신을 확인할 수 있습니다.
$ printf ^G| hexdump -C
00000000 07 |.|
00000001
답변2
Arkadiusz Drabczyk 이 말했듯 readline
이, 잘 처리하세요 C-v
. C-v C-j
그건 그저핸들그들을다르게. 이는 C-j
( Enter
)가 기호 없이도 의미 있게 표현될 수 있기 때문이라고 합니다 ^*
. 이 기호의 문자는 다음과 같이 얻습니다.또는'ing0x40
궁금하신 분들은 문자코드를 보시면 됩니다. 또는 , 에 0x01
해당한다고 말할 수도 있습니다 .^A
0x02
^B
vim
( ^@
) 의 경우도 마찬가지이다.개행 문자를 나타냅니다.. 문서에는 몇 가지 언급이 있습니다.
<NL>
와 같은 방법으로 명령을 분리 할 수도 있습니다'|'
. 삽입하려면 가<NL>
표시 됩니다.CTRL-V CTRL-J
"^@"
https://github.com/vim/vim/blob/v8.2.4027/runtime/doc/cmdline.txt#L652-L653
Nul의 경우 NL
기술적 세부사항:<Nul>
파일의 문자는<NL>
메모리에 저장됩니다. 디스플레이에는 로 나타납니다"^@"
. 파일을 읽고 쓰는 동안 번역이 이루어집니다. 검색 패턴과 일치시키려면 또는 를<Nul>
입력하면 됩니다 . 이것이 바로 당신이 기대하는 것일 수도 있습니다. 내부적으로 이 문자는 검색 패턴에서 a로 대체됩니다. 특이하게도 a를 입력하면 a도 삽입되므로 해당 파일에서도 a가 검색됩니다.CTRL-@
"CTRL-V 000"
<NL>
CTRL-V CTRL-J
<NL>
<Nul>
https://github.com/vim/vim/blob/v8.2.4027/runtime/doc/pattern.txt#L1273-L1280
아마도 null 바이트를 메모리에 개행으로 저장하는 것과 관련이 있을 수 있습니다.