2012-01-06 69 views
5

Cách nào là cách thiết thực nhất để đổi tên tệp bạn hiện đang chỉnh sửa trong Vim mà không làm hỏng cấu hình chia hiện tại của bạn?Cách dễ nhất để đổi tên tệp bạn hiện đang chỉnh sửa trong Vim là gì?

Nói chung, người ta cần phải ... lưu tệp dưới một tên khác, xóa tệp gốc và mở lại tệp mới mà không tạo ra sự lộn xộn của bố cục hiện tại.

Bất cứ ai cũng có ý tưởng làm thế nào để làm điều đó trong một lệnh (hàm) hoặc ít hơn?

Trả lời

12

: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!<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: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.
+0

Đâ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

+0

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

2

Gọi người khám phá bằng :Explorer hoặc chỉ :E, chọn tệp của bạn rồi nhấn r để đổi tên.

+1

lưu ý rằng điều này yêu cầu plugin netrw (hiện diện trong phần lớn thời gian không tối thiểu) – Benoit

3

Tim Pope có plugin có chức năng :Rename thực hiện điều này: vim-eunuch.

Bạn cũng có thể làm tương tự các bước như sau:

:saveas newfile 
:bw <buffer_for_the_old_file> 
:!rm old_file 

của khóa học này là không tốt đẹp như đổi tên các tập tin trong vỏ.

+0

Điều này có vẻ là cách tiếp cận rõ ràng nhất. Bình chọn nó lên. –

0

Sử dụng :Move do eunuch cung cấp.

eunuch cũng cung cấp các hoạt động tệp hữu ích khác, như :Remove, sudoedit.

Các vấn đề liên quan