Generally, @
represents a symbolic link. There are certain relatively standard format indicators often appended to a filename when displaying it in a list of files, to let you quickly have some idea what it is; I'm not sure if they originated with ls
, but ls -F
has a nice list of them: /
is a directory, @
is a symbolic link (meaning the file is really pointing to a file elsewhere), and |
, >
, and =
are different special "files" used for interprocess communication. Also, files with the execute bit are often displayed with a trailing *
.
These aren't actually part of the file name; they're shown to the user to let them quickly categorize the file as a regular file, a program, a directory, a symlink, or something else.
In this case, looking through yadr's install script, it appears that it puts all configuration files in non-hidden files in the .yadr
directory, presumably to make managing them easier. Because nothing else is looking for dotfiles there, it then by default creates symlinks from your home directory to the directory it is installed in (look starting at line 301 in yadr's Rakefile
; file_operation
normally symlinks ~/.file
to $PWD/file
). In install.sh
, we can see that yadr normally runs its rakefile in ~/.yadr
, so a default install will replace many dotfiles with symlinks into ~/.yadr
. On line 24 of the rakefile, we see that that's what's happening: file_operation
is called on vim
and vimrc
, meaning ~/.vim
and ~/.vimrc
are symlinked to ~/.yadr/vim
and ~/.yadr/vimrc
, respectively. The previous ~/.vimrc
was moved to ~/.vimrc.backup
.
So, what happened here is that yadr's installation moved your .vimrc
to .vimrc.backup
, and replaced it with a link to its own file, located in ~/.yadr
. When you deleted ~/.yadr
, the link now points inside a nonexistent directory; vim can create a file when it doesn't exist, but it can't save in a nonexistent directory. To edit .vimrc
, you'll have to delete the current symlink and either start over from the auto-created backup (if it exists), or from scratch (if it doesn't).