Bagaimana cara membuat Vim menggunakan nama file default saat tidak diberi nama file?

17

Saya jarang, jika pernah, hanya buka vimtanpa nama file. Cukup sering, saya ingin menguji sesuatu, biasanya skrip cepat pakai, dan saya biasanya menamainya test.sh(atau beberapa varian, misalnya test.py). Bisakah saya membuat vimmenganggap test.shnama file jika saya berlari vimtanpa nama file? Saya biasanya menggunakan alias (seperti vimsuntuk vim test.shdan vimpuntuk vim test.py, atau pergi keseluruhan :w test.sh), tapi saya ingin tahu apakah ada cara dari dalam vim. Akan lebih baik jika saya dapat membatasi ini pada direktori tertentu, seperti /tmp, atau ~/dev.

muru
sumber

Jawaban:

10

Coba letakkan ini di akhir .vimrc Anda (ubah seperlunya)

if @% == "" && getcwd() == "/tmp"
    :silent edit test.sh
endif

Ini memeriksa apakah nama file saat ini kosong ( @%referensi nama file saat ini), dan memeriksa apakah direktori saat ini vim adalah /tmp. Anda dapat menambahkan direktori lain juga seperti itu

(getcwd() == "/tmp" || getcwd() == "~/dev")

Ini kemudian secara diam-diam mengedit test.sh. Jika file itu sudah ada, itu akan memuatnya. Jika tidak, Anda akan memulai buffer baru dengan nama itu dan file akan dibuat jika Anda menulisnya.

Saya diam untuk menekan pesan berikut saat startup:

"test.sh" [New File]
Press ENTER or type command to continue
John O'M.
sumber
5

Modifikasi jawaban John mungkin berguna:

if @% == "" && getcwd() == "/tmp"
    :silent edit `=glob("test\.*", 1, 1)[0]`
endif

Itu membuka file pertama yang dimulai dengan test..

Alih-alih hanya file pertama, jika Anda ingin membuka file yang cocok lainnya juga, lakukan:

if @% == "" && getcwd() == "/tmp"
    for i in glob("test\.*", 1, 1)
        :silent edit `=i`
    endfor
endif
pengguna50136
sumber