답변:
이 작업을 수행 할 수 있는 작은 플러그인 이 있습니다.
Program Files (x86)
. 이 디렉토리를 작업해야 할 때마다 따옴표로 묶어야합니다. 어느 쪽이 많습니까?
이 명령은 :saveas
이지만 불행히도 이전 파일은 삭제되지 않으므로 수동으로 수행해야합니다. 자세한 내용은 참조하십시오 :help saveas
.
편집하다:
대부분의 vim 설치에는 통합 파일 탐색기가 있으며 이러한 작업에 사용할 수 있습니다. :Explore
명령 모드로 시도하십시오 (실제로 기능 키에 매핑하면 매우 편리합니다). 예를 들어 파일 이름을 바꾸 R
거나 파일을 삭제할 수 있습니다 D
. 그러나 <F1>
탐색기를 누르면 더 나은 개요를 볼 수 있습니다.
git을 사용하고 이미 tpope의 플러그인 fugitive.vim이있는 경우 간단히 다음을 수행하십시오.
:Gmove newname
이것은 :
파일이 아직 git repo에 추가되지 않은 경우 먼저 파일을 추가하십시오.
:Gwrite
:Gmove
새 파일 이름의 상대 경로가 필요합니다. 이를 수행하는 좋은 방법 :Gmove <ctrl-r>%
은 현재 경로 / 파일 이름을 추가하는 유형을 입력 하는 것입니다.
NERDTree 플러그인으로하고 있습니다.
:NERDTreeFind
그런 다음 m
이름을 바꾸려면 (m)ove the current node
파일 이름을 선택 하고 변경할 수 있습니다 . 또한 삭제, 복사, 이동 등과 같은 옵션이 있습니다.
:w newname
--사본을 작성하십시오.:e#
.:!rm oldname
.Windows에서 선택적 3 단계는 약간 변경됩니다.
:!del oldname
.:f newname
.2) 저장하십시오 :w
3) (선택 사항) !rm oldname
. 장점은 실행 취소 기록이 보존된다는 것입니다.
:saveas
@rampion과 관련하여 더 좋으며 @kynan이 작성한 것을 수행합니다.
파일이 이미 저장된 경우 :
:!mv {file location} {new file location}
:e {new file location}
예:
:!mv src/test/scala/myFile.scala src/test/scala/myNewFile.scala
:e src/test/scala/myNewFile.scala
권한 요구 사항 :
:!sudo mv src/test/scala/myFile.scala src/test/scala/myNewFile.scala
다른 이름으로 저장:
:!mv {file location} {save_as file location}
:w
:e {save_as file location}
Windows 미확인
:!move {file location} {new file location}
:e {new file location}
나는 :Rename
tpope의 내시 에서 권장 합니다.
또한 다른 많은 편리한 명령이 포함되어 있습니다.
이름 바꾸기 명령은 현재 다음과 같이 정의됩니다 (업데이트하려면 리포지토리를 확인하십시오!).
command! -bar -nargs=1 -bang -complete=file Rename :
\ let s:file = expand('%:p') |
\ setlocal modified |
\ keepalt saveas<bang> <args> |
\ if s:file !=# expand('%:p') |
\ call delete(s:file) |
\ endif |
\ unlet s:file
당신은 또한 netrw를 사용하여 그것을 할 수 있습니다
explore 명령은 열린 파일의 디렉토리에서 netrw를 엽니 다
:E
이름을 바꾸려는 파일 위로 커서를 이동하십시오.
R
새 이름을 입력하고 Enter 키를 누른 다음 y를 누르십시오.
:sav new_name
:!rm <C-R># // or !del <C-R># for windows
control+ R, #일순간에 확대 될 대체 파일 누르기 전에 (현재 창에서 이전에 편집 경로) Enter. 이를 통해 정확히 무엇을 삭제할 것인지 검토 할 수 있습니다. |
이러한 경우 파이프 를 사용 하는 것은 안전 하지 않습니다.sav
어떤 이유로 든 실패 하더라도 #
여전히 다른 장소를 가리킬 것입니다 (또는 아무것도 아님). 그것은 완전히 다른 파일을 의미 !rm #
하거나 delete(expand(#))
삭제할 수 있습니다! 따라서 손으로주의 깊게 작성하거나 훌륭한 스크립트를 사용하십시오 (여기에서 많은 답변에 언급되어 있음).
... 함수 / 명령 / 스크립트를 직접 작성해보십시오. 다음과 같이 sth simple에서 시작하십시오.
command! -nargs=1 Rename saveas <args> | call delete(expand('#')) | bd #
vimrc reload 후을 입력하십시오 :Rename new_filename
. 이 명령의 문제점은 무엇입니까?
보안 테스트 1 ::Rename
논증없이 무엇을 하는가?
예, '#'에 숨겨진 파일을 삭제합니다!
해결책 : 예를 들어 사용할 수 있습니다. 그런 조건이나 try
진술 :
command! -nargs=1 Rename try | saveas <args> | call delete(expand('#')) | bd # | endtry
보안 테스트 1 :
:Rename
(인수없이) 오류가 발생합니다.
E471 : 인수가 필요하다
보안 테스트 2 : 이름이 이전 이름과 같으면 어떻게됩니까?
보안 테스트 3 : 파일이 실제 위치와 다른 위치에 있으면 어떻게합니까?
직접 해결하십시오. 가독성을 위해 다음과 같이 작성할 수 있습니다.
function! s:localscript_name(name):
try
execute 'saveas ' . a:name
...
endtry
endfunction
command! -nargs=1 Rename call s:localscript_name(<f-args>)
노트
!rm #
보다 낫다 !rm old_name
-> 당신은 이전 이름을 기억할 필요가 없다
!rm <C-R>#
!rm #
손으로 할 때보 다 낫습니다 -> 실제로 제거 한 것을 볼 수 있습니다 (안전 이유)
!rm
일반적으로 안전하지 않습니다 ... mv
쓰레기 위치에 더 좋습니다
call delete(expand('#'))
쉘 명령 (OS에 구애받지 않음)보다 낫지 만 입력하기가 길고 control+ 를 사용할 수 없음R
try | code1 | code2 | tryend
-> code1 동안 오류가 발생하면 code2를 실행하지 마십시오
:sav
(또는 :saveas
)는 file_f:f new_name | w
참조 와 동일하며 실행 취소 기록을 유지합니다.
expand('%:p')
위치의 전체 경로 ( %
) 또는 대체 파일의 위치 ( #
)를 제공합니다.
Gary Bernhardt의 .vimrc 에는 이것을 처리 하는 함수가 있습니다 .
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>
어떻습니까 (제이크의 제안으로 개선) :
:exe "!mv % newfilename" | e newfilename
:exe "!mv % newfilename" | e newfilename
Vim에는 rename
기능이 있지만 불행히도 기록을 유지하지는 않습니다.
기록을 잃지 않고 파일 이름을 바꾸는 가장 쉬운 OS 불가지론 적 방법은 다음과 같습니다.
:saveas new_file_name
:call delete(expand('#:p'))
expand('#:p')
이전 파일의 전체 경로를 반환합니다.
:bd #
버퍼 목록에서 이전 파일을 삭제하려는 경우에도 사용하십시오 .
빠른 명령을 사용하여 파일 이름을 바꾸려면 ~ / .vim / plugin 아래에 다음 내용으로 새 파일을 추가하십시오.
function! s:rename_file(new_file_path)
execute 'saveas ' . a:new_file_path
call delete(expand('#:p'))
bd #
endfunction
command! -nargs=1 -complete=file Rename call <SID>rename_file(<f-args>)
이 명령 Rename
을 사용하면 파일 이름을 빠르게 바꿀 수 있습니다.
Tim Pope에 의해 vim-eunuch 라는 상당히 큰 플러그인 이 있습니다.이 기능에는 이름 바꾸기 기능과 다른 기능 (삭제, 찾기, 모두 저장, chmod, sudo edit 등)이 포함되어 있습니다.
vim-eunuch에서 파일 이름을 바꾸려면 :
:Move filename.ext
rename.vim과 비교 :
:rename[!] filename.ext
몇 가지 키 입력을 저장합니다 :)
플러그인을 사용하지 않고 기존 파일의 이름을 바꾸려면 명령을 사용해야합니다
:Explore
이 명령을 사용하면 디렉토리에서 파일을 탐색하거나 삭제하거나 이름을 바꿀 수 있습니다. R
파일 이름을 바꿀 수있는 type 명령 보다 탐색기에서 필요한 파일을 탐색해야합니다.
이것이 "가장 쉬운"방법인지는 모르겠지만 파일 (: w)을 이미 저장했다고 가정하면 쉘 (: sh)을 호출하고 간단한 cp foo foo.bak를 수행합니다. 편집기로 돌아가려면 Ctrl-D / Exit를 사용하십시오. 이 링크에서 유용한 vi 편집기 명령 목록
이 작은 스크립트는 완벽하지는 않지만 (추가 캐리지 리턴을 눌러야 함) 작업이 완료됩니다.
function Rename()
let new_file_name = input('New filename: ')
let full_path_current_file = expand("%:p")
let new_full_path = expand("%:p:h")."/".new_file_name
bd
execute "!mv ".full_path_current_file." ".new_full_path
execute "e ".new_full_path
endfunction
command! Rename :call Rename()
nmap RN :Rename<CR>