개인 모드에서 Vim을 시작하는 가장 간단한 방법


19

개인 모드에서 Vim을 쉽게 시작할 수 있기를 원합니다. 이 명령 세트를 사용하는 개인 모드를 개인 모드로 정의하십시오.

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

개인 모드에 적합한 추가 명령을 생각할 수 있는지 알려주십시오.

요점은이 설정으로 Vim을 시작하는 짧고 쉬운 방법을 생각할 수 없다는 것입니다.

내가 생각해 낸 아이디어는 다음과 같습니다.

  1. .vimrc 대신 .vimrcprivate를로드하십시오.

    필요한 모든 명령을 .vimrcprivate에 넣고 Vim을 다음과 같이 시작할 수 있습니다.

    vim -u .vimrcprivate
    
  2. Private()함수 정의 및 호출

    또 다른 아이디어는 .vimrc에 다음과 같은 코드를 추가합니다.

    function Private()
        " set of commands here
    endfunction
    

    그런 다음 다음과 같이 개인 모드에서 Vim을 시작할 수 있습니다.

     vim -c 'call Private()'
    
  3. 변수를 사용하여 명령 설정을 트리거하십시오.

    두 번째 솔루션과 매우 유사합니다. 그냥 추가

    if exists('privatemode')
        " set of commands here
    endif
    

    .vimrc에 넣고 Vim을 사용하여 시작하십시오.

    vim -c 'let privatemode=1'
    

    똑똑하지도 않고 짧지도 않습니다.

  4. .bashrc (또는 쉘이 사용하는 다른. * rc 파일)에 별명을 추가하십시오

    예를 들면 다음과 같습니다.

    alias vimprivate="vim +\"set history=0\" +\"set nobackup\" +\"set nomodeline\"\
        +\"set noshelltemp\" +\"set noswapfile\" +\"set noundofile\"\ 
        +\"set nowritebackup\" +\"set secure\" +\"set viminfo=\"\"\""
    

    끔찍하다. 나는 그것을 좋아하지 않는다.

  5. 환경 변수 사용

    그냥 실행 VIM_PRIVATE=1 vim하고 추가하십시오

    if $VIM_PRIVATE
        " set of commands here
    endif
    

    .vimrc에.

  6. 약간의 마술 ( 이 글 에서 Carpetsmoker 의 코멘트 로부터 )

    Carpetsmoker는 말한다 이 댓글

    간단한 이유로 별도의 vimrc 파일을 사용하지 않는 것이 좋습니다> 잊어 버리기가 쉽습니다. 이 autocmd와 같은 것 : au BufRead * if &cryptmethod != "" | setlocal nobackup noundofile ... | endif당신을 위해 마술을해야하며 잊을 수 없습니다.

    그러나 나는이 마법이 어떻게 작동하는지 아무 생각이 없어 한 이 아직 없습니다 .


당신은 어떤 아이디어를 가지고 있습니까?

그러나 완벽한 솔루션은 다음 vim -privatevim +Private같습니다.

  • 나는 당신과 같은 자신의 사용자 정의 명령 행 옵션을 추가 할 수 없다고 확신한다 -private.
  • 이 오게되면 +Private내가 온라인을 찾을 수 없습니다.

3
vimrc 내부에 다음과 같이 사용자 정의 명령을 정의한 command! Private set history=0 nobackup secure ...다음을 사용하여 쉘에서 호출 할 수 있습니다 vim +'Private'. 마지막으로 언급 한 자동 명령과 관련하여 버퍼를 읽을 때 'cryptmethod'옵션 값 또는 'cm'짧은 버전 의 값이 비어 있지 않은지 테스트합니다 . 이 옵션은 Ex 명령으로 파일에 버퍼를 쓸 때 버퍼를 암호화하는 데 사용되는 암호화 방법을 제어합니다 :X. 옵션이 비어 있지 않으면 자동 명령은 다양한 옵션을 설정합니다.
saginaw

5
에 투표합니다 vim -Nu .vimrcprivate.
romainl

3
4와 1, 2 또는 3의 조합은 어떻습니까? alias vimprivate='vim -u .vimrcprivate'기타
Steve

7
또 다른 방법은 vim을 vimp와 같은 다른 이름으로 symlink 한 다음 테스트 v:progname == "vimp"하여 true 인 경우 개인 모드 설정을 실행하는 것입니다. 참조하십시오 :help v:progname.
garyjohn

@garyjohn. 당신의 솔루션은 정말 좋습니다! 매력처럼 작동 :)
Mateusz Piotrowski

답변:


10

글쎄, 약간 뒤늦게 그러나 응답 :

  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.

"비공개"모드에서 파일을 무작위로 열려면 간단한 쉘 별명을 사용하는 것이 좋습니다.

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

1

빔 문서에 따르면 ( :help -c) 단지가 10의 최대 수 있습니다 +{command}, -c {command}그리고 -S {file}빔을 시작할 때 옵션 인수는 결합, 그들은 첫 번째 파일을 읽을 _after_ 실행합니다.

--cmd {command}옵션을 사용하면 vimrc 파일을 처리하기 전에 추가로 10 개의 명령을 실행할 수 있지만 모든 설정은 vimrc에 의해 무시 될 수 있습니다.

따라서 Vim 옵션을 조기에 설정하고 환경 변수 또는 스크립팅 논리가 필요하지 않습니다. 또한 플러그인은 방해가되는 일을 할 수 있으므로로드하지 않는 것이 좋습니다.

내가 생각할 수있는 가장 안전한 호출 방법 ~/.bashrc은 간단하고 시점에 맞는 vimrcprivate 파일과 함께 별칭을 사용하는 것입니다 .

# Secure Vim
alias vimsec="vim -N -n -i NONE -u ~/.vimrcprivate"
alias gvimsec="g$(alias vimsec | sed -e "s/-u/-U/" -e "s/\(.*\)'\(.*\)'/\2/")"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.