cari

Rumah  >  Soal Jawab  >  teks badan

linux - 删除当前目录下所有VIM临时文件的正确命令是什么?

在使用VIM的过程中,会产生大量以波浪线(~)结尾的VIM临时文件,请问有没有一条删除所有VIM临时文件的命令?

rm *.*~

好像可以,不知道会产生不良后果吗?总感觉不是很安全

PHP中文网PHP中文网2810 hari yang lalu1107

membalas semua(4)saya akan balas

  • 大家讲道理

    大家讲道理2017-04-17 11:36:43

      set nobackup
      set undodir=~/.undodir
    

    都用git或者icloud dropbox之类的云备份了,实在没看到什么vim备份文件的必要,那个文件还会影响grep,太不方便了。

    balas
    0
  • 阿神

    阿神2017-04-17 11:36:43

    我有个专门的脚本来处理 Vim 的备份文件。依赖 Python 3 和 mlocate。会删除两种情况下的备份文件:原文件已经很久没修改过了;原文件已经不存在了。

    不建议禁用备份功能,虽然现在有持久性撒消,但是数据多个备份总是会更安全。

    还是把代码在这里贴一份:

    #!/usr/bin/env python3
    # fileencoding=utf-8
    
    '''从列表中读取备份文件(*~)列表,并检测原文件是否存在;若不存在则删之'''
    
    import sys, os
    import subprocess
    import datetime
    
    if len(sys.argv) == 1:
      db = None
    elif len(sys.argv) == 2:
      db = sys.argv[1]
    else:
      sys.exit('argument error')
    
    if db:
      f = subprocess.getoutput("locate -d '%s' -e -b '*~' 2> /dev/null" % db).split('\n')
    else:
      f = subprocess.getoutput("locate -e -b '*~' 2> /dev/null").split('\n')
    
    def filter(i):
      if not os.path.isfile(i[:-1]):
        return True
      try:
        atime = datetime.datetime.fromtimestamp(os.stat(i).st_atime)
      except FileNotFoundError:
        return False
      now = datetime.datetime.today()
      interval = datetime.timedelta(days=30)
      if now - atime > interval:
        return True
      return False
    
    for i in f:
      if i.endswith('~') and os.access(os.path.split(i)[0], os.W_OK):
        if filter(i):
          try:
            print("删除", i)
            try:
                os.unlink(i)
            except FileNotFoundError:
                print(i, '在被删除前消失了:-(')
            # print(i)
          except:
            print(i+': error'+repr(sys.exc_info()), file=sys.stderr)
    

    balas
    0
  • ringa_lee

    ringa_lee2017-04-17 11:36:43

    $vim ~/.vimrc
    

    加入

    set nobackup
    

    试试好用不

    balas
    0
  • 阿神

    阿神2017-04-17 11:36:43

    这样删你躲不开:

    1. 文件名以-开始(会被误认为参数)(这是一个经典的坑)
    2. 文件名不含.

    正确的命令是rm -f -- *~

    以上只解答本问题的表象(Y问题)。对于对付vim的临时文件的本质目标(X问题),还请以 @依云 为代表的本站更多vim高手做解答

    balas
    0
  • Batalbalas