crontab
FreeBSDでファイルを編集するにはどうすればよいですか?
$ 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
た作品の罰金を... Linuxは、作業罰金に思えます...
crontab
FreeBSDでファイルを編集するにはどうすればよいですか?
$ 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
た作品の罰金を... Linuxは、作業罰金に思えます...
回答:
問題は、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
て、Vimで元のファイルを上書きする必要があります。
"yes" make a copy of the file and overwrite the original one
これをcrontabファイルに対して自動的に行うことができます:
au FileType crontab setlocal bkc=yes
@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の最初の答えは、ほとんどの場合に最も適切です。
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
おやつのバックアップファイル。
crontab -e
を生成しcrontab: VIM_NOBACKUP=1 vim: No such file or directory
ます。
crontab
、通常の値を持ち上げEDITOR
たりVISUAL
(それが定義されている場合)、あなたはそれらを設定することができますEDITOR='VIM_NOBACKUP=1 vim'
。