Vim을 사용하여 crontab 파일을 편집하는 방법


12

crontabFreeBSD에서 파일을 어떻게 편집 합니까?

$ crontab -e
# ... I do my thing in vim & :wq

"crontab.9ZcXiFaawt" 6L, 203C written
crontab: temp file must be edited in place
Exit 1

EDITOR=nvi잘 사용하면 ... 리눅스도 잘 작동하는 것 같습니다 ...

답변:


19

문제는 Vim이 파일을 쓰는 방법입니다. 기본적으로 파일의 복사본을 만들고 원본을 덮어 씁니다.

다음을 통해이를 확인할 수 있습니다.

# Show the file's inode
$ ls -i a
3156153 a

# Open file in Vim, :wq

# inode changed!
$ ls -i a
3155322 a

crontab이것으로 혼란스러워합니다 (참조 :help crontab)

당신은 사용해야 :set backupcopy하기 위해 yes원본 파일, 덮어 쓰기 빔을 만들기 위해 :

"yes"   make a copy of the file and overwrite the original one

다음을 사용하여 crontab 파일에 대해 자동으로이를 수행 할 수 있습니다.

au FileType crontab setlocal bkc=yes

2

@Martin의 자체 답변이 정확합니다. 그러나 때때로 예외를 제외 하고 vimrc파일 채우기를 제한하려고하는 나와 같은 사람들에게는 변형이 있습니다. 여기서 crontab을 편집하는 것은 모델을 사용하는 것입니다. 이를 통해 예외를 대상 파일에 직접 배치 할 수 있습니다.

아래는 내 crontab 모델입니다.

# vim: nu et tw=130 ts=8 sts=4 sw=4 ff=unix fo-=l fo+=tcroq2 bkc=yes

여기서 중요한 것은 bkc=yes@Martin의 vimrc구성 과 일치하는 것 입니다. 나머지는 개인 편의 설정입니다.

이것은 완전성과 생각을위한 음식에 대해 말했다. @Martin의 초기 답변은 대부분의 경우에 가장 적합합니다.


1

같은 오류는 아니지만 자주 발생합니다.

Error detected while processing /root/.vimrc:
line    2:
E319: Sorry, the command is not available in this version: syntax enable
line    7:
...

crontab vi대신 사용하면이 오류가 표시됩니다 vim. ~/.bashrc파일에 다음 코드를 추가하여 crontab 편집기를 설정해야 합니다.

export EDITOR=vim

-1

OSX에서도 마찬가지입니다. 문제를 조사한 후 문제가 일반 vi에서는 작동 하지만 작동하지 않는 것으로 나타났습니다 vim.

따라서 수정 사항은 다음과 같습니다.

EDITOR=vi crontab -e

그러나 vi일반적으로 vim(예를 들어 OSX에서) 연결되어 있으므로 동일합니다.


vimrc 파일 에서 다음 줄로 해결할 수 있습니다 .

au BufNewFile,BufRead crontab.* set nobackup | set nowritebackup

.vimrc 파일에 다음 행을 추가하여이를위한 또 다른 해결 방법이 있습니다.

if $VIM_NOBACKUP
  set nobackup
  set nowritebackup
endif

명령을 실행하십시오.

VIM_NOBACKUP=1 crontab -e

다음 변수를 정의 할 수도 있습니다.

EDITOR='VIM_NOBACKUP=1 vim'

출처 : crontab : 임시 파일을 편집해야합니다.


이 무슨 일이 일어나고있는 이유는 방식과 관련이있다 vim/ vi취급 백업 파일.


1
crontab일반적으로 EDITOR또는 값 VISUAL(정의 된 경우)을 올리 므로 다음과 같이 설정할 수 있습니다 EDITOR='VIM_NOBACKUP=1 vim'.
muru

@muru 시도했지만 작동하지 않는다고 생각합니다. crontab -e를 생성 crontab: VIM_NOBACKUP=1 vim: No such file or directory합니다.
kenorb

1
아치 리눅스와 우분투, bash와 zsh에서 작동하기 때문에 OSX이어야합니다.
muru

2
환경 변수에 대한 모든 비웃음은 어리석은 것처럼 보입니다. Vim은 파일 특정 설정을 처리하는 방법을 가지고 있으며이를 autocmds라고합니다. 링크에서 방금 복사 한 것처럼 보이지만 작성자는 Vim에 익숙하지 않은 것 같습니다.
Martin Tournoij

2
왜 포함해야합니까? 그것은 어리석은 일이며 autocmd를 사용하지 않는 이유는 거의 없습니다. 우리가 그것을 제거하면, 우리는 autocmd 만 남았습니다. 이 답변은 노이즈 만 추가합니다.
Martin Tournoij
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.