จะตั้งค่าไดเร็กทอรีการทำงาน / ปัจจุบันใน Vim ได้อย่างไร


110

ดังนั้นเมื่อฉันต้องการสร้างไฟล์ใหม่โดยใช้คำสั่ง: e ฉันไม่ต้องการระบุเส้นทางทั้งหมดเพียงแค่ชื่อไฟล์ใหม่ มันสามารถทำได้?

คำตอบ:


144

ตามที่แนะนำไปแล้วคุณสามารถใช้ autochdir ซึ่งจะเปลี่ยนเป็นไดเร็กทอรีของไฟล์ที่คุณเปิดตัวเลือกอื่นคือ

:cd mydirectory

ซึ่งจะเปลี่ยนไดเร็กทอรี อาจเป็นเส้นทางสัมบูรณ์หรือสัมพัทธ์ก็ได้ดังนั้น:cd ..จะเลื่อนขึ้นหนึ่งระดับ หรือคุณสามารถใช้:cd %:hซึ่งจะเปลี่ยนเป็นไดเร็กทอรีที่มีไฟล์ปัจจุบันอยู่ แต่ไม่ต้องตั้งค่า autochdir

:cd

จะเปลี่ยนไดเร็กทอรีเป็นโฮมไดเร็กทอรีของคุณ (หรือบน windows พิมพ์ไดเร็กทอรีปัจจุบัน)

:cd -

จะเปลี่ยนไดเร็กทอรีเป็นไดเร็กทอรีก่อนหน้าที่คุณเยี่ยมชม


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

1
@Useless: น่าสนใจ ... ฉันไม่คิดว่าจะต้องการแบบนั้น แต่ฉันคิดว่านั่นเป็นเรื่องของรสนิยม ขอบคุณสำหรับข้อมูล.
falstro

3
ฉันกำลังพยายามหาว่า%: h หมายถึงอะไรช่วยได้ไหม
Michael

10
@ ไมเคิล%แปลเป็นชื่อไฟล์ปัจจุบันรวมถึงพา ธ:เพิ่มตัวปรับแต่งhเป็น head คือพา ธ ขึ้นไปยังตัวคั่นพา ธ สุดท้ายซึ่งไม่รวมชื่อไฟล์เอง
falstro

@falstro คุณรู้หรือไม่ว่าคำสั่ง cd สามารถใช้ได้กับทุกหน้าต่างภายในอินสแตนซ์ที่รันเป็นกลุ่มเดียวกัน เช่นเมื่อใช้การแบ่ง: sp
mgouin

15

นอกจากนี้หากคุณกำลังเรียกดูระบบไฟล์ด้วย netrw file explorer คุณสามารถตั้งค่าไดเร็กทอรีปัจจุบันได้โดยกดปุ่ม c


ยังใช้set autochdirเพื่อทำให้เอ'c' keyฟเฟกต์ในเชลล์เพื่อให้คุณสามารถใช้!command args ภายใต้คำสั่งเปลี่ยน
pimgeek

9

ลองเพิ่มที่คุณset autochdir .vimrcหากคุณต้องการเปลี่ยนเพียงครั้งเดียวให้ใช้:cd(หรือ:cd!บังคับ)


1
ความช่วยเหลือบอกว่าสิ่งนี้ทำให้ปลั๊กอินบางตัวแตก (ฉันไม่รู้ว่าอันไหน) ดังนั้นฉันจึงใช้ความระมัดระวังในการเพิ่มการแมปใน. vimrc ของฉัน: cnoremap cd. lcd %:p:hและnnoremap ,cd :cd %:p:h<CR>:pwd<CR>แทน
ErichBSchulz

ยังใช้'c' keyใน netrw file explorer เพื่อมาพร้อมกับสิ่งนี้
pimgeek

3

ฉันไม่รู้ว่าเกิดอะไรขึ้นกับ vim ฉันต้องการไดเร็กทอรีที่ฉันเริ่มต้นเป็นกลุ่มเป็นปัจจุบัน

ฉันได้ทำตามเคล็ดลับเกี่ยวกับ autochd ด้านบนแล้วและตั้งค่าเป็น noautcd ใน. vimrc ของฉัน

ฉันยังไม่ได้ทำ แต่ฉันกำลังจะเริ่มเป็นกลุ่มแบบนี้นับจากนี้:

vim —cmd 'cd `pwd`'

ที่จะทำให้ติดทำเนียบปัจจุบัน!


2

ด้วยnetrw:นอกเหนือไปจากการกดcกุญแจสำคัญในการตั้งค่าไดเรกทอรีปัจจุบันคุณยังอาจทำให้:

let g:netrw_keepdir= 0

ในของคุณ.vimrc; ซึ่งหมายความว่าnetrwจะทำให้ไดเร็กทอรีการเรียกดูเหมือนกับไดเร็กทอรีปัจจุบัน


ดูเหมือนว่าจะมีลักษณะการทำงานที่เทียบเท่ากันเช่น: lcd สำหรับการเปลี่ยนแปลงโฟลเดอร์ netrw แต่ละครั้ง คุณมีความคิดหรือไม่ว่าการตั้งค่านี้จะเทียบเท่ากับ a: cd แทนได้อย่างไร (เปลี่ยน dir สำหรับทุกหน้าต่าง)? ขอบคุณ!
mgouin

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