VIM Undofile在终端登录时显示

时间:2014-06-16 23:36:01

标签: vim zsh undo iterm

打开新的终端窗口时,要写入的最新VIM undofile显示为第一行,通常会出现某种形式的错误。 为什么显示,有没有办法阻止它?.hushlogin添加到我的主目录不起作用。

上下文:我的.dotfiles在Git仓库中版本化,包含符号链接的.Vim目录。我正在使用ZSH, iTerm2Git的自制软件安装。

消息: /Users/joshuaberk/.dotfiles/vim/vim.symlink/undo/%Users%joshuaberk%.dotfiles%system%env.zsh:1: unmatched

.Vimrc的(可能相关)部分包括在下面(Undofile设置在“备份”中)。

" Search/Substitution/Completion
set ignorecase               " removes case sensitivity by default
set smartcase                " adding ≥1 uppercase = case sensitivity
set incsearch                " do incremental searching
set gdefault                 " substitute all matches in line (not first)
set showmatch                " quickly jump to matching bracket
set completeopt=menu,longest " disable preview window on completion
set wildmenu
set wildmode=list:longest,full

" Backup
set undofile
set undodir=~/.vim/undo
set backupdir=~/.vim/backups
set directory=~/.vim/swaps
set history=50
set autoread                 " updates VIM file if changed elsewhere
set hidden                   " hide buffers instead of closing them
set clipboard+=unnamed       " system clipboard by default

1 个答案:

答案 0 :(得分:3)

在评论中,您说您正在使用Zach Holman's dotfiles。在zsh点文件内,there's a section that looks for all *.zsh files and loads them。它正在寻找$ZSH下的所有内容:

config_files=($ZSH/**/*.zsh)

默认情况下,这是整个dotfiles目录:

export ZSH=$HOME/.dotfiles

您的.vimrc将您的虚拟文件设置为.vim(这是该dotfiles目录中的符号链接)。


您可以通过删除所有这些撤消文件来修补此问题:

cd ~/.vim/undo
rm *.zsh

但你如何永久修复它?我找不到任何特别令人满意的方式。您无法自定义Vim使用的undofile名称,但您可以自定义其位置。也许你会告诉Vim在你的.dotfiles目录之外保存它的地址:

set undodir=/tmp/vim/undo
if !isdirectory(expand(&undodir))
    call mkdir(expand(&undodir), "p")
endif

你可以告诉Vim不保存.zsh个文件的文件:

autocmd FileType zsh set noundofile

或者,您可以通过更改.zshrc以将错误消息更改为/dev/null来告诉zsh STFU有关配置文件中的错误:

for file in ${(M)config_files:#*/path.zsh}
do
    source $file 2> /dev/null
done

这个似乎是最糟糕的选择;如果你在其他.zsh个文件中引入拼写错误,它会让你的生活充满痛苦。我会选择1或2选项,具体取决于您希望在重新启动时保留撤消历史记录的数量。