Penyempurnaan Nama File dengan Spaces

8

Saya memiliki banyak file yang memiliki spasi di namanya, dan ini memberi saya masalah. Jika saya mencoba melakukan penyelesaian baris perintah untuk perintah find, dan salah satu file ini muncul, Vim akan menemukannya, tetapi tidak mau memuat karena spasi tidak lolos.

Contoh: Saya sudah vim, dan saya mengetik

:find fo<Tab>

Untuk menyelesaikannya foo bar.txt, Vim kemudian menemukannya dan melempar kesalahan karena hanya mengharapkan satu nama file. Artinya sekarang terbaca

:find foo bar.txt

Yang tidak memuat.

Apakah ada cara untuk mengatasi ini, dan apakah Vim secara otomatis lolos dari ruang?

Saya menggunakan VimTouch, yang menjalankan Vim 7.3

Sunting: Baru-baru ini saya menyadari bahwa Vim akan keluar dari nama jalur untuk saya, tetapi secara misterius tidak akan melakukannya untuk nama file.

Seorang Pria Emas
sumber
1
Ini tampaknya menjadi baris perintah daripada vimmasalah (setidaknya, sepertinya Anda berbicara tentang membuka vimsesi daripada melakukan sesuatu di dalamnya vim); tetapi, bagaimanapun, akankah menempatkan "karya yang unggul ? Yaitu, jika Anda ingin melengkapi file tab a b, ketik vim "adan kemudian tab, daripada vim adan kemudian tab? (Saya tidak yakin, karena, dalam vim dan shell saya, ruang secara otomatis keluar saat tab menyelesaikan.)
LSpice
1
Bisakah Anda menguraikan apa sebenarnya yang Anda lakukan? Seperti apa bentuk buffer Anda? Perintah apa yang Anda gunakan? Apa yang sebenarnya terjadi?
Martin Tournoij
Saya mengedit pertanyaan untuk memperjelasnya.
Seorang Pria Emas

Jawaban:

1

: find foo bar.txt

Perintah ini akan mencari 2 file sekaligus yang tidak mungkin di vim. Ini adalah penyebab kesalahan Anda.

Saat berurusan dengan file yang memiliki ruang di dalamnya, Anda dapat menambahkan\ setelah setiap kata

seperti itu :find foo\ bar.txt

Tetapi metode ini agak canggung karena Anda memiliki banyak file

jadi saya telah memodifikasi perintah yang sesuai dengan kebutuhan Anda

Semoga berhasil

Tambahkan ke .vimrc Anda

dan gunakan :Finduntuk mencari dan membuka file dengan spasi

" :Find will escape a file name and open it
command! -bang -nargs=* Find :call Find(<q-bang>, <q-args>) 
function! Find(bang, filename) 
    :exe "find".a:bang." ". fnameescape(a:filename) 
endfu

Tidak terkait dengan pertanyaan yang diajukan tetapi mungkin bisa membantu

Masalah ini juga dihadapi saat menyimpan file dengan ruang di dalamnya

suka :w foo bar.txtmemberi kesalahan

Untuk mengatasinya

" :W and :Save will escape a file name and write it
command! -bang -nargs=* W :call W(<q-bang>, <q-args>) 
command! -bang -nargs=* Save :call Save(<q-bang>, <q-args>)

function! W(bang, filename) 
    :exe "w".a:bang." ". fnameescape(a:filename) 
endfu

function! Save(bang, filename) 
    :exe "save".a:bang." ". fnameescape(a:filename) 
endfu

Tambahkan ini ke .vimrc untuk menggunakan :Watau :Saveuntuk menyimpan file dengan spasi.

Ashok Arora
sumber