Teman saya menunjukkan kepada saya trik keren pada Emacs beberapa hari yang lalu di mana dia hanya bisa membuka file di server jauh dan saya langsung berpikir "harus ada cara untuk melakukannya juga" dan itu benar.
Saya hanya bisa menggunakannya :e scp://user@server//filepath
untuk melakukan itu, tidak ada masalah;). Namun, dia bisa saja mengetik nama server dan kemudian mendapatkan penyelesaian untuk path file dan nama (dengan tab), sesuatu yang belum bisa saya lakukan. Apakah ada yang tahu apakah ini dapat dilakukan dalam vim?
autocompletion
filesystem
m.ajallooeian
sumber
sumber
Jawaban:
Ya , tetapi saat ini (2015) tidak out-of-the-box, karena file-manager vim bawaan tidak mendukung penjelajahan jarak jauh. .
Pembaruan Q3 @ 2016:
Ada beberapa solusi, dengan berbagai tingkat kenyamanan / kompatibilitas / upaya. Secara keseluruhan mereka menambahkan hingga solusi yang bagus, tetapi mereka semua juga dapat digunakan secara individual:
Atur level pengguna
afuse
/sshfs
daemon di file init shell AndaDengan beberapa baris skrip yang bersumber dari eg
.profile
, Anda dapat mengatur auto-mounter sesuai permintaan di bawah direktori misalnya~/scp/
. Detail integrasi ini dalam posting di Unix & Linux SE . Ini adalah opsi paling nyaman, file jarak jauh "muncul" lokal, tetapi membutuhkanafuse
dansshfs
tersedia untuk Anda.Menyiapkan penyelesaian perintah shell untuk jalur file jarak jauh
Paket fungsi penyelesaian untuk bash memiliki beberapa fungsi yang dirancang untuk
ssh
danscp
selesai. Dengan fungsi wrappervim()
, mengubah jalur jarak jauh ke dalamvim
bentuk yang diharapkan, mereka dapat digunakan untuk memasok file jarak jauh yang dilengkapi TABvim
. Kelemahan kecil dari pendekatan ini juga dirinci di sana. Untuk situasi tanpa alasan. Perlubash-completion
dipasang, atau setara dan adaptasi untuk cangkang lain.Jika Anda tidak dapat mengubah lingkungan Anda atau
.vimrc
-hanya: Di vim file-manager Anda dapat menggunakan // ?Tombol untuk mencari maju / mundur, dan Anda dapat memetakan TABke salah satu dari mereka. Ini lebih kuat daripada kedengarannya untuk navigasi cepat Anda di sekitar sistem file. Deskripsi di bawah ini.Solusi Dasar (untuk vim standar dengan NetRW):
$HOME
::vim scp://files/
, atau/
:vim scp://files///
/
atau$HOME
).Untuk mengedit jarak jauh
/etc/network/interfaces
dengan NetRW pada/
:/etENTERENTER/netwENTERENTER/intENTERt
Anda selalu dapat menggunakan
?
untuk mencari kembali ke atas, tanpa membungkus dari atas.Bahkan lebih baik , untuk hampir meniru TAB -Completion, tambahkan
.vimrc
:autocmd filetype netrw noremap <buffer> <TAB> /
let g:netrw_liststyle=3
<C-E>
, jika Anda mau (saya menggunakannya).incsearch
,ignorecase
dansmartcase
untuk NetRW, atau semua buffer.Dibandingkan dengan tab-konvensional "konvensional", di atas berbeda, namun sangat nyaman.
Catatan: Semua hal di atas mengasumsikan koneksi tanpa kata sandi berbasis ssh sertifikat
~/.ssh/config
dengan Pengguna, Port, Kompresi, JumpHost (ProxyCommand disiapkan sehingga hanya diperlukan nama host / alias.Ini juga telah dibahas di luar kantor di sini dan di sini
sumber