คำตอบ:
พวกเขาอาจใช้พารามิเตอร์ในตัว-w
ดู:h -w
:
-w {scriptout} All the characters that you type are recorded in the file
"scriptout", until you exit Vim. This is useful if you want
to create a script file to be used with "vim -s" or
":source!". When the "scriptout" file already exists, new
characters are appended. See also |complex-repeat|.
{scriptout} cannot start with a digit.
{not in Vi}
แก้ไขเป็น @B Layer ชี้ให้เห็นว่ารหัสจริงใช้-W
พารามิเตอร์ซึ่งโดยทั่วไปเหมือนกับ-w
แต่ไฟล์บันทึกจะถูกเขียนทับแทนการเพิ่มการกดแป้นต่อท้าย ( :h -W
):
-W {scriptout} Like -w, but do not append, overwrite an existing file.
{not in Vi}
-W
ไม่ใช่-w
(ดูคำตอบของฉัน) แต่ก็ยัง ...
-W
ที่เหมือนกัน
ฉันไม่คิดว่ามันค่อนข้างง่าย แต่คุณสามารถดูรหัส Ruby ด้วยตัวคุณเองที่นี่:
https://github.com/igrigorik/vimgolf/tree/master/lib/vimgolf
ฉันเห็นชั้นเรียนสำหรับการล็อคกุญแจสำหรับหนึ่งคน
นี่คือคำสั่งที่ใช้เรียกใช้vim
ในlib / vimgolf / cli.rb :
vimcmd = GOLFVIM.shellsplit + %W{-Z -n --noplugin --nofork -i NONE +0
-u #{challenge.vimrc_path} -U NONE -W #{challenge.log_path} #{challenge.work_path}}
@statox (เกือบมาก) ถูกต้องเกี่ยวกับ-w outfile
... -W outfile
จริงๆแล้วซึ่งจะเขียนทับไฟล์ที่ส่งอักขระที่พิมพ์ไปแทนที่จะเขียนต่อท้าย แต่อย่างที่ฉันบอกไม่ใช่ "ค่อนข้างง่าย" ... เปรียบเทียบเนื้อหาของไฟล์เหล่านั้นและสิ่งที่สร้างโดยเครื่องมือ vimgolf นี่คือปัญหาของคนชั่วที่เกิดขึ้นจริง ...
-W
เอาต์พุตเมื่อคัดลอกแล้ววางที่นี่:
GI0. ý`gvgý`ZZ
อักขระที่ไม่ได้พิมพ์จำนวนมากมี "หลงทางแปล"
-W
เอาท์พุทตามที่ปรากฏบนหน้าจอ:
^VGI0. ^[<80>ý`gvg^A<80>ý`ZZ
นั่นเป็นเรื่องที่น่าเกลียด
vimgolf แสดง / อัพโหลดผลลัพธ์:
<C-V>GI0. <Esc>gvg<C-A>ZZ
อ่าดีกว่า
อัปเดต:ฉันใช้เวลาสองสามนาทีดูสิ่งต่าง ๆ ใกล้ ๆ และมีข้อมูลใหม่ ๆ
อันดับแรกkeylogger class keylog.rbที่ฉันพูดถึงข้างต้นนั้นเป็นปริศนาชิ้นสำคัญ แต่จริงๆแล้วมันค่อนข้างตรงไปตรงมา คีย์โค้ดที่ Vim ปล่อยออกมาและบันทึกไว้ใน-W
ล็อกไฟล์เป็นหนึ่งไบต์หรือสามไบต์ (ระบุโดยค่าไบต์แรกของ 0x80) และมีการแฮชแม็พสำหรับแต่ละชุดสองชุด
รุ่นหนึ่งไบต์แผนที่ค่าไบต์เพื่อเป็นตัวแทนสตริงของ keycode เช่นหรือ0
g
เวอร์ชันสามไบต์คล้ายกันกับสตริง (เช่น<Esc>
หรือ<C-V>
) แต่ใช้เป็นคีย์ค่าที่รวมกันของไบต์สองและสาม มีข้อยกเว้น / มุมกรณีบางอย่างที่จัดการแตกต่างกัน แต่รหัสส่วนใหญ่ได้รับการแก้ไขผ่านการค้นหาอย่างง่ายในแผนที่ทั้งสองนี้
การเห็นว่ารหัสตัวบันทึกคีย์แบบพื้นฐานคืออะไรฉันสามารถบอกได้ว่ามีบางอย่างผิดปกติกับสิ่งที่ฉันเห็นในไฟล์บันทึกรหัส (เช่นตัวอย่างที่วางไว้ด้านบน) ปรากฎว่าฉันควรจะใช้ไฟล์ vimrc ที่จำเป็นโดยกฎ VimGolf โดยเฉพาะในสายนี้
set t_RV=
ผลลัพธ์ในการบันทึกที่ถูกต้อง ตัวอย่าง "ปรากฏบนหน้าจอ" ด้านบนจะมีลักษณะเช่นนี้:
^VGI0. ^[gvg^AZZ
ตอนนี้เราสามารถเห็นเส้นตรงจากสตริง "raw" นี้ไปยังรูปแบบการแสดงผลของ VimGolf