在打开一个新的终端窗口时,要写入的最新VIM解文件显示为第一行,通常带有某种形式的错误。为什么会显示这个,有什么方法可以防止它吗?添加.hushlogin
到我的主目录不工作。
上下文:我的.dotfiles
是在一个Git repo中版本的,包含一个符号链接的.Vim
目录。我使用的是ZSH, iTerm2
和Git
的自制安装。
消息: /Users/joshuaberk/.dotfiles/vim/vim.symlink/undo/%Users%joshuaberk%.dotfiles%system%env.zsh:1: unmatched
我的.Vimrc
的(可能相关的)部分包含在下面(撤消文件设置在"备份"中)。
" 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
在评论中,你说你正在使用Zach Holman的dotfiles。在zsh
dotfiles中,有一个部分查找所有*.zsh
文件并加载它们。它正在寻找$ZSH
:
config_files=($ZSH/**/*.zsh)
默认是整个dotfiles目录:
export ZSH=$HOME/.dotfiles
你的.vimrc
正在设置你的撤消文件在.vim
(这是一个符号链接到dotfiles目录)。
你可以通过删除所有撤消文件来修补这个问题:
cd ~/.vim/undo
rm *.zsh
但是如何永久地修复它呢?我找不到任何特别令人满意的方法。您不能自定义Vim使用的解压文件的名称,但可以自定义它的位置。也许你要告诉Vim将撤消保存在.dotfiles
目录之外:
set undodir=/tmp/vim/undo
if !isdirectory(expand(&undodir))
call mkdir(expand(&undodir), "p")
endif
你可以告诉Vim不保存undofiles的.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,这取决于您希望在重启期间保留多少撤消历史记录。