:saveas newname
sẽ lưu bộ đệm bằng tên mới, đặt tên cho bộ đệm hiện tại và đặt bộ đệm thay thế cho tệp cũ.
:call delete(expand('#'))
sau đó sẽ xóa tệp được liên kết với bộ đệm thay thế.
Bạn có thể dễ dàng biến chúng thành một lệnh với một cái gì đó giống như
:command! -bang -complete=file -nargs=+ Rename saveas<bang> <args> | call delete(expand('#'))`
Các user manual cung cấp một mô tả thấu đáo về cách tạo user commands. Dưới đây là giải thích về các yếu tố tôi đang sử dụng ở trên.
-bang
cho phép các lệnh để gọi là một trong hai Rename
hoặc Rename!
và <bang>
trong lệnh xây dựng được thay thế bởi một trong hai một chuỗi rỗng hoặc !
, tùy thuộc vào cách nó được gọi. Điều này được sử dụng để hỗ trợ chức năng tương tự trong lệnh :saveas
.
-complete=file
sẽ cho phép bạn hoàn thành đường dẫn sẽ được sử dụng cho tệp mới, tương tự như :e
và :saveas
làm.
-nargs=+
chỉ định rằng :Rename
yêu cầu ít nhất một đối số (tên tệp), nhưng có thể mất nhiều hơn. <args>
được thay thế bằng bất kỳ đối số nào được trao cho :Rename
. Điều này cho phép bạn chỉ định các đối số thừa mà :saveas
chấp nhận, vì vậy bạn có thể làm một cái gì đó như :Rename ++enc=latin1 newfile
để đổi tên tệp thành tệp mới và thay đổi mã hóa thành latin1.
Đây là một câu trả lời hay ở chỗ nó không gây rối với bố cục cửa sổ của bạn. – holygeek
Nó sẽ là quá nhiều để hỏi, nếu bạn chỉ có thể giải thích những gì mọi phần trước | làm? Tôi đã có một ít thời gian khó khăn để tìm ra nó từ sự giúp đỡ một mình ... ngoài việc đó, nó hoạt động hoàn hảo! – Rook