Cách đơn giản nhất để bắt đầu Vim ở chế độ riêng tư


19

Tôi muốn có thể dễ dàng khởi động Vim ở chế độ riêng tư. Hãy xác định chế độ riêng tư là chế độ sử dụng nhóm lệnh này:

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

Hãy cho tôi biết nếu bạn có thể nghĩ ra bất kỳ lệnh bổ sung nào phù hợp cho chế độ riêng tư.

Vấn đề là tôi không thể nghĩ ra bất kỳ cách ngắn gọn và dễ dàng nào để bắt đầu Vim với thiết lập này.

Dưới đây là một số ý tưởng tôi đã đưa ra:

  1. Tải .vimrcprivate thay vì .vimrc

    Bạn chỉ có thể đặt tất cả các lệnh cần thiết vào .vimrcprivate và khởi động Vim như thế này:

    vim -u .vimrcprivate
    
  2. Xác định và gọi một Private()hàm

    Một ý tưởng khác thêm mã như thế này vào .vimrc của bạn:

    function Private()
        " set of commands here
    endfunction
    

    và sau đó bạn có thể khởi động Vim ở chế độ riêng tư như thế này:

     vim -c 'call Private()'
    
  3. Sử dụng một biến để kích hoạt thiết lập các lệnh của bạn

    Nó khá giống với giải pháp thứ hai. Chỉ cần thêm

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

    vào .vimrc của bạn và sau đó bắt đầu sử dụng Vim

    vim -c 'let privatemode=1'
    

    cái nào không thông minh cũng không ngắn.

  4. Thêm một bí danh vào .bashrc của bạn (hoặc cho bất kỳ tệp nào khác. * RC mà shell của bạn đang sử dụng)

    Ví dụ:

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

    đó là khủng khiếp Tôi không thích nó.

  5. Sử dụng một biến môi trường

    Chỉ cần chạy VIM_PRIVATE=1 vimvà thêm

    if $VIM_PRIVATE
        " set of commands here
    endif
    

    để .vimrc của bạn.

  6. Một số phép thuật (từ một bình luận của Carpetsmoker trong chủ đề này )

    Carpetsmoker nói trong bình luận này rằng

    Tôi không khuyên bạn nên sử dụng một tệp vimrc riêng, vì lý do đơn giản> nó rất dễ quên. Một cái gì đó giống như autocmd này: au BufRead * if &cryptmethod != "" | setlocal nobackup noundofile ... | endifnên làm điều kỳ diệu cho bạn, và không thể quên được.

    Tuy nhiên tôi không biết ma thuật này hoạt động như thế nào .


Bạn có ý tưởng nào không?

Giải pháp hoàn hảo sẽ là vim -privatehoặc vim +Privatetuy nhiên:

  • Tôi khá chắc chắn rằng bạn không thể thêm bạn tùy chọn dòng lệnh tùy chỉnh như thế nào -private.
  • khi nói đến +Privatetôi không thể tìm thấy nó trực tuyến.

3
Có lẽ bạn có thể định nghĩa một lệnh tùy chỉnh bên trong vimrc của mình, như thế này : command! Private set history=0 nobackup secure ..., và sau đó gọi nó từ shell với vim +'Private'. Liên quan đến tự động cuối cùng mà bạn đã đề cập, khi bộ đệm được đọc, nó sẽ kiểm tra xem giá trị của 'cryptmethod'tùy chọn, hoặc 'cm'cho phiên bản ngắn, có trống không. Tùy chọn này kiểm soát phương thức mã hóa được sử dụng để mã hóa bộ đệm khi được ghi vào tệp bằng lệnh Ex :X. Nếu tùy chọn không trống, thì autocommand sẽ thiết lập các tùy chọn khác nhau.
saginaw

5
Tôi bỏ phiếu cho vim -Nu .vimrcprivate.
romainl

3
Làm thế nào về sự kết hợp của 4 và 1,2 hoặc 3? alias vimprivate='vim -u .vimrcprivate'v.v.
Steve

7
Một phương pháp khác là symlink vim sang một tên khác như vimp, sau đó kiểm tra v:progname == "vimp"và nếu đúng, thực hiện cài đặt chế độ riêng tư của bạn. Xem :help v:progname.
garyjohn

@ tổngjohn. Giải pháp của bạn thực sự tốt đẹp! Hoạt động như một bùa mê :)
Mateusz Piotrowski

Câu trả lời:


10

Vâng, một chút muộn màng nhưng để đáp ứng:

  1. Một số phép thuật (từ một bình luận của Carpetsmoker trong chủ đề này)

Ý tưởng chung của tôi là bạn luôn muốn bắt đầu "chế độ riêng tư" nếu bạn đang sử dụng một tệp được mã hóa, do đó, chế độ tự động này sẽ làm điều đó cho bạn:

au BufRead * if &key!= ""
    \ | setlocal history=0 nobackup nomodeline noshelltemp noswapfile noundofile nowritebackup secure viminfo=""
    \ | endif

Về cơ bản, mỗi khi một tệp được đọc từ đĩa, nó sẽ kiểm tra xem keycài đặt có được đặt không (đây là nơi lưu trữ mật khẩu của bạn) và nếu có, nó sẽ đặt cho bạn các cài đặt. Xem :help autocommandđể biết tổng quan chung về cách thức hoạt động của autocommands.

Ưu điểm của việc này là không thể quên sử dụng nó.

Tất nhiên, nó yêu cầu các tập tin được mã hóa. Nếu không, không có gì được thực hiện. Nhưng không mất tất cả, chúng ta có thể sử dụng tên tệp để chỉ ra một tệp là riêng tư, ví dụ:

au BufRead *.private setlocal ...

Sẽ đánh dấu tất cả các tập tin kết thúc .privatenhư vậy.

Nếu bạn muốn mở ngẫu nhiên các tệp trong chế độ "riêng tư", thì tôi khuyên bạn nên sử dụng bí danh shell đơn giản, ví dụ:

alias vimprivate='vim -c "source ~/.vim/private"

~/.vim/privatesẽ chứa:

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

Tại sao không -u? Chà, theo cách này bạn có cài đặt của riêng mình cài đặt "riêng tư". Bạn cũng có thể kết hợp cả hai với:

au BufRead * if &key!= "" | source ~/.vim/private | endif

1

Theo tài liệu Vim ( :help -c) chỉ có thể có tối đa là 10 +{command}, -c {command}-S {file}đối số tùy chọn kết hợp khi bắt đầu Vim, và họ thực hiện _after_ tập tin đầu tiên được đọc.

Các --cmd {command}tùy chọn cho phép thêm 10 lệnh được thực thi trước khi xử lý bất kỳ tập tin vimrc, nhưng nhớ rằng bất kỳ cài đặt có thể được ghi đè bởi vimrc.

Do đó, tôi thích đặt các tùy chọn Vim sớm hơn và tránh mọi nhu cầu về biến môi trường hoặc logic kịch bản. Ngoài ra, các plugin có thể đang làm những thứ tinh ranh để tốt hơn là không tải bất kỳ.

Phương thức gọi an toàn nhất mà tôi có thể nghĩ đến là sử dụng các bí danh ~/.bashrcvới một tệp vimrcprivate đơn giản và chính xác:

# Secure Vim
alias vimsec="vim -N -n -i NONE -u ~/.vimrcprivate"
alias gvimsec="g$(alias vimsec | sed -e "s/-u/-U/" -e "s/\(.*\)'\(.*\)'/\2/")"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.