53

Vim の swap/backup/undo ファイルの命名方法を変更することはできますか?

~/.vimrc混乱を避けるために、これらのファイルを にダンプするオプションを my に設定しました~/.vim/tmp/{swap,backup,undo}。ただし、同じ名前の別のディレクトリにあるファイルを日常的に編集しているため、他の方法では区別できないファイルが大量に作成されることが多く、Vim は回復に問題が発生することがあります。

%path%to%file.undo理想的には、これらすべての補助ファイルに対して、永続的な元に戻す ( ) の命名スキームを使用したいと考えています。設定する明確な方法はありませんが、Buf{Read,Write}マクロで実行できますか?

4

3 に答える 3

70

私はこれを持っており、.vimrcあなたが説明したように、完全なパス名とパーセント記号でスワップファイルに名前を付けます:

" Store swap files in fixed location, not current directory.
set dir=~/.vimswap//,/var/tmp//,/tmp//,.

キーは//、ディレクトリの末尾にあります。からのこのメモを参照してください:help dir:

  • Unix および Win32 の場合、ディレクトリが 2 つのパス区切り記号"//" または"\\"で終わる場合、スワップ ファイル名はファイルへの完全なパスから作成され、すべてのパス区切り記号がパーセント '%' 記号に置き換えられます。これにより、保存ディレクトリ内のファイル名の一意性が保証されます。
于 2010-12-02T04:56:30.813 に答える
67

これはgithub.vimrcからの私の一部です。

これは を設定しundodir(そしてオンにします)、backupdirとを設定しますdirectory(.swpファイルに使用)。ディレクトリがまだ存在しない場合は作成されることに注意してください。

" Save your backup files to a less annoying place than the current directory.
" If you have .vim-backup in the current directory, it'll use that.
" Otherwise it saves it to ~/.vim/backup or .
if isdirectory($HOME . '/.vim/backup') == 0
  :silent !mkdir -p ~/.vim/backup >/dev/null 2>&1
endif
set backupdir-=.
set backupdir+=.
set backupdir-=~/
set backupdir^=~/.vim/backup/
set backupdir^=./.vim-backup/
set backup

" Save your swap files to a less annoying place than the current directory.
" If you have .vim-swap in the current directory, it'll use that.
" Otherwise it saves it to ~/.vim/swap, ~/tmp or .
if isdirectory($HOME . '/.vim/swap') == 0
  :silent !mkdir -p ~/.vim/swap >/dev/null 2>&1
endif
set directory=./.vim-swap//
set directory+=~/.vim/swap//
set directory+=~/tmp//
set directory+=.

" viminfo stores the the state of your previous editing session
set viminfo+=n~/.vim/viminfo

if exists("+undofile")
  " undofile - This allows you to use undos after exiting and restarting
  " This, like swap and backup files, uses .vim-undo first, then ~/.vim/undo
  " :help undo-persistence
  " This is only present in 7.3+
  if isdirectory($HOME . '/.vim/undo') == 0
    :silent !mkdir -p ~/.vim/undo > /dev/null 2>&1
  endif
  set undodir=./.vim-undo//
  set undodir+=~/.vim/undo//
  set undofile
endif

うまくいけば、何が起こっているのかを理解するのに十分なほどコメントされています. そうでない場合は、コメントを追加してください。修正します。

チャオ!

更新 [2012 年 7 月 16 日]

backupdirRob Kine から、このセクションについて次のような質問をするメールを受け取りました。

  1. 現在のディレクトリを削除してから、再度追加しているようです。それは何をしますか?
  2. オペレーターは何をし^=ますか?
  3. チェックされたフォルダの使用における優先順位はVimでどのように機能しますか? (最後に追加されたフォルダーは、最初にチェックするフォルダーですか?)

最初に、さまざまな演算子について説明します。これらの演算子は、文字列リスト以外のオプションに対して異なる意味を持つため、注意してください!

  • -=文字列リストから値を削除します。
  • +=値を文字列リストに追加します。
  • ^=値を文字列リストの先頭に追加します。

したがって、backupdir次の操作が適用されます。

  1. リストから現在のディレクトリを削除します。
  2. 現在のディレクトリをリストに追加します (これにより、最後にチェックされることが保証されます)。
  3. リストからホームディレクトリを削除します(そこに保存されるのは好きではありません)。
  4. 前に追加し~/.vim/backup/ます。
  5. 前に追加し~/.vim-backup/ます。

Vim がバックアップを保存する場所を探すとき、最初から最後まで確認します。そのため~/.vim-backup/、 をチェックし、次に をチェックし、デフォルト リストをチェックし (削除されたとを~/.vim/backup除く)、最後にチェックします。.~/.

(たとえば):help ^=またはを使用して、Vim でこれらすべてのヘルプを取得できます:help backupdir

于 2012-03-02T05:12:54.810 に答える
2

ディレクトリの作成 undo

 $ mkdir ~/.vimundo

.vimrc ファイルをセットアップする

 set undodir=~/.vimundo
于 2010-12-19T19:25:29.903 に答える