เท็มเพลตโปรแกรมสำหรับการพิมพ์สตริง * any *


40

เขียนโปรแกรมด้วยคุณสมบัติต่อไปนี้:

  • เมื่อรันตามที่เป็นอยู่โปรแกรมจะไม่สร้างเอาต์พุต (เช่น 0 ไบต์ของเอาต์พุต)

  • มีที่ตั้งอยู่ภายในโปรแกรม (ที่คุณเลือก: อาจเป็นที่จุดเริ่มต้นจุดสิ้นสุดหรือจุดกึ่งกลาง) ด้วยคุณสมบัติต่อไปนี้: การแก้ไขโปรแกรมผ่านการวางสายใด ๆจะทำให้โปรแกรมที่พิมพ์สตริงนั้นเมื่อ ดำเนินการ

    สิ่งนี้จะต้องใช้งานไม่ว่าสตริงนั้นจะมีเครื่องหมายคำพูดแบ็กสแลชเครื่องหมายความคิดเห็นตัวคั่น NUL ไบต์เป็นต้นหรือไม่ ไม่ว่าคุณจะใส่อะไรไว้ที่ใดก็ตามสตริงนั้นยังคงถูกตีความเป็นสตริงและพิมพ์คำต่อคำทั้งหมด อย่างไรก็ตามคุณสามารถจัดการกับสายอักขระที่ยาวมาก ๆ ได้หากมันจะทำให้คอมไพเลอร์หมดหน่วยความจำหรือสิ่งที่คล้ายกัน (อย่างแม่นยำคุณอย่างน้อยควรจะสามารถจัดการกับสายยาวได้ถึง 1,000 ไบต์หรือสามครั้ง ความยาวของโปรแกรมของคุณแล้วแต่จำนวนใดจะยาวกว่า)

ตัวอย่างของโซลูชันที่ไม่ถูกต้องคือ

print("");
#      ^ text goes here

ใน Python, Perl, Ruby และอื่น ๆ ; แม้ว่าจะใช้งานได้กับสตริงจำนวนมาก แต่จะไม่ทำงานสำหรับสตริงที่มีเครื่องหมายคำพูดคู่หรือสตริงที่มีสตริงย่อย\n(ซึ่งจะตีความว่าเป็นบรรทัดใหม่)

โปรดทราบว่าปัญหานี้อาจเป็นไปไม่ได้ในภาษาส่วนใหญ่ ความท้าทายอย่างน้อยบางส่วนเกี่ยวกับการค้นหาภาษาที่ใช้งานอยู่ ภาษาที่คุณเลือกจะต้องเป็นภาษาโปรแกรมภายใต้คำนิยามของเว็บไซต์นี้เช่นไม่มีการส่งวิธีการแก้ปัญหาในข้อความ

เช่นนี้เป็นที่สั้นที่สุดโปรแกรมแม่แบบชนะ อย่างไรก็ตามอย่าท้อแท้จากการส่งคำตอบแม้ว่าพวกเขาจะไม่สามารถเอาชนะผู้ชนะคนปัจจุบัน! คุณยังคงสามารถแข่งขันเพื่อชิงอันดับที่สองที่สามหรือที่อื่น ๆ หรือเพียงเพื่อหาคำตอบให้ได้มากที่สุด อย่างไรก็ตามคุณควรตรวจสอบให้แน่ใจว่าโปรแกรมของคุณตรงตามข้อกำหนดทั้งหมดก่อนที่จะส่ง การแก้ปัญหาโดยประมาณจะทำให้พลาดจุดที่เป็นปัญหา


โพสต์ Sandbox ที่เกี่ยวข้องเป็นที่นี่

คุณช่วยอธิบายช่วงของตัวละครที่เราต้องการเพื่อรองรับสตริงที่แทรกได้หรือไม่? ASCII? ASCII + ไม่สามารถพิมพ์ได้? ยูนิโคดทั้งหมดหรือไม่
DJMcMayhem

3
256 octets ทั้งหมด ไม่ว่าคุณจะตีความว่าเป็นไบต์หรือ Unicode ขึ้นอยู่กับคุณ มันจะไม่สร้างความแตกต่างมากนักเมื่อพิมพ์ออกมา

1
เจตนาของคำถาม (และวิธีที่ใช้ในปัจจุบัน) คือคุณไม่สามารถมีเอาต์พุตเพิ่มเติมได้อีก คุณมีวิธีแก้ไขปัญหาที่ไม่สามารถปรับได้เพื่อหลีกเลี่ยงหรือไม่ (การใช้ไบต์พิเศษเพื่อหลีกเลี่ยงการเอาท์พุทเล็ดลอดเป็นสิ่งที่ดีกว่าในการสร้างเอาต์พุตจรจัดและไม่เป็นไปตามข้อมูลจำเพาะ)

1
หากสิ่งนี้ไม่จำเป็นต้องมีการเปลี่ยนรหัสแสดงว่ามันน่ารำคาญAWKคุณ1สามารถทำได้
Robert Benson

คำตอบ:


37

Excel, 1 ไบต์

'

เวอร์ชันที่ไม่ดี

'        <-- print the following text,
             and exit the current formula

ฉันไม่คิดว่านี่จะสามารถรับบรรทัดใหม่ได้
Conor O'Brien

3
@ ConorO'Brien มันทำกับ shift + enter
Adam

2
@MrPaulch นี่เป็นวิศวกรรมย้อนยุคที่ค่อนข้างเยอะ ฉันค่อนข้างมั่นใจว่าคำสั่งนี้ซ่อนฟังก์ชันที่ไม่รู้จักอื่น ๆ บางอย่างเช่นระบบล่ม
อดัม

1
สิ่งนี้สามารถใช้งานได้กับ OpenOffice Calc @มันถูกใช้โดยอัตโนมัติเมื่อคุณตั้งค่ามือถือรูปแบบ
Ismael Miguel

1
โดยส่วนตัวแล้วฉันคิดว่าคำตอบนี้ใช้ได้ @Dennis ลบโพสต์ Mathematica ของฉันซึ่งใช้แนวคิดเดียวกัน ส่วนหน้าของ excel จะเก็บ test // "" "/// เป็นสตริงที่ไม่ใช่คำต่อคำดังนั้นโดยตรรกะของเขาสิ่งนี้ควรถูกลบนี่คือวิธีที่มันจัดเก็บ <Row> <Cell> <Data ss: Type =" สตริง "x: Ticked =" 1 "> ทดสอบ // & quot; & quot; & quot; /// </Data> </Cell> </Row>
Kelly Lowder


15

Perl 5 , 30 21 19 ไบต์

พิมพ์ <data> __ END__

ลองออนไลน์!

ขึ้นบรรทัดใหม่ สิ่งนี้ทำให้การใช้คุณสมบัติ Perl ซึ่งช่วยให้ข้อมูลโดยพลการจะผนวกเข้ากับไฟล์ต้นฉบับซึ่งสามารถอ่านได้ผ่านทางDATAfilehandle เมื่อเราให้ filehandle เป็นอาร์กิวเมนต์จะprintได้รับบริบทรายการซึ่งทำให้ filehandle ส่งคืนรายการของบรรทัดทั้งหมดในไฟล์บรรทัดใหม่ที่รวม (เช่นเดียวกันบรรทัดใหม่ในบรรทัดสุดท้ายจะถูกตัดออก) จากนั้นก็ทำการprintเชื่อมโยงพวกเขาทั้งหมดโดยปริยายเลิกการแยกออกเป็นเส้น ๆ และให้สตริงต้นฉบับที่แน่นอนแก่เราโดยไม่คำนึงว่าบรรทัดใหม่นั้นอยู่ที่ไหน

ขอบคุณ @Dada ที่รู้ว่าไม่จำเป็นต้องจัดการกับการขึ้นบรรทัดใหม่ด้วยตนเองและ @ninjalj และ @b_jonas ที่แต่ละคนเห็นตัวละครที่สามารถตีกอล์ฟได้


2
undef$/ผมไม่คิดว่าคุณจะต้อง เป็นอาร์กิวเมนต์ของprint, <DATA>ที่เรียกว่าในบริบทรายการดังนั้นจึงควรอ่านทุกบรรทัดมี
Dada

คุณถูก. มันจะอ่านอินพุทครั้งละหนึ่งครั้งโดยรักษาตัวคั่นบรรทัดไว้จากนั้นก็ต่อข้อมูลทั้งหมดเมื่อพิมพ์โดยปริยายดังนั้นจึงไม่จำเป็นที่จะต้องเบลอในตอนแรก นั่นคือการประหยัด 8 ไบต์เช่นกัน ฉันจะไปแก้ไขโพสต์

4
คุณสามารถใช้แทน__END__ __DATA__
ninjalj

สิ่งที่ @ninjalj พูดบวกคุณสามารถละเว้นการขึ้นบรรทัดใหม่หลังจากเครื่องหมายมากกว่า (แต่คุณจำเป็นต้องขึ้นบรรทัดใหม่เมื่อสิ้นสุดโปรแกรม)
b_jonas

14

Zsh, 6 ไบต์

<<'
'

มีการขึ้นบรรทัดใหม่ สตริงถูกแทรกที่ส่วนท้ายของโปรแกรม

ทุบตี, 20 17 ไบต์

ขอบคุณAdam ที่ลบ 3 ไบต์

exec sed 1d "$0"

* nix shell script 21 14 ไบต์

ขอบคุณAdam ที่ลบ 7 ไบต์

#!/bin/sed 1d

1
@Copper มีการขึ้นบรรทัดใหม่ที่ต่อท้าย สตริงจะถูกแทรกหลังจากนั้น
jimmy23013

อ่าฉันเข้าใจแล้ว ขอบคุณสำหรับการแก้ไขฉัน!
ทองแดง

โซลูชั่น 6 / 9- ไบต์ดูเหมือนว่าพวกเขาใช้ประโยชน์จากบั๊กในล่ามให้ฉัน (ไม่ใช่ว่าไม่ได้รับอนุญาตแน่นอน) (AFAICT กับการทดลองบางอย่างพวกเขากำลังมองหาการขึ้นบรรทัดใหม่ด้วยตัวเอง แต่บรรทัดนั้นถูกกำหนดโดยการแยกการขึ้นบรรทัดใหม่ดังนั้นการขึ้นบรรทัดใหม่ด้วยตัวเองจะไม่เกิดขึ้น) zshโซลูชันดูเหมือนถูกต้อง อย่างไรก็ตามbashโซลูชันขนาด 9 ไบต์นั้นผิด (มันเพิ่มบรรทัดใหม่ต่อท้ายหากไฟล์ไม่มี)

@ ais523 ดูเหมือนว่าจะเป็นจุดบกพร่องสำหรับฉันเช่นกัน และฉันไม่ได้คาดหวังให้ล่ามเหล่านั้นได้รับอนุญาต ลบโซลูชัน Bash ออก
jimmy23013

1
สำหรับ bash คุณสามารถใช้sed 1dแทนtail -n+2
Adam

13

brainfuck ( Brainfuck ที่อ่านไม่ได้ ), 9 ไบต์

,+[-.,+]!

ผนวกอินพุตต่อท้าย ตอนนี้ไม่มีการขึ้นบรรทัดใหม่

มองหาภาษาที่ยอมรับการป้อนข้อมูลต่อท้ายโปรแกรม, brainfuck ดูเหมือนจะเป็นไปได้ที่แตกต่างกัน; ล่ามสมองหลายคนที่เขียนด้วย esolangs ใช้ทั้งโปรแกรมและอินพุตของโปรแกรมจากอินพุตมาตรฐานและดังนั้นจึงต้องมีวิธีที่จะบอกระหว่างพวกเขา มีการประชุมที่ใช้ในกรณีนี้ว่า!ตัวละครแตกต่างระหว่างโปรแกรมและการป้อนข้อมูล, เคล็ดลับที่มักจะใช้ในการเขียนโปรแกรม brainfuck สั้น ๆ เช่น,[.,]!Hello, world!; สิ่งนี้จะสร้างสำเนียงที่แตกต่างของสมองที่!มีความหมายแตกต่างจากปกติ

ในทางทฤษฎีแล้วเราสามารถหาหนึ่งในล่ามเหล่านี้และให้catโปรแกรมเพื่อทำตามข้อกำหนด มีความละเอียดอ่อนที่สำคัญแม้ว่า; โดยปกติแล้ว brainfuck จะใช้ค่า 256 ค่าสำหรับแต่ละเซลล์มี 256 octets และจำเป็นต้องใช้สำหรับ EOF ดังนั้นถ้าเราต้องการที่จะสามารถสะท้อน 256 octets ทั้งหมดเราไม่สามารถตรวจพบ EOF ได้ทั้งหมดและจะต้องจบโปรแกรมด้วยวิธีอื่น กล่าวอีกนัยหนึ่งเราต้องค้นหาการใช้งานที่ให้ค่า octets 256 ค่าและ EOF 257 ต่างกันหรือเกิดปัญหาขึ้นกับ EOF

ป้อนไม่สามารถอ่านได้ มีล่ามสมองใน Unreadable ที่ถือกำเนิดความท้าทายนี้และยอมรับการป้อนข้อมูลหลังจาก!; นอกจากนี้ซึ่งแตกต่างจากล่ามสมองส่วนใหญ่จะใช้เซลล์ bignum และ -1 สำหรับ EOF ทำให้ EOF แตกต่างจาก 256 octets ที่เป็นไปได้อื่น ๆ ดังนั้นโดยใช้ Unusedable Brainfuck เป็นล่ามที่เฉพาะเจาะจงสำหรับโปรแกรมเราสามารถแก้ปัญหาความท้าทายในเวลาเพียง 9 ไบต์ผ่านการเขียนcatโปรแกรมbrainfuck ที่หยุดอยู่กับ EOF = -1

เป็นไปได้ไหมที่จะทำได้ดีกว่า เราสามารถลองโปรแกรม 7- ไบต์ต่อไปนี้ซึ่งพยายามที่จะเอาท์พุท EOF ที่ส่วนท้ายของสตริงก่อนที่มันจะแตกออกจากลูป:

+[,.+]!

ลักษณะการทำงานของโปรแกรมนี้ขึ้นอยู่กับพฤติกรรมของล่ามอ่านไม่ได้อยู่กับเงื่อนไขข้อผิดพลาด (ดังนั้นมันขึ้นอยู่ไม่เพียง แต่ในการดำเนินงานของ brainfuck แต่ในการดำเนินการที่ใช้ในการทำงานการดำเนินงานของ brainfuck) ที่ น่าเสียดายที่ล่ามที่อ่านไม่ได้ฉันใช้ข้อผิดพลาดเอาต์พุตกับเอาต์พุตมาตรฐานหมายความว่าการบันทึกนี้ไม่ทำงาน หากใครรู้ว่าล่ามที่อ่านไม่ได้ที่ออกจากความพยายามที่จะส่งออก EOF หรือข้ามความพยายามอย่างเงียบ ๆ แจ้งให้เราทราบ นั่นจะเป็นทางออกเจ็ดไบต์ที่นั่น


1
,[.,]!ทำงานที่นี่และมีขนาด 6 ไบต์ (เพียงทำเครื่องหมายในช่องที่ทำเครื่องหมายไว้!) นอกจากนี้ยังยุติ
FinW

@FinW: ฉันไม่สามารถหาวิธีป้อน NUL ไบต์ลงในเว็บไซต์นั้นได้ แต่รหัสนั้นจะยุติก่อนเวลาหากเห็นอย่างใดอย่างหนึ่ง

มันทำงานได้ดีโดยไม่มีไบต์ NUL เมื่อฉันทำ
FinW

1
คุณมี,(อ่านอินพุตมาตรฐานไปยังองค์ประกอบเทปปัจจุบัน) ตามด้วย](ห่วงออกจากถ้าองค์ประกอบเทปปัจจุบันเป็น 0) ดังนั้นการอ่านอินพุตไบต์ที่มีค่า 0 (เช่น NUL) จะทำให้เกิดการวนซ้ำ

แต่ถ้าล่ามไม่อ่านอินพุต (เช่นจุดสิ้นสุดของสตริงหลังจากนั้น!) มันจะตั้งค่าองค์ประกอบเทปปัจจุบันเป็น 0 โดยอัตโนมัติดังนั้นจึงสิ้นสุดการวนซ้ำ
FinW

9

Dyalog APL ขนาด 11 ไบต์

ต่อไปนี้เป็นเนื้อหาของฟังก์ชันf :

2↓⎕CR'f'⋄→

มีการขึ้นบรรทัดใหม่ตามหลังซึ่งอาจแทรกสิ่งใดก็ได้

2↓ ปล่อยสองบรรทัดแรก (ส่วนหัวและบรรทัดนี้) ของ

⎕CR'f'C haracter R epresentation ของ

แล้วก็

เลิก


9

Ruby, 20 ไบต์

พิมพ์ * ข้อมูล
__END__

ข้อมูลเข้าที่ท้าย (หลังจากขึ้นบรรทัดใหม่) DATAสำนวนเป็นหนึ่งในหลายที่ทับทิมขโมยมาจาก Perl

ลองใช้กับ eval.in: https://eval.in/684370


1
มันไม่เพียงขโมยมันก็ยังจะสั้น ...
simbabque

9

JavaScript + HTML5 DOM, 163 ไบต์

<html><body><script>fetch(location).then((r)=>r.text().then((t)=>console.log(t.slice(145,t.lastIndexOf("</b")))));document.body.remove()</script></body></html>

คุณสามารถแทรกอะไรก็ได้ที่คุณชอบตรงหน้าแท็กปิดตัว สิ่งนี้ทำงานโดยดึงแหล่งที่มาของหน้าเว็บและเปิดรหัสการเปิดและการปิดแท็ก

นักเตะตัวจริงกำลังหาวิธีที่จะหนีจากวงวนไม่สิ้นสุด การวางwhile(true){}หน้าเว็บบล็อกการโทรกลับทั้งหมดตลอดไปการแช่แข็งการดำเนินการและ JavaScript ไม่มีวิธีหยุดเธรดหลักชั่วคราว อย่างไรก็ตามโค้ดที่ไม่มีอยู่อีกต่อไปจะไม่ทำงานดังนั้นเนื้อหาของเอกสารจะยอมรับ seppuku ในคำสั่งสุดท้ายโดยลบตัวมันเองในขณะที่รอการโคลนเพื่อโหลด

ใช่มันยาวและวงเวียน แต่ความจริงที่ว่ามันเป็นไปได้ใน JS นั้นช่างน่าอัศจรรย์


1
Chrome ได้รับรำคาญทั้งหมดที่สคริปต์ปิดกั้น parser และบ่นเกี่ยวกับพวกเขากลุ่ม ฉันชอบความคิดในการบล็อกตัวแยกวิเคราะห์อย่างจงใจเพื่อป้องกันสคริปต์ใด ๆ ที่อยู่ในนั้นทำลายความพยายามในการพิมพ์ของคุณ

7

PHP, 46 ไบต์

(รวมถึงการลากตามลำดับ)

<?=join([""]+file(__FILE__));halt_compiler();
STRING HERE

ใช่: แม้fileฟังก์ชั่นจะปลอดภัยแบบไบนารี

[""]+ แทนที่ 0 ดัชนี (บรรทัดแรกของไฟล์) ด้วยสตริงว่าง



5

PHP 94 ไบต์

<?$f=fopen(__FILE__,'rb');fseek($f,93);while(false!==($c=fgetc($f)))echo$c;__halt_compiler();

วางสตริงของคุณหลังจากเครื่องหมายอัฒภาคสุดท้าย

สำหรับคุณสมบัติที่คลุมเครือฉันเดาได้ไหม __halt_compiler () ทำสิ่งที่คุณคาดหวังจากชื่อ รหัสก่อนหน้านี้เพียงแค่เปิดไฟล์และเขียนไบต์ใด ๆ หลังจากเครื่องหมายอัฒภาคสุดท้ายไปยัง stdout NUL เบล ฯลฯ ออกมาได้ดี ตัวอักษร Unicode (♪) สับสนใน Windows แต่ฉันคิดว่านั่นเป็นเพียง Windows cmd ที่ unicode


1) ฉันนับ 93 ไบต์ไม่ใช่ 94 2) false!==$c=...ไม่จำเป็นต้องใช้วงเล็บ 3) rbไม่จำเป็นต้องมีเครื่องหมายคำพูด 4) คุณสามารถบันทึกหนึ่งไบต์ด้วยfor($f=fopen(...),fseek($f,88);false!==(...);)echo$c;5) อีกสองไบต์สั้น:<?for($f=fopen(__FILE__,rb);false!==$s=fgets($f,86);)echo$i++?$s:"";__halt_compiler();
ติตัส

6) และอีกสองไบต์ถ้าคุณไม่ใช้พารามิเตอร์ที่สองfgetsและเพิ่ม linebreak ที่ต่อท้ายไปยังเทมเพลต
ติตัส


3

PHP, 48 60 ไบต์

<?=substr(file_get_contents(__FILE__),60);__halt_compiler();STRING HERE

เพียงแค่เริ่มตระหนักว่าการปิด PHP <?ไม่ได้ป้องกันสตริงจากที่มี


คุณมีวงเล็บปิดที่วางผิดที่ ถ่ายโอนไฟล์ neater มากกว่าความพยายามของฉันแม้ว่าฉันคิดว่า substr () จะสำลักไบต์ว่าง - เดาไม่
ToXik-yogHurt

<?die(substr(file_get_contents(__FILE__),48))?>STRING HEREลองนี้: ควรทำงาน. ฉันลอง<?die('a')?>แล้วมันใช้งานได้
Ismael Miguel

@IsmaelMiguel จะไม่ทำงาน dieไม่พิมพ์พารามิเตอร์ แต่ส่งเป็นรหัสออก die(print ...)ที่จะต้อง'be
ติตัส

@ ToXik-yogHurt ฟังก์ชันสตริงส่วนใหญ่มีความปลอดภัยแบบไบนารี fileแม้ ที่จริงตอนนี้ฉันนึกไม่ออกเลย
ติตัส

@Titus ลองdie('text');
Ismael Miguel

2

ไบนารีแลมบ์ดาแคลคูลัส , 1 ไบต์

 [text goes here]

นั่นคือช่องว่างเดียว (0x20) หน้าข้อความ

ลองออนไลน์!

มันทำงานอย่างไร

0x20 = 00100000 2มีการแยกวิเคราะห์เป็น

00    λx.
01        x
0000  (ignored, can be anything)

(ในความเป็นจริงแล้วตัวละครตัวใดก็ได้!"#$%&\'()*+,-./จะใช้ได้ดีพอ ๆ กัน)

เนื่องจากนี่เป็นการแสดงออกที่สมบูรณ์ส่วนที่เหลือของโปรแกรมจึงถูกตีความว่าเป็นข้อมูลอินพุตและภายใต้การประชุมแคลคูลัสแลมบ์ดา I / O แบบไบนารี่ฟังก์ชันเอกลักษณ์λ x xคัดลอกอินพุตโดยตรงไปยังเอาต์พุต


ไม่น่าสนใจเพราะเหตุใดศูนย์บิตต่อท้ายระหว่างฟังก์ชั่นเอกลักษณ์และการแทรกจึงไม่ถูกสะท้อน

@ ais523 ล่ามอ่านไบต์ในเวลาและเมื่อλ x xถูกแยกวิเคราะห์แล้วการขยายได้ถูกใช้ไปแล้ว
Anders Kaseorg

2

Bash ขนาด 17 ไบต์

tail -n+3 $0
exit
<string here>

พัฒนาเป็นอิสระจากคำตอบของ jimmy23013


คุณไม่หมายถึง$0เหรอ นอกเหนือจากนั้นฉันคิดว่ามันใช้งานได้ (ฉันยืนยันว่าไม่ได้แยกวิเคราะห์อะไรหลังจากนั้นexit)

@ ais523 แก้ไขแล้ว! ขอบคุณ
noɥʇʎԀʎzɐɹƆ


1

Excel VBA ขนาด 6 ไบต์

นี่คือส่วนใหญ่เพื่อตอบคำถามของวิธีการพิมพ์ข้อความที่เก็บไว้ในคำตอบของอดัมไปที่หน้าต่างทันทีในสภาพแวดล้อม VBA

การตั้งค่าพื้นฐาน:

ในเซลล์A1ในแผ่นงานให้ใช้สูตรด้านล่างเพื่อเก็บสตริงที่จะพิมพ์ เพื่อประโยชน์ในการนับไบต์นี้จะเพิ่ม 1 ไบต์

'[Your Text Here]

เช่น:

'Hello 
World

ฟังก์ชั่นหน้าต่างทันที 5 + 1 = 6 ไบต์

?[A1]

+1 Byte สำหรับ a 'in A1


0

เป็นกลุ่ม (ในโหมด ex), 28 ไบต์

#!/bin/ex -c ':1d' -c ':wq'
[string]

28 ไบต์รวมบรรทัดใหม่ล่าสุด


0

เป็นกลุ่ม 738 ไบต์

:imap <esc> <c-v><esc>
:imap <c-a> <c-v><c-a>
:imap <c-b> <c-v><c-b>
:imap <c-c> <c-v><c-c>
:imap <c-d> <c-v><c-d>
:imap <c-e> <c-v><c-e>
:imap <c-f> <c-v><c-f>
:imap <c-g> <c-v><c-g>
:imap <c-h> <c-v><c-h>
:imap <c-i> <c-v><c-i>
:imap <c-j> <c-v><c-j>
:imap <c-k> <c-v><c-k>
:imap <c-l> <c-v><c-l>
:imap <c-m> <c-v><c-m>
:imap <c-n> <c-v><c-n>
:imap <c-o> <c-v><c-o>
:imap <c-p> <c-v><c-p>
:imap <c-q> <c-v><c-q>
:imap <c-r> <c-v><c-r>
:imap <c-s> <c-v><c-s>
:imap <c-t> <c-v><c-t>
:imap <c-u> <c-v><c-u>
:imap <c-v> <c-v><c-v>
:imap <c-w> <c-v><c-w>
:imap <c-x> <c-v><c-x>
:imap <c-y> <c-v><c-y>
:imap <c-z> <c-v><c-z>
:imap <c-@> <c-v><c-@>
:imap <c-\> <c-v><c-\>
:imap <c-]> <c-v><c-]>
:imap <c-^> <c-v><c-^>
:imap <c-?> <c-v><c-?>
i

Rebinds อักขระควบคุมทั้งหมดในโหมดแทรกเป็น<c-v>ตามด้วยอักขระควบคุมนั้นซึ่งจะป้อนอักขระเหล่านั้นอย่างแท้จริง ^ _ (ตัวคั่นหน่วย) ดูเหมือนจะไม่จำเป็นต้องทำการเชื่อมใหม่เนื่องจากจะได้รับเอาต์พุตตามตัวอักษรตามค่าเริ่มต้น

แน่นอนว่าตัวแปรข้อความมาถึงท้ายที่สุดแล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.