Bulan lalu saya meneliti dua pertanyaan sejarah. Saya awalnya memposting hasil sebagai utas di Twitter, tetapi sekarang saya menggandakannya sebagai artikel.
Mengapa vim menggunakan hjkl
Pertanyaan : Mengapa vim menggunakan hjkl dan bukan panah untuk navigasi?
Penjelasan umum : Agar jari tidak meninggalkan baris rumah.
Penjelasan historis : Bill Joy mengembangkan vi pada terminal video ADM-3A, yang tidak memiliki tombol panah individu. Jika Anda melihat keyboard ADM, ada tanda panah di tombol hjkl. Joy menggunakan logika yang sama untuk vi, dan kemudian untuk Vim.
Penjelasan yang lebih historis : Sebenarnya aneh kalau di ADM hjkl digunakan untuk panah. Mengapa tepatnya surat-surat ini?
Ada alasan bagus untuk ini. Lihat tabel karakter ASCII versi 1967:
7 . 32 โ " ", , -. , QWERTY-, , . "" , . . , "backspace", ctrl+H ( ^H). 100 1000 000 1000. , , ^J.
ADM, , "backspace" ADM " " . ^H ^J "" "", ^K ^L "" "". ADM hjkl , vi.
JavaScript
: JavaScript' date API 0-11, 1-12. ?
: . , . , date.GetMonth() .
: Java, , , C.
: C ? , C, , ?
tm_date
ANSI C89, . C , Unix-. Unix, , <ctime.c>
C , .
#define SEC 0
#define MIN 1
#define HOUR 2
#define MDAY 3
#define MON 4
#define YEAR 5
#define WDAY 6
#define YDAY 7
#define ISDAY 8
ctime -- (SMH), HMS. , , . Unix 5 , :
int *t;
{
register char *cp, *ncp;
register int *tp;
cp = cbuf;
for (ncp = "Day Mon 00 00:00:00 1900\\n"; *cp++ = *ncp++;);
ncp = &"SunMonTueWedThuFriSat"[3*t[6]];
cp = cbuf;
*cp++ = *ncp++;
*cp++ = *ncp++;
*cp++ = *ncp++;
cp++;
tp = &t[4];
ncp = &"JanFebMarAprMayJunJulAugSepOctNovDec"[(*tp)*3]; // (a)
*cp++ = *ncp++;
*cp++ = *ncp++;
*cp++ = *ncp++;
cp = numb(cp, *--tp); // (b)
cp = numb(cp, *--tp+100); // (c)
cp = numb(cp, *--tp+100);
cp = numb(cp, *--tp+100);
cp =+ 2;
cp = numb(cp, t[YEAR]);
return(cbuf);
}
. (a). , , , , . , (b) HMS (c), . SMH ( ). , , , .
, . , Unix PDP-7. 1970- . , , 10% RAM!
, CPU, โ , , . , , (b), .
: MDAY ( ) , YDAY ( ) โ . " ": . ( ).
. , "" . hjkl, , ASCII- . tm_date, Unix, , , . โ . , .
. , . , - , , - . , , "", , . , , , " ". , , "" .
. , โ . , , , , . , ADM-3A, . , .
. , , , . , , , , . .