[vim] vim에서 현재 파일을 어떻게 삭제할 수 있습니까?

vim 내에서 현재 열려있는 파일을 디스크에서 어떻게 삭제할 수 있습니까? 버퍼를 닫는 것도 좋을 것입니다.

나는 당신 이 NERDTree를 사용할 수 있음 을 알지만이 플러그인을 사용하지 않습니다.



답변

rm (1) 과 같은 외부 도구를 사용하는 것은 좋지만 Vim에는 delete()파일 삭제를위한 자체 기능 도 있습니다. 이것은 휴대용이라는 장점이 있습니다.

:call delete(expand('%'))

이것을 표현하는 다른 방법은 (현재 파일) 레지스터 (@accolade의 팁) :call delete(@%)를 사용하는 %입니다.

디스크의 파일 표현과 Vim 버퍼 모두 현재 버퍼를 완전히 제거하려면 :bdelete다음을 추가하십시오 .

:call delete(expand('%')) | bdelete!

선호도에 따라이를 매핑 할 수 있습니다.


답변

Vim 명령으로 파일 삭제를 살펴보십시오 . 댓글 섹션은 당신이 찾고있는 무엇을해야한다 :

기본적으로 Rm은 현재 파일을 삭제합니다. RM은 현재 파일을 삭제하고 버퍼를 저장하지 않고 한 번에 종료합니다.

또는 쉘 명령을 실행하여 현재 파일을 제거 할 수 있습니다.

:!rm %


답변

때로는 플러그인이 간단한 문제에도 매력적인 솔루션이 될 수 있습니다. 이 경우 전능하신 Tim Pope의 eunuch.vim 이 있기 때문에 운이 좋습니다 .

eunuch.vim 은 그 자체로

가장 필요한 UNIX 쉘 명령 용 Vim sugar. 버퍼와 기본 파일을 동시에 삭제하거나 이름을 바꿉니다. 로드findlocate빠른 수정 목록에 또는 a 를 합니다. 등등.

완전한. 필요한 기능과 UNIX 시스템을 사용하는 경우 몇 가지 추가 도구가 있습니다.

찾고있는 명령은

:Remove!

다시 한 번, 많이 필요한 경우 다시 매핑하십시오 :nnoremap <Leader>rm :Remove!<CR>.


답변

나는 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>

리턴을 한 번만 누르면됩니다.


답변

다음 두 단계로 수행 할 수 있습니다.

  1. 새 파일로 저장

    : w 새 파일 이름

  2. 이전 파일 삭제

    ! rm oldfilename


답변

이것은 인기가없는 의견 일 수 있지만 파일 트리 탐색기 (Netrw / NerdTree)가 파일을 삭제하는 가장 간단하고 안전한 방법이 될 것입니다. OP가 NerdTree를 사용하지 않더라도 내장 플러그인 Netrw도 잘 작동합니다.


답변