set history=0
set nobackup
set nomodeline
set noshelltemp
set noswapfile
set noundofile
set nowritebackup
set secure
set viminfo=""
让我知道您是否可以想到其他适合私有模式的命令。
关键是我无法想到使用此设置来启动Vim的任何简便方法。
我想出了一些想法:
加载.vimrcprivate而不是.vimrc
您只需将所有必要的命令放入.vimrcprivate并像这样启动Vim:
vim -u .vimrcprivate
定义并调用
Private()
函数另一个想法是将这样的代码添加到您的.vimrc中:
function Private()
" set of commands here
endfunction
,然后就可以在私有模式下启动Vim了:
vim -c 'call Private()'
使用变量来触发设置您的命令
与第二种解决方案非常相似。
只需将
if exists('privatemode')
" set of commands here
endif
添加到.vimrc中,然后启动Vim使用
vim -c 'let privatemode=1'
,它既不聪明也不简短。
为您的.bashrc(或您的shell使用的任何其他。* rc文件)添加别名。 >
例如:
alias vimprivate="vim +\"set history=0\" +\"set nobackup\" +\"set nomodeline\"\
+\"set noshelltemp\" +\"set noswapfile\" +\"set noundofile\"\
+\"set nowritebackup\" +\"set secure\" +\"set viminfo=\"\"\""
太糟糕了。我不喜欢。
使用环境变量
只需运行
VIM_PRIVATE=1 vim
并添加if $VIM_PRIVATE
" set of commands here
endif
< br到您的.vimrc。
一些魔术(摘自Carpetsmoker在此主题中的评论)
Carpetsmoker在此评论中说,
我不建议使用单独的vimrc文件,原因很简单>容易忘记。像autocmd这样的东西:
au BufRead * if &cryptmethod != "" | setlocal nobackup noundofile ... | endif
应该为您做魔术,这是不可能忘记的。但是我还不知道这种魔术是如何工作的。
你有什么主意吗?
完美的解决方案是
vim -private
或vim +Private
,但是:我非常确定您不能添加自己的自定义命令行选项,例如
-private
。 当涉及到
+Private
时,我无法在线找到它。#1 楼
好吧,有点迟了,但要回应:一些魔术(摘自Carpetsmoker在此主题中的评论)
我的一般想法是,如果您使用的是加密文件,则始终要启动“私有模式”,因此此自动命令将为您做到这一点:
au BufRead * if &key!= ""
\ | setlocal history=0 nobackup nomodeline noshelltemp noswapfile noundofile nowritebackup secure viminfo=""
\ | endif
基本上,每次从磁盘读取文件时,它都会检查是否设置了
key
设置(这是存储密码的位置),如果是,它会设置您的设置。有关自动命令的工作原理的一般概述,请参见:help autocommand
。它的优点是不能忘记使用它。
当然,它要求文件是加密。如果不是,则什么也不做。但并非所有内容都会丢失,我们可以使用文件名表示文件是私有文件,例如:
au BufRead *.private setlocal ...
将所有以
.private
结尾的文件标记为这样。如果要以“私有”模式随机打开文件,则建议使用简单的shell别名,例如:
alias vimprivate='vim -c "source ~/.vim/private"
和
~/.vim/private
会包含:setlocal history=0 nobackup nomodeline noshelltemp noswapfile noundofile nowritebackup secure viminfo=""
为什么不
-u
?好吧,这样您就可以拥有自己的设置和“专用”设置。您还可以将两者结合使用:au BufRead * if &key!= "" | source ~/.vim/private | endif
#2 楼
根据Vim文档(:help -c
),在启动Vim时,最多只能组合10个+{command}
,-c {command}
和-S {file}
选项参数,并且它们执行_after_读取第一个文件。--cmd {command}
选项允许在处理任何vimrc文件之前要执行的另外10条命令,但请记住,任何设置都可以被vimrc覆盖。因此,我更喜欢尽早设置Vim选项,避免了对环境变量或脚本逻辑。另外,插件可能正在做一些令人毛骨悚然的事情,因此最好不要加载任何东西。 :
# Secure Vim
alias vimsec="vim -N -n -i NONE -u ~/.vimrcprivate"
alias gvimsec="g$(alias vimsec | sed -e "s/-u/-U/" -e "s/\(.*\)'\(.*\)'//")"
评论
也许您可以在vimrc中定义一个自定义命令,例如:command!私有设置历史记录= 0 nobackup secure ...,然后使用vim +'Private'从shell调用它。关于您提到的最后一个自动命令,当读取缓冲区时,它将测试'cryptmethod'选项或简短版本的'cm'的值是否为非空。当使用Ex命令:X将缓冲区写入文件时,此选项控制用于加密缓冲区的加密方法。如果该选项不为空,则自动命令将设置各种选项。我投票给vim -Nu .vimrcprivate。
4和1,2或3的组合怎么样?别名vimprivate ='vim -u .vimrcprivate'等。
另一种方法是将vim符号链接到另一个名称,例如vimp,然后测试v:progname ==“ vimp”,如果为true,则执行私有模式设置。参见:help v:progname。
@garyjohn。您的解决方案真的很棒!像魅力一样工作:)