Bagaimana cara mengatur direktori kerja / saat ini di Vim?

109

Jadi ketika saya ingin membuat file baru dengan menggunakan perintah: e saya tidak ingin menentukan seluruh path, hanya nama file baru. Bisakah itu dilakukan?

Fred
sumber

Jawaban:

144

Seperti yang sudah disarankan, Anda dapat menggunakan autochdir, yang akan mengubah direktori file yang Anda buka, opsi lainnya adalah

:cd mydirectory

yang akan mengubah direktori. Ini bisa menjadi jalur absolut atau relatif, jadi :cd ..akan naik satu tingkat. Atau Anda dapat menggunakan :cd %:hyang juga akan mengubah ke direktori tempat file saat ini berada, tetapi tanpa menyetel autochdir.

:cd

akan mengubah direktori ke direktori home Anda (atau di windows, cetak direktori saat ini).

:cd -

akan mengubah direktori ke direktori sebelumnya yang Anda kunjungi.

falstro
sumber
13
jika Anda menggunakan banyak jendela, Anda bahkan dapat menggunakan: lcd untuk mengubah direktori hanya untuk jendela saat ini.
berguna
1
@Useless: menarik ... Saya rasa saya tidak akan pernah menginginkan itu, tapi saya rasa itu masalah selera. Terimakasih atas infonya.
falstro
3
Saya mencoba mencari tahu apa artinya%: h, ada bantuan?
Michael
10
@Michael %diterjemahkan ke nama file saat ini termasuk jalur, :menambahkan pengubah, hadalah kepala, yaitu jalur hingga pemisah jalur terakhir, yang tidak termasuk nama file itu sendiri.
falstro
@ falstro, tahukah Anda bagaimana: perintah cd dapat diterapkan ke semua jendela dalam contoh vim yang sama? Contoh: saat menggunakan split: sp
mgouin
15

Juga jika Anda menjelajahi sistem file dengan file explorer netrw Anda dapat mengatur direktori saat ini dengan menekan tombol c.

Dave Kirby
sumber
juga digunakan set autochdiruntuk membuat 'c' keyefek di shell, sehingga Anda dapat menggunakan !command args dir yang diubah.
pimgeek
9

Coba tambahkan set autochdirke .vimrc. Jika Anda ingin mengubahnya sekali ini saja, gunakan :cd(atau :cd!untuk memaksanya).

John Feminella
sumber
1
bantuan mengatakan ini merusak beberapa plugin (saya tidak tahu yang mana) jadi saya telah mengambil tindakan pencegahan dengan menambahkan pemetaan di .vimrc saya: cnoremap cd. lcd %:p:hdan nnoremap ,cd :cd %:p:h<CR>:pwd<CR>sebagai gantinya
ErichBSchulz
juga digunakan 'c' keydalam file explorer netrw untuk menyertai ini.
pimgeek
3

Saya tidak tahu apa yang salah dengan vim. Saya ingin direktori tempat saya memulai vim sebagai saat ini.

Saya telah mengikuti tip tentang autochd di atas dan mengaturnya ke noautcd di .vimrc saya.

Saya belum melakukannya, tetapi saya akan memulai vim seperti ini mulai sekarang:

vim —cmd 'cd `pwd`'

Itu akan membuatnya menempel pada direktori saat ini!

McUsr
sumber
2

Dengan netrw:selain menekan ctombol untuk mengatur direktori saat ini, Anda juga dapat menempatkan:

let g:netrw_keepdir= 0

di Anda .vimrc; ini berarti netrwdirektori penjelajahan akan tetap sama dengan direktori saat ini.

Chip Campbell
sumber
Ini tampaknya memiliki perilaku yang setara sebagai: lcd untuk setiap perubahan folder netrw. Apakah Anda tahu bagaimana pengaturan ini bisa sama dengan a: cd sebagai gantinya (ubah dir untuk semua jendela)? Terima kasih!
mgouin
1

Menambahkan ini ke .vimrcdirektori kerja Vim saya secara otomatis mengubah ke file saat ini:

autocmd BufEnter * silent! :lcd%:p:h
Matthias Braun
sumber
3
set autochdirmelakukan itu juga :-)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功