在vim中禁用交换文件创建

Nad*_*mli 210 vim editor

有没有办法.swp在vim中禁用文件创建?或者至少在一个地方创建它们,这样我就可以轻松找到并删除它们.

当我在同时编辑时复制父目录时,我发现它们特别烦人.当然我知道我可以使用find -exec来查找和删除它们.但我想要一个更实际的解决方案.

dwc*_*dwc 247

要从vim中禁用交换文件,请键入

:set noswapfile
Run Code Online (Sandbox Code Playgroud)

要永久禁用交换文件,请将以下内容添加到您的~/.vimrc文件中

set noswapfile
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅交换文件上Vim文档

  • 如果您的编辑器崩溃(断电等),交换文件很好,请记住. (6认同)
  • 另一种选择是仍然使用交换文件,但将其保留在内存中,因此它不会继续写入硬盘。这不能防止您在中断期间丢失文件,但是如果您在 anther vim 中打开相同的文件,它会立即告诉您。命令为:set directory=/dev/shm (2认同)

tru*_*ktr 150

在.vimrc或/ etc/vimrc中设置以下变量,使vim将swap,backup和undo文件放在特殊位置,而不是正在编辑的文件的工作目录:

set backupdir=~/.vim/backup//
set directory=~/.vim/swap//
set undodir=~/.vim/undo//
Run Code Online (Sandbox Code Playgroud)

在路径中使用双尾斜杠告诉vim启用一个避免名称冲突的功能.例如,如果您在一个位置编辑文件而在另一个位置编辑另一个文件,并且两个文件具有相同的名称,则不希望在〜/ .vim/swap /中发生名称冲突.如果使用两个尾部斜杠指定〜/ .vim/swap //,vim将使用正在编辑的文件的整个路径创建交换文件以避免冲突(文件路径中的斜杠将替换为百分号%).

例如,如果您编辑/path/one/foobar.txt和/path/two/foobar.txt,那么您将看到〜/ .vim/swap /中的两个交换文件名为%path%one%foobar.txt和%path%分别为2%foobar.txt.

  • 对于新人(比如我哈哈......),你只需要参加〜/ .vim /并自己创建目录.它不会自动为您创建它们. (24认同)

mar*_*s_b 37

我在这里找到了答案:

vim -n <file>
Run Code Online (Sandbox Code Playgroud)

打开没有swapfile的文件.

此外:

set dir=/tmp
Run Code Online (Sandbox Code Playgroud)

在中.vimrc创建交换文件/tmp.


cpj*_*eur 28

这是我个人的〜/ .vimrc备份设置

" backup to ~/.tmp 
set backup 
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set backupskip=/tmp/*,/private/tmp/* 
set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set writebackup
Run Code Online (Sandbox Code Playgroud)


Jez*_*Jez 13

我同意那些质疑为什么vim需要所有这些"灾难恢复"的东西,而没有其他文本编辑为此烦恼.我不希望vim在编辑时在编辑的文件目录中创建任何额外的文件,非常感谢.为此,我在我_vimrc的禁用交换文件,并将恼人的'备份'文件移动到临时目录:

" Uncomment below to prevent 'tilde backup files' (eg. myfile.txt~) from being created
"set nobackup

" Uncomment below to cause 'tilde backup files' to be created in a different dir so as not to clutter up the current file's directory (probably a better idea than disabling them altogether)
set backupdir=C:\Windows\Temp

" Uncomment below to disable 'swap files' (eg. .myfile.txt.swp) from being created
set noswapfile
Run Code Online (Sandbox Code Playgroud)

  • 我认为其他编辑不打扰它的事实反映了其他编辑的不足,而不是反映在vi(m)上.将同一目录作为放置这些文件的默认位置的选择有点不幸,尽管至少有点可辩护.(例如,在多服务器,高度交叉安装的环境中,在您最急需的时刻找到恢复文件的位置可能并不明显) (9认同)
  • Vim的交换文件处理非常糟糕.我用它来恢复丢失的数据可能是5次.但是我已经讨厌恢复交换文件大约9,000次,无论如何总是与文件相同,或者更糟糕的是过时的版本.如果恢复过程没有那么糟糕,这可能是一个很好的特征.recover.vim有点帮助,但仍然太过互动. (3认同)
  • Sublime Text有"灾难恢复".我喜欢它!我甚至不需要保存文件,当我恢复我所做的任何更改,保存或不保存时,都会被撤回. (3认同)
  • @TorkelBjørnson-Langen 在没有关闭所有 Vim 会话的情况下重新启动我的机器,然后对哪些恢复文件实际上有效感到偏执,这可能是我的错。无论如何,我试图通过编写一个仅在有未保存的编辑时维护交换文件的插件来获得两全其美的效果:[vim-swap-is-awesome.vim](https://github.com/joeytwiddle/rc_files/ blob/master/.vim/plugin/noswapsuck.vim) (2认同)

mon*_*ome 7

您可以将backupdir和directory设置为null以完全禁用交换文件,但通常建议将它们简单地放在集中目录中.Vim负责确保没有名称的碰撞或类似的东西; 所以,这是一个完全安全的选择:

set backupdir=~/.vim/backup/
set directory=~/.vim/backup/
Run Code Online (Sandbox Code Playgroud)

  • 您应该在路径的末尾添加一个双斜杠`//`,以便您可以同时修改两个具有相同名称的文件. (2认同)