Penyempurnaan Nama File untuk File Jarak Jauh

16

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//filepathuntuk 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?

m.ajallooeian
sumber
1
Meskipun saya punya ctrlp mungkin mendukungnya ... tapi ternyata itu permintaan fitur .
muru

Jawaban:

6

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:

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):

  • Jangan arahkan vim ke file jarak jauh
  • Arahkan ke direktori "di atas" mis $HOME:: vim scp://files/, atau /:vim scp://files///
  • Plugin NetRW terbuka di folder tingkat atas yang diinginkan ( /atau $HOME).
  • Di NetRW, Anda dapat menavigasi dengan sedikit penekanan tombol:
  • Untuk mengedit jarak jauh /etc/network/interfacesdengan 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:

  • Peta TABke / dalam NetRW:autocmd filetype netrw noremap <buffer> <TAB> /
  • Konfigurasikan NetRW untuk TreeView: let g:netrw_liststyle=3
  • Tambahkan toggle untuk VExplore jarak jauh<C-E> , jika Anda mau (saya menggunakannya).
  • Saya juga merekomendasikan incsearch, ignorecasedan smartcaseuntuk 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/configdengan Pengguna, Port, Kompresi, JumpHost (ProxyCommand disiapkan sehingga hanya diperlukan nama host / alias.

Ini juga telah dibahas di luar kantor di sini dan di sini

Alex Stragies
sumber
1
Bisakah Anda memperluas trik dengan merangkum tautan? Tautan polos tidak terlalu berguna jika situs mati atau mati.
muru
Saya pikir, ini kurang lebih adalah "solusi" terakhir saya, sampai NetRW dapat melakukan ini secara asli. Saya masih akan menangani masalah yang masih diketahui, tetapi berharap untuk menemukan (atau diarahkan) lebih banyak bug, perbaikan, dan peningkatan yang lebih halus. Mereka akan ditangani / dimasukkan. Terima kasih telah berkomentar.
Alex Stragies