คุณจะกลับมาจาก 'gf' ใน Vim ได้อย่างไร


187

ฉันใช้ Vim สำหรับ windows ที่ติดตั้งในโหมด Unix ขอบคุณเว็บไซต์นี้ฉันใช้gfคำสั่งเพื่อไปที่ไฟล์ภายใต้เคอร์เซอร์

ฉันกำลังมองหาคำสั่งอย่างใดอย่างหนึ่ง:

  1. กลับไปที่ไฟล์ก่อนหน้า (คล้ายกับCtrl+ Tสำหรับ ctags) หรือ
  2. ทำการแมปใหม่gf ให้เปิดไฟล์ใหม่โดยอัตโนมัติในหน้าต่างใหม่

คำตอบ:


294

ฉันใช้Ctrl-O


43
CTRL-O เพื่อไปยังตำแหน่งที่เก่ากว่าในรายการข้าม <Tab> หรือ CTRL-I เพื่อไปยังตำแหน่งที่ใหม่กว่า
Sébastien RoccaSerra

4
@ g33kz0r ตัวช่วยจำจะเป็น O = OUT, I = IN => Ctrl - O นำคุณออก, Ctrl จะนำคุณเข้ามาหากการกระโดดทุกครั้งเหมือนการผ่านประตูนั่นคือ
kronn

CTRL-O จะข้ามไปยังตำแหน่งที่เยี่ยมชมล่าสุดมันน่ารำคาญเมื่อค้นหาไฟล์ใหม่ฉันชอบ Shift-Ctrl-6 (ในกรณีของฉัน Ctrl-6 ไม่ทำงาน)
Adriano

71

ฉันใช้บ่อยCtrl- 6สำหรับสิ่งนี้

มันมีประโยชน์เพราะมันทำให้ฉันสามารถกระโดดไปมาระหว่างสองไฟล์ได้อย่างรวดเร็ว


47

คุณอาจต้องการใช้ CTRL-W gfเปิดไฟล์ในแท็บใหม่

คุณสามารถปิดไฟล์ที่เพิ่งเปิดใหม่ได้เช่นเคย:bdหรือใช้CTRL-6และวิธีอื่นในการเปลี่ยนบัฟเฟอร์


7
แท็บสะดวกกว่าบัฟเฟอร์สำหรับฉันและการใช้nnoremap gf <C-W>gfเพื่อเปิดในแท็บใหม่อาจดีกว่า
เซียรีน

13

ใช้ gf เพื่อสืบสู่ไฟล์และใช้: bf เพื่อกลับไป


1
ฉันเปิดหน้าต่างสองบานในแท็บและนี่เพิ่งเปิดหน้าต่างที่สองในหน้าต่างแรกแทนที่จะกระโดดกลับไปที่บัฟเฟอร์ก่อนหน้า
Kenny Evitt

12

เพียงแค่ใช้:e#ตามด้วยEnter- ซึ่งโดยทั่วไปบอกว่าจะแก้ไขไฟล์ล่าสุด (ล่าสุด)


9

Ctrl-Shift-6 เป็นหนึ่ง

:e#↲ เป็นอีก


8
ไม่จำเป็นต้องเปลี่ยนกะ หยุดใช้นิ้วของคุณในทางที่ผิด
Zathrus

6
หนอ ฉันเป็นคนตั้งเวลาตัวเก่า Ctrl-6 จะไม่ทำงานกับ vi บนเทอร์มินัล Wyse ที่ฉันเคยทำงานเมื่อหลายปีก่อน ดูบางสิ่งยังคงสลักอยู่ และการไม่ใช้ Shift ในคอมโบนี้แทบจะสร้างความแตกต่างให้กับการใช้นิ้วของฉันในทางที่ผิดทั้งหมด เฮ้อย่างน้อยคุณก็พยายามทำให้ดีที่สุด HTH มือ.
tzot

นี้สวิทช์กับสิ่งที่เรียกว่าไฟล์อื่น
jpaugh

5

ฉันได้ CTRL-W f เพื่อทำงาน
มันค่อนข้างน่าเสียดายที่ฉันได้ใช้แผนที่ที่สมบูรณ์แบบมานานสำหรับคำสั่งเหล่านี้เท่านั้นที่ค้นพบว่ามีเวอร์ชั่นในตัว


5

ฉันไม่ทราบคำตอบในส่วนที่ 2 ของคำถามของคุณ แต่ฉันสามารถช่วยได้ในส่วนที่ 1 ใช้

:e#

Vim เก็บรักษารายการของไฟล์ (บัฟเฟอร์) ที่กำลังแก้ไข ถ้าคุณพิมพ์

:buffers

มันจะแสดงรายการไฟล์ทั้งหมดที่คุณกำลังแก้ไข ไฟล์ในรายการที่มี% อยู่ข้างๆเป็นไฟล์ปัจจุบัน ไฟล์ที่มี # อยู่ข้างๆเป็นไฟล์สำรอง : e # จะสลับระหว่างไฟล์ปัจจุบันและไฟล์สำรอง แทนที่จะพิมพ์มากขนาดนั้นฉันแมป F2 กับ: e # ดังนั้นฉันสามารถพลิกระหว่างไฟล์ปัจจุบันและไฟล์สำรองได้อย่างง่ายดาย ฉันแมปคำสั่งกับ F2 โดยเพิ่มสิ่งนี้ลงใน. vimrc

nmap `<F2> :e#<CR>`

2
ฉันไม่คิดว่าคุณต้องการใช้: e # เพราะอาจโหลดไฟล์ซ้ำได้ : b # ทำการเทียบเท่าโดยไม่มีปัญหานี้
lambacck

จุดดี. ที่สลับไปยังบัฟเฟอร์อื่นโดยไม่ต้องโหลดซ้ำ
codebunny


2

เมื่อคุณเปิดไฟล์ใหม่ (ด้วยgfหรือ: nหรือคำสั่งอื่น) ไฟล์เก่าจะยังคงอยู่ในรายการบัฟเฟอร์ คุณสามารถแสดงรายการไฟล์ที่เปิดด้วย: ls

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

nmap <M-LEFT> :bN<cr>
nmap <M-RIGHT> :bn<cr>

ตอนนี้คุณสามารถสลับระหว่างบัฟเฟอร์ด้วย Alt + ลูกศรซ้ายหรือ Alt + ลูกศรขวา

เอกสารที่สมบูรณ์เกี่ยวกับการแมปอยู่ที่นี่:

:help map.txt

0

ฉันไม่ได้ดูคำสั่งgfของคุณแต่ฉันคิดว่ามันใช้: eหรือ: find command
สมมติว่าสิ่งนี้ถูกต้องเพียงแค่แทนที่: eหรือ: find with : new (หรือ: vnewสำหรับการแบ่งแนวตั้ง) และไฟล์จะเปิดในหน้าต่างใหม่แทนหน้าต่างเดิม

เช่น

"สลับระหว่างส่วนหัวและ cpp
nmap, s: ค้นหา%: t: ​​r.cpp <CR>
nmap, S: ใหม่%: t: ​​r.cpp <CR>
nmap, h: ค้นหา%: t: ​​rh <CR>
nmap, H: ใหม่%: t: ​​rh <CR>
nmap, F: new = expand ("<cfile>: t") <CR> <CR>
nmap, d: new = expand ("<cfile>") <CR> <CR> 


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