Làm cách nào để khiến Vim sử dụng tên tệp mặc định khi không được cung cấp bất kỳ tên tệp nào?


17

Tôi hiếm khi, nếu có, chỉ mở vimmà không có tên tập tin. Thông thường, tôi muốn thử nghiệm một cái gì đó, thường là một kịch bản vứt đi nhanh chóng và tôi thường đặt tên cho chúng test.sh(hoặc một số biến thể của chúng, như test.py). Tôi có thể vimgiả sử test.shtên tệp nếu tôi chạy vimmà không có tên tệp nào không? Tôi thường sử dụng các bí danh (như vimscho vim test.shvimpcho vim test.py, hoặc đi toàn bộ :w test.sh), nhưng tôi tự hỏi liệu có cách nào từ bên trong không vim. Sẽ tốt hơn nữa nếu tôi có thể hạn chế điều này trong một số thư mục nhất định, như /tmp, hoặc ~/dev.

Câu trả lời:


10

Hãy thử đặt phần này vào cuối .vimrc của bạn (sửa đổi cho phù hợp)

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

Cái này kiểm tra xem tên tệp hiện tại có trống không ( @%tham chiếu tên tệp hiện tại) và kiểm tra xem thư mục hiện tại của vim có phải không /tmp. Bạn có thể thêm các thư mục khác như vậy

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

Sau đó nó âm thầm chỉnh sửa test.sh. Nếu tập tin đó đã tồn tại, nó sẽ tải nó. Nếu không, bạn sẽ bắt đầu một bộ đệm mới với tên đó và tệp sẽ được tạo nếu bạn viết nó.

Tôi đã im lặng để chặn tin nhắn sau trong khi khởi động:

"test.sh" [New File]
Press ENTER or type command to continue

5

Một sửa đổi câu trả lời của John có thể hữu ích:

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

Điều đó sẽ mở tập tin đầu tiên bắt đầu bằng test..

Thay vì chỉ tập tin đầu tiên, nếu bạn cũng muốn mở các tập tin phù hợp khác, hãy làm:

if @% == "" && getcwd() == "/tmp"
    for i in glob("test\.*", 1, 1)
        :silent edit `=i`
    endfor
endif
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.