web-dev-qa-db-ja.com

Enterキーはキャリッジリターン(CR)とは異なります

多くのウェブページは、ASCII Enterキーのコードは13(0d)であると述べています。
Enterキーはキャリッジリターン(CR)と見なされます。
それでは、実験してみましょう。
vimを開いてEnterキーを3回クリックするだけで、何もせずに、ファイルをtest.csvとして保存します。

xxd  test.csv
0000000: 0a0a 0a 

私の結論を得た。
EnterキーのASCII値は0aです。つまり、改行を意味します。これは、復帰(13またはASCIIでは0d)とは異なります。
そうですか?

4

を押すと、ターミナルがキャリッジリターンを送信します Enter、そしてUnixライクなシステムでは、端末driverはそれを改行( "newline")に変換します。

それがstty -aで示されているicrnl機能です。たとえば、

$ stty -a
speed 38400 baud; rows 40; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd 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

プログラム(シェルスクリプトも)をオフにして、実際の復帰文字を読み取って区別することができます。 ControlJ (改行)。

4
Thomas Dickey

の Enter キーはCR文字を送信します(復帰、Ctrl + M、数値13 = 0x0d = 015)。を押すと、シェルプロンプトまたはVi挿入モードで表示されます。 Ctrl+V その後 Enter: Ctrl+V カーネルの組み込みターミナルドライバーや、典型的なシェルやVi(m)を含む多くのターミナルベースのプログラムに、文字通り次の文字を入力するためのキーボードショートカットです。

Vi(m)挿入モードでは、文字Ctrl + Mは「改行の挿入」コマンドにバインドされます。 Viは、ほとんどの入力文字にその文字を挿入することによって反応しますが、いくつかの例外があります。もっとも明らかなのは、文字Ctrl + [ Esc キー送信。

テキストファイルでは、改行はLF文字(改行、Ctrl + J、数値10 = 0x0a = 013)で表されます)。

押す Ctrl+J Viでは実際には同じ効果がありますが、必要に応じて2つのキーストロークを別々のコマンドにバインドできます。違いを観察できます Ctrl+J そして Ctrl+M コマンドモードで: Ctrl+J カーソルを次の行に移動するだけですが、 Ctrl+M カーソルを次の行に移動し、最初の空白以外の文字にも移動します。