Normalmente, no edita un archivo en vim. Si ejecuta vim foo
, edite, escriba y salga, vim unlinks foo
y crea un nuevo archivo y un nuevo enlace llamado foo
. Pero, si el archivo tiene más de un enlace, entonces vim
realmente modifica el archivo. Por ejemplo:Edite un archivo in situ en vim
$ ls -i foo
19428852 foo
$ vi foo
$ ls -i foo
19428857 foo
$ ln foo bar
$ vi bar
$ ls -i bar
19428857 bar
He estado buscando una manera de editar realmente un archivo, y parece que hay dos opciones. Use ed
, o use vim
, pero asegúrese de que haya al menos dos enlaces al archivo antes de editar. Supongo que la pregunta es académica, ya que en realidad no importa que vim cree un nuevo archivo si solo hay un enlace, y vim parece hacer lo correcto si se crean enlaces mientras la edición está en marcha, pero tengo curiosidad :
¿es posible hacer que vim siempre edite el archivo y no cree uno nuevo?
Algunas razones por las que hace la diferencia ... ventaja de crear un archivo nuevo e intercambiar el enlace: impide que otros programas vean un archivo parcialmente escrito. Ventaja de escribir el archivo en su lugar: el programa fileschanged (que usa fam) parece ver el cambio más pronto (inmediatamente, en lugar de 6 segundos más o menos cuando el archivo se elimina y el enlace se intercambia, por alguna razón ... esto es discutible una idiosincrasia en fam o fileschanged) –