Impedir que o Vim grave eventos para determinados tipos de arquivos

12

Para adicionar a esta questão de stackoverflow , o que se deve colocar .vimrcpara garantir a "edição privada" de determinadas extensões de arquivo (por exemplo, .gpgarquivos).

Sem comprometer a eficácia da sessão, nenhuma informação sobre o trabalho realizado deve ser salva, incluindo registros, histórico de pesquisa, histórico de comandos, visualizações, trocas, etc. Para gpgarquivos, é possível usar este plugin vim , mas além de editar o plugin, como um estender essas idéias discutidas para tipos de arquivos arbitrários?

Provavelmente, usaremos os seguintes comandos,

if <ft in privacy_ext_list>
  set noswapfile
  set noundofile
  set viminfo=
endif 

mas, além da declaração condicional apropriada, o que está faltando?

Além disso, existe uma maneira com o Vimscript criar uma matriz de extensões de arquivo e avaliar se o tipo de arquivo atual está dentro da matriz?

HAL 9001
fonte
6
@Carpetsmoker Eu acho que essa pergunta é mais ampla. O autor não está apenas perguntando como definir parâmetros em um buffer de um tipo de arquivo específico, mas em certa medida quais parâmetros devem ser definidos para garantir a privacidade. Isso certamente não é óbvio ou reunido em um local central, então acho que é uma boa pergunta.
Andrew Ferrier

Respostas:

6

Aqui está a lista completa de configurações que devem ser adicionadas ao seu, .vimrcse você deseja evitar qualquer vazamento de arquivos confidenciais.

set nobackup
set nowritebackup
set noundofile
set noswapfile
set viminfo=""
set noshelltemp
set history=0
set nomodeline
set secure

Eu recomendo que você crie um novo arquivo de configuração chamado .vimrc_securee execute o Vim com vim -u ~/.vimrc_secure(ou crie um script / alias) quando desejar editar seu arquivo confidencial. Isso minimizará o risco de um plug-in malicioso ou um recurso de buggy.

Ben
fonte
Eu gosto disso no sentido de que .vimrc_secureé independente do .vimrc(como fazer o que você diz então permite ao usuário :e private file[manter o arquivo fora do histórico do shell também]), mas o uso vim -u ~/.vimrc-incognitonão será de origem ~/.vimrc, correto? As alegrias da privacidade não devem custar menos conforto (a menos que o conforto seja fundamentalmente defeituoso por meio de plug-in malicioso ou recurso de buggy). Enquanto deve haver uma ênfase no risco de incógnitas, certamente, deve haver alguma maneira de envolvê condicionalmente sua solução ...
HAL 9001
1
Eu não recomendaria o uso de um arquivo vimrc separado, pelo simples motivo de que é tão fácil esquecer. Algo como este autocmd: au BufRead * if &key != "" | setlocal nobackup noundofile ... | endifdeve fazer a mágica para você e é impossível esquecer.
Martin Tournoij
@Carpetsmoker, o que é isso &l:cm != ""tudo?
Curinga
1
@ Wildcard Ehm .... Parece que eu pretendia &cryptmethod, que se refere a essa configuração. A l:parte foi um erro (usei meus poderes especiais de modificação para editar meu comentário). Obrigado por apontar isso!
Martin Tournoij
@Carpetsmoker, você poderia elaborar seu comentário? Eu criei um tópico aqui: vi.stackexchange.com/questions/6195/…
Mateusz Piotrowski