이미 스왑 파일이 있는 경우 VIM에서 읽기 전용 모드로 파일을 열려면 어떻게 해야 합니까?

이미 스왑 파일이 있는 경우 VIM에서 읽기 전용 모드로 파일을 열려면 어떻게 해야 합니까?

명령을 사용하여 파일을 열 때 :e filename해당 파일이 이미 다른 vim 인스턴스에 의해 열려 있으면 다음 위치에서 파일을 열 것인지 묻는 메시지가 나타납니다.읽기 전용 모드, 그러나 편집, 재개, 종료 또는 중단되었습니다.

vim을 시도하면 :silent! e filename정지되는 것 같습니다 . 하지만 스왑 파일로 무엇을 해야 하는지 묻는 질문이 있는데, 조용히 하라고 해서 볼 수가 없습니다.

파일을 열도록 지시하는 데 사용할 수 있는 명령이 있나요?읽기 전용 모드 만약에파일을 쓰기 모드로 열 수 없으며 사용자 상호 작용이 필요하지 않습니까? (파일을 점프/열기 위해 이것을 매크로에 통합하고 싶습니다).

답변1

당신이 가지고 있다면정력 >= 7(제 생각에는) autocmdevent 와 함께 사용할 수 있습니다 SwapExists. 그곳에서는 매우 간단한 것부터 매우 복잡한 것까지 무엇이든 할 수 있습니다.
다음은 ~/.vimrc에 있는 간단한 예입니다.

autocmd SwapExists * let v:swapchoice = "o"

스왑 파일이 존재하면 이 이벤트가 시작됩니다. 위의 autocmd는 읽기 전용 모드로만 파일을 엽니다. autocmd에서 값을 얻으면
,v:swapchoice아니요무엇을 하고 싶은지 물어보세요. 사용할 수 있는 값은 여기에 나열되어 있습니다.v: 교환 선택.
매우 고급 autocmd에 대해서는 여기를 참조하십시오:기존 .vim 편집
vim을 설치한 후 스크립트가 서버에 이미 존재할 수 있으므로 editexisting.vim.

답변2

정확히 이 작업을 수행 하는 스크립트가 있습니다 .vimrc. 그러나 swp 파일이 있는 열려 있는 모든 파일에 대해 이 작업을 수행합니다. 항상 이 동작을 원하는지 확실하지 않습니다. 아마도 작성 중인 매크로에서 필요에 맞게 조정할 수 있습니다.

swp 파일이 있는 경우 ro를 열려면 다음을 입력하십시오 .vimrc.

func CheckSwap()
  swapname
  if v:statusmsg =~ '\.sw[^p]$'
    set ro
  endif
endfunc

if &swf
  set shm+=A
  au BufReadPre * call CheckSwap()
endif

여기에서 이 스크립트를 얻었습니다.여기, 그리고 관심을 가질 수 있는 고급 예입니다.

답변3

RHEL 및 우분투의 명령은 viewvim을 읽기 전용 모드로 열지만 :w!.

관련 정보