เลื่อนเคอร์เซอร์ไปที่จุดสิ้นสุดไฟล์ในกลุ่ม


409

เมื่อฉันต้องการให้เคอร์เซอร์ไปที่จุดสิ้นสุดของไฟล์ (เช่นจุดสิ้นสุดของบรรทัดสุดท้าย) ใน Vim ฉันต้องพิมพ์การกดแป้นหกครั้ง:

<ESC>G$a- ซึ่งแปลเป็นESC+ Shiftg+ Shift4+ aบนเค้าโครงแป้นพิมพ์ของฉัน

ฉันจะทำสิ่งนี้ได้อย่างมีประสิทธิภาพมากขึ้นได้อย่างไร

เนื่องจากฉันทำงานกับเครื่องที่แตกต่างกันเป็นประจำฉันไม่สามารถเปลี่ยน. vimrc ได้ตลอดเวลาดังนั้นฉันจึงค้นหาคำตอบโดยไม่ต้องแก้ไขหรือสร้างไฟล์นั้น


8
เพียงแค่ต้องการชี้ให้เห็นคำสั่งที่คุณแสดงควรจะเป็นดังนี้: <esc>G$aคุณแสดงการเปลี่ยนแปลงโดยการทำให้ตัวอักษรตัวพิมพ์ใหญ่ และคุณแสดง$แทน shift + 4 เนื่องจากไม่ว่าคีย์บอร์ดจะทำงานอย่างไรของปุ่มนี้ ( $) จะไม่เปลี่ยน แต่ถ้าคุณกด Shift + 4 ความหมายก็สามารถเปลี่ยนได้ :)
greduan

3
@Eduan ฉันเห็นด้วยโดยทั่วไป แต่ในกรณีนี้การกดปุ่มจริงก็มีความเกี่ยวข้องเช่นกัน ฉันเพิ่มทั้ง :-)
timss

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

1
@ สิ่งที่ IC ฉันเข้าใจได้ แค่อยากจะชี้ให้เห็นในอนาคตคุณก็รู้ :)
greduan

คำตอบ:


410

ไม่จำเป็นต้องชัดเจนไปที่ปลายสายก่อนที่จะทำaใช้A;
ต่อท้ายข้อความเมื่อสิ้นสุดบรรทัด [นับ] ครั้ง

<ESC>GA


3
หากคุณต้องการที่จะอยู่ในโหมดปกติลองG)(หรือ<ESC>G)ถ้าคุณอยู่ในโหมดแทรกและต้องการที่จะจบในโหมดปกติผ่านตัวละครตัวสุดท้าย) จำนวนการกดแป้นที่เท่ากัน แต่จะสิ้นสุดในโหมดปกติแทนโหมดแทรก ฉันพบว่ามีประโยชน์ในบางครั้งเมื่อฉันต้องการเรียกใช้คำสั่งปกติบางคำในคำสุดท้ายแทนที่จะเป็นคำสั่งโหมดแทรกหรือแก้ไข
Alejandro

1
@Alejandro ในขณะที่มีประโยชน์)การเคลื่อนไหวในประโยคข้างหน้าและจะดังนั้นจึงไม่ไปถึงปลายสายถ้าเช่นบรรทัดสุดท้ายคือ[count] This is a test. Foo bar.มันจะใช้งานได้กับรหัสจำนวนมากซึ่งมักจะไม่ถือว่าเป็นประโยคและจะไปยังจุดสิ้นสุดต่อไป
timss

หากคุณวางแผนที่จะเขียนบรรทัดถัดไป<ESC> G oจะทำการคืนค่าขนส่งและทำให้คุณอยู่ในโหมดแทรกในบรรทัดถัดไป (ในตอนท้ายของไฟล์) ซึ่งจะช่วยประหยัดการกดแป้นพิมพ์อีกสองสามครั้ง
broc.seib

1
G$นอกจากนี้หากคุณไม่ต้องการที่จะเปลี่ยนไปใช้โหมดแทรก
BladeMight

498

นี่คือเร็วกว่า เพียงแค่ใช้สิ่งนี้

:$

16
สิ่งนี้ไม่ย้ายไปยังคอลัมน์สุดท้ายเฉพาะกับบรรทัดสุดท้าย
Rajeshwar

6
หากคุณเพียงแค่ต้องการไปที่จุดสิ้นสุดไฟล์อย่างรวดเร็วและแป้นพิมพ์ลัดของคุณจะเลอะนี่เป็นคำสั่งที่ถูกต้อง ขอบคุณ!
joemar.ct

9
: $ + End จะทำในกรณีนั้น
karthik

1
สิ่งนี้ต้องการ <ENTER> ที่ส่วนท้ายรวมทั้งยังต้องไปยังจุดสิ้นสุดของบรรทัดซึ่งทำให้ไม่เร็วขึ้น
Alejandro

1
: $ จะหลอกลวง! ไปที่จุดสิ้นสุดของไฟล์ตามคำถามที่ถาม! ขอบคุณ
Sijan Shrestha

130

กดEscปุ่มแล้วกด: Shift+G


3
สิ่งนี้จะไปที่จุดเริ่มต้นของบรรทัดสุดท้ายไม่ใช่จุดสิ้นสุดของไฟล์
จอร์แดนวิ่ง

5
นี่จะไปยังจุดสิ้นสุดของไฟล์สำหรับฉันและเป็น
ปุ่มลัดที่

G เก็บหมายเลขคอลัมน์ไว้เหมือนเดิม (ถ้าเป็นไปได้) และย้ายไปที่บรรทัดสุดท้าย จาค็อบน่าจะเป็นที่สุดของบรรทัดและจอร์แดนที่ด้านหน้าเมื่อเรียกใช้คำสั่ง
run_the_race

39

สำหรับผู้เริ่มต้นไม่จำเป็นต้องมีการส่งคืน G$จะทำ. และคุณกำลังทำให้เข้าใจผิดโดยการนับ<Esc>และaความยาวของคำสั่งโหมดปกติ

อย่างไรก็ตามคุณสามารถใช้Ctrl+ Endหากคุณต้องการ


8
มันCtrl-END
zmo

ฉันไม่ได้ - Endปุ่มบนแป้นพิมพ์ (ถ้านั่นคือสิ่งที่คุณหมายถึง)

อันที่จริงคำตอบโดยการแสดง TIMSS ที่ผมได้เป็นอย่างดีในการนับ<ESC>และaเพราะเขาหรือเธอรู้วิธีที่จะแทนที่ด้วยShift+$, a A

1
@what แป้นพิมพ์แล็ปท็อปส่วนใหญ่ในปัจจุบันมีบ้าน / วางใส่ในขึ้น / ลง / ซ้าย / ขวาพร้อมกับปุ่ม Fn ถ้าพวกเขาไม่ได้มีกุญแจบ้าน / ที่ปลายทุ่มเท
phuclv

22

ฉันคิดว่าคำถามคือ "ย้ายเคอร์เซอร์ไปที่จุดสิ้นสุดของไฟล์ในกลุ่ม"?

End-of-file: Esc+ G
Begin-of-file Esc+ g(หรือggถ้าคุณอยู่ในพื้นที่คำสั่งอยู่แล้ว)


21

Gวิธีที่ดีที่สุดที่จะไปบรรทัดสุดท้ายของไฟล์อยู่กับ สิ่งนี้จะเลื่อนเคอร์เซอร์ไปที่บรรทัดสุดท้ายของไฟล์

$วิธีที่ดีที่สุดที่จะไปคอลัมน์สุดท้ายในสายอยู่กับ สิ่งนี้จะย้ายเคอร์เซอร์ไปที่คอลัมน์สุดท้ายของบรรทัดปัจจุบัน

ดังนั้นเพียงแค่G$คุณไปถึงจุดสิ้นสุดของไฟล์และบรรทัดสุดท้าย

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


13

ไปที่ด้านบน - สองเท่า g

ไปที่ด้านล่าง - Shift+g


1
ยอดเยี่ยม ใช้งานบน Mac ได้เช่นกัน
Bishwas Mishra

11

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


6
  • Ctrl + Home = ข้ามไปที่จุดเริ่มต้นของไฟล์
  • Ctrl + End = ข้ามไปยังจุดสิ้นสุดของไฟล์

3

นี่คือเร็วกว่า:

<ESC>GA

5
ทำไมโพสต์คำตอบที่ซ้ำกันโดยเฉพาะอย่างยิ่งเมื่อมันไม่ได้อธิบายA?
timss

3

คุณสามารถแม็พกับคีย์เช่น F3 ใน. vimrc

inoremap <F3> <Esc>GA

2
ในขณะที่เป็นไปได้นี่เป็นความคิดที่ไม่ดี แต่จุดมุ่งหมายสำหรับหน่วยความจำของกล้ามเนื้อและการใช้งานหรือGA G$
timss

ฉันยังคงชนะด้วย 1 จังหวะสำคัญแม้ว่า :) ในหมายเหตุร้ายแรงมากขึ้นถ้าคุณต้องการบางสิ่งบางอย่างรวดเร็วในกลุ่มการเรียนรู้วิธีการ. vrrc มีประโยชน์
ทิม

มันจะเป็นการดีถ้ามีตัวอย่างแผนที่ที่สมบูรณ์แทนที่จะบอกให้ OP ค้นหามัน เนื่องจากถ้าคุณไม่สามารถหาวิธีการ OP ควรจะทำอย่างไร
FDinoff

1
คุณไม่ได้ "ชนะ" อะไรเลยเพราะคุณต้องย้ายออกจากบ้านของคุณ นอกจากนี้คุณไม่สามารถใช้สิ่งนี้กับคนอื่น ๆ หรือแม้กระทั่ง vi ถ้าคุณบังเอิญใช้มัน คุณไม่ได้ประหยัดเวลาจริง ๆ หากมีสิ่งใดใช้C-endhobbs ตามที่กล่าวไว้
timss

ฉันเห็นด้วยกับความคิดเห็นที่นี่ แต่ฉันทำความสะอาดการทำแผนที่สำหรับคุณ
D. Ben Knoble

0

ฉันกำลังมองหาวิธีย้ายเคอร์เซอร์ไปที่จุดสิ้นสุดของบรรทัดแล้วแก้ไขบนเทอร์มินัล mac นี่คือวิธีที่มันใช้งานได้สำหรับฉัน ออกจากโหมดแก้ไขของคุณพิมพ์ g_ (นั่นคือ 'g' แล้วขีดเส้นใต้โดยไม่มีเครื่องหมายโคลอนอยู่ด้านหน้า) จากนั้นกดปุ่ม 'a' เพื่อให้คุณสามารถ "เพิ่ม" รหัสลงในสคริปต์ของคุณ


บางทีคุณอาจกำลังมองหาA?
D. Ben Knoble

ฉันได้ลอง A แต่มันใช้งานไม่ได้
Xinyi Xiang

มันแปลกมากAโดยทั่วไปเทียบเท่ากับ$a
D. Ben Knoble

0

ทางเลือกอื่น:

:call cursor('.',strwidth(getline('.')))

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

vi +"call cursor('.',strwidth(getline(1)))"  notetaking_template.txt

ข้างต้นก็สามารถทำได้ด้วย

vi +"execute ':normal! $'" notetaking_template.txt

ดูสิ่งนี้ด้วย:

เป็นกลุ่ม - รับความยาวของบรรทัดปัจจุบัน


0

หากคุณต้องการวางเนื้อหาคลิปบอร์ดที่ส่วนท้ายของประเภทไฟล์:

:$ put +

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