根据您在vimrc文件中设置的命令,OP提供的别名可能无法正常工作。这是因为--cmd
在加载vimrc文件之前运行命令,因此您的vimrc文件可能会覆盖这些值。相反,您可以使用-c
,它与--cmd
相同,但在加载vimrc文件后执行。
由于vimrc中有许多选项可能会泄漏数据,因此最好使用不同的方法。
使用默认vimrc文件使用vim
如上所建议,另一种选择是使用别名以默认rc文件加载vim:
HISTCONTROL=ignoredups:ignorespace
alias pvim_default=' vim -u DEFAULTS -U DEFAULTS -i NONE -n -c "set nomodeline"'
我们可以设置bash的HISTCONTROL
变量为ignorespace
选项,这样任何以空格前缀的命令都不会保存到bash历史文件中。在zsh中,请使用setopt HIST_IGNORE_SPACE
代替。
使用自己的vimrc文件加载vim
如果你仍然想加载你的vimrc,一个更灵活的选择是将自定义变量g:PrivateMode
传递给vim,你可以使用它来根据需要配置你的vimrc文件。
HISTCONTROL=ignoredups:ignorespace
alias pvim=' vim --noplugin --cmd "let g:PrivateMode=1"'
然后在你的vimrc中使用
" Don't use private mode if g:PrivateMode is not set from the command line
" Put near start of vimrc file
if !exists("g:PrivateMode")
g:PrivateMode = 0
endif
" Put this near the end of your vimrc file so values don't get overwritten by accident
if g:PrivateMode
set nobackup
set noundofile
set noswapfile
set viminfofile=NONE
set viminfo=
set nomodeline
set noexrc " dont load .vimrc, .exrc, .gvimrc found in the current directory
set clipboard^=exclude: " make sure vim isn't saving to system clipboard
else
" setup for non-private mode
endif
你需要检查一下你的vimrc文件,看看是否有任何命令、插件等可能会泄露数据并在私密模式下禁用它们。
-i -NONE
以compatible
模式启动,因此您应该没有历史记录或viminfo。 - romainl-u NONE -U NONE
。您是否还需要让Vim访问的文件保留它们的最后访问/修改日期? - Daan Bakker$HISTFILE
而不将敏感数据移动到.viminfo
时,这非常有用。顺便问一下,这是vim存储痕迹的唯一位置(加上swp文件)吗? - tuxayovimcognito
。 - lindhe