vim 내에서 현재 열려있는 파일을 디스크에서 어떻게 삭제할 수 있습니까? 버퍼를 닫는 것도 좋을 것입니다.
나는 당신 이 NERDTree를 사용할 수 있음 을 알지만이 플러그인을 사용하지 않습니다.
vim 내에서 현재 열려있는 파일을 디스크에서 어떻게 삭제할 수 있습니까? 버퍼를 닫는 것도 좋을 것입니다.
나는 당신 이 NERDTree를 사용할 수 있음 을 알지만이 플러그인을 사용하지 않습니다.
답변:
rm (1) 과 같은 외부 도구를 사용하는 것은 좋지만 Vim에는 delete()파일 삭제를위한 자체 기능 도 있습니다. 이것은 휴대용이라는 장점이 있습니다.
:call delete(expand('%'))
이것을 표현하는 다른 방법은 (현재 파일) 레지스터 (@accolade의 팁) :call delete(@%)를 사용하는 %입니다.
디스크의 파일 표현과 Vim 버퍼 모두 현재 버퍼를 완전히 제거하려면 :bdelete다음을 추가하십시오 .
:call delete(expand('%')) | bdelete!
선호도에 따라이를 매핑 할 수 있습니다.
r명령 을 어 기고 싶지 않습니다 ! 매핑에 <Leader>....
nnoremap <C-Del> :call delete(expand('%'))<CR>했지만 우연히 발생하는 경우 버퍼를 닫지 않습니다. 그래도 저장할 기회가 있습니다.
:call delete(@%)|q!← 짧은 변형 (매핑을 원하지 않는 경우). (버퍼는 그대로 남아 :ls있으며 :b이런 방식 으로 되 살릴 수 있습니다 . 파일 내용은 유지하지 않고 파일 이름과 버퍼 옵션은 유지합니다.)
:call delete(@%)|bd!하려면 :ls!with :b를 사용 하고 사용해야 합니다.
Vim 명령으로 파일 삭제를 살펴보십시오 . 댓글 섹션은 당신이 찾고있는 무엇을해야한다 :
기본적으로 Rm은 현재 파일을 삭제합니다. RM은 현재 파일을 삭제하고 버퍼를 저장하지 않고 한 번에 종료합니다.
또는 쉘 명령을 실행하여 현재 파일을 제거 할 수 있습니다.
:!rm %
!rm %하면 vim이 버퍼로 돌아갈 때 경고를 피할 수있는 방법이 있습니까?
%)을 따옴표로 묶어야합니다 : !rm "%".
%(파일 경로 ( " 파일 이름을 원래 잠재적 상대, 예를 들어 단지 파일의 이름을 호출로 정력 용어로")) 대신 %:p(절대 파일 경로) 대신 다른 디렉토리에 같은 이름의 파일을 삭제하는 위험의 작은을 실행 당신이 :cd거기에서 에드를 잊었다면 . 따라서 어쨌든 매핑하는 %:p대신 사용하는 것이 좋습니다 %.
때로는 플러그인이 간단한 문제에도 매력적인 솔루션이 될 수 있습니다. 이 경우 전능하신 Tim Pope의 eunuch.vim 이 있기 때문에 운이 좋습니다 .
eunuch.vim 은 그 자체로
가장 필요한 UNIX 쉘 명령 용 Vim sugar. 버퍼와 기본 파일을 동시에 삭제하거나 이름을 바꿉니다. 로드
findlocate빠른 수정 목록에 또는 a 를 합니다. 등등.
완전한. 필요한 기능과 UNIX 시스템을 사용하는 경우 몇 가지 추가 도구가 있습니다.
찾고있는 명령은
:Remove!
다시 한 번, 많이 필요한 경우 다시 매핑하십시오 :nnoremap <Leader>rm :Remove!<CR>.
mv, mkdir, find, 등 매우 추천합니다.
나는 vim 내에서 파일을 삭제할 수 있다는 것을 좋아하지만, 어떤 이유로 든 아직 버전 제어가되지 않은 중요한 작업을 실수로 삭제하는 것에 대해서도 편집증이 있습니다. @glts 및 @accolade의 이전 정보를 vim을 종료하기 전에 명령을 사용하여 프롬프트 하는 방법에 대한 이 답변 을 결합하는 것이 유용하다는 것을 알았습니다 confirm.
이를 종합 ~/.vimrc하여 파일을 삭제하고 버퍼를 닫기 전에 메시지를 표시 하는 함수를 my에 추가 하고 키 조합에 매핑했습니다.
nnoremap <Leader>d. :call DeleteFileAndCloseBuffer()
fun! DeleteFileAndCloseBuffer()
let choice = confirm("Delete file and close buffer?", "&Do it!\n&Nonono", 1)
if choice == 1 | call delete(expand('%:p')) | q! | endif
endfun
당신이 나보다 편집증이 적은 한 번의 키 스트로크라면 <CR>첫 줄에 추가 할 수 있습니다.
nnoremap <Leader>d. :call DeleteFileAndCloseBuffer()<CR>
리턴을 한 번만 누르면됩니다.
expand('%:p')대신 사용하는 것이 좋습니다 @%. (내 힌트를 포함 시켜서 기쁘지만 :) 간결한 이점은 스크립트에서 미미합니다. 더 중요한 것은 %:p:) 파일 이름을 전체 절대 경로로 확장합니다 (아직 없을 수도 있음). 단지와 함께 %당신이 잊어 버린 경우, 대신에 다른 디렉토리에 같은 이름의 파일을 삭제하는 위험의 작은 실행 당신 :cd이 에드.
nnoremap rm :call delete(expand('%')) \| bdelete!<CR>.. 답변에 추가 할 수 있습니다.