Có thể đổi tên tệp tôi đang chỉnh sửa từ trong Vim không? Hiện tại những gì tôi làm là thoát Vim, đổi tên tệp và mở lại từ Vim.
Có thể đổi tên tệp tôi đang chỉnh sửa từ trong Vim không? Hiện tại những gì tôi làm là thoát Vim, đổi tên tệp và mở lại từ Vim.
Câu trả lời:
Bạn có thể lưu tệp dưới một tên khác bằng cách sử dụng :w
. Nhưng thao tác này sẽ không xóa tệp cũ và tệp 'cũ' vẫn nằm trong bộ đệm của bạn, vì vậy mọi thay đổi sẽ được áp dụng cho tệp 'cũ' của bạn.
:saveas
lưu tập tin mới của bạn và mở nó trong một bộ đệm mới. Nhưng nó không xóa tập tin cũ.
Tôi sử dụng tpope / vim-eneuch để :Move
tập tin.
: Move: Đổi tên bộ đệm và tệp trên đĩa cùng một lúc.
:w
hoặc :saveas
là nó sẽ mất quyền thực thi nếu bạn đang chỉnh sửa tập lệnh. netrw
Đổi tên sẽ giữ quyền.
Bạn có thể thả xuống Netrw và đổi tên tệp ở đó.
Nếu tệp bạn đang chỉnh sửa nằm trong thư mục hiện tại, thì hãy làm:
:edit .
Điều hướng đến tệp, nhấn Rvà thay đổi tên. Nhấn Enterđể chỉnh sửa tập tin.
Mặc dù có một cảnh báo: bộ đệm ban đầu vẫn nằm trong danh sách bộ đệm. Nếu bạn chuyển sang nó, nó trống rỗng.
Nếu tệp bạn đang chỉnh sửa nằm trong một thư mục khác, bạn có thể thay đổi thành thư mục của tệp bằng:
:cd %:p:h
Nếu bạn không muốn thay đổi thư mục cho toàn bộ phiên Vim nhưng chỉ cho bộ đệm hiện tại, thì bạn có thể thực hiện thay thế:
:lcd %:p:h
:edit %:p:h
cũng có vẻ hiệu quả.
:E
cũng sẽ mở netrw
Tôi đã sử dụng plugin Rename2 trong nhiều năm. Nó đổi tên cả bộ đệm hiện tại và tệp trên đĩa:
:Rename {newname}
EDIT: Tôi tìm thấy đây là một .vimrc
tập tin trên github :
function! RenameFile()
let old_name = expand('%')
let new_name = input('New file name: ', expand('%'), 'file')
if new_name != '' && new_name != old_name
exec ':saveas ' . new_name
exec ':silent !rm ' . old_name
redraw!
endif
endfunction
map <leader>n :call RenameFile()<cr>
Cách tốt nhất là sử dụng :Move
, như OrangTux đã nói. Để hoàn thiện, bạn cũng có thể thực hiện các lệnh đầu cuối trong trình soạn thảo vi bằng cách sử dụng tiếng nổ ( !
) trong chế độ lệnh.
:!mv {current_file} {new_name}
:e {new_name}
Tuy nhiên, phương pháp này không xóa bộ đệm cũ khỏi danh sách bộ đệm của bạn.