วิธีที่ง่ายที่สุดในการเริ่ม Vim ในโหมดส่วนตัว


19

ฉันต้องการเริ่ม Vim ในโหมดส่วนตัวได้อย่างง่ายดาย ลองกำหนดโหมดส่วนตัวเป็นโหมดที่ใช้ชุดคำสั่งนี้:

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

แจ้งให้เราทราบหากคุณสามารถนึกถึงคำสั่งเพิ่มเติมที่เหมาะสมกับโหมดส่วนตัว

ประเด็นคือฉันไม่สามารถคิดถึงวิธีที่สั้นและง่ายในการเริ่ม Vim ด้วยการตั้งค่านี้

นี่คือแนวคิดที่ฉันคิดไว้:

  1. โหลด. vimrcprivate แทน. vimrc

    คุณสามารถใส่คำสั่งที่จำเป็นทั้งหมดลงใน. vrrcprivate แล้วเริ่ม 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 -privateหรือvim +Privateอย่างไร:

  • -privateฉันกำลังค่อนข้างแน่ใจว่าคุณไม่สามารถเพิ่มตัวเลือกบรรทัดคำสั่งที่กำหนดเองของตัวเองเช่น
  • เมื่อพูดถึง+Privateฉันไม่สามารถหาได้ทางออนไลน์

3
บางทีคุณอาจจะกำหนดคำสั่งที่กำหนดเองภายใน vimrc ของคุณเช่นนี้แล้วโทรได้จากเปลือกด้วยcommand! Private set history=0 nobackup secure ... vim +'Private'เกี่ยวกับคำสั่งอัตโนมัติล่าสุดและคุณพูดถึงเมื่อบัฟเฟอร์ถูกอ่านมันจะทดสอบว่าค่าของ'cryptmethod'ตัวเลือกหรือ'cm'สำหรับรุ่นสั้นไม่ว่างเปล่า :Xตัวเลือกนี้จะควบคุมวิธีการเข้ารหัสที่ใช้ในการเข้ารหัสบัฟเฟอร์เมื่อมันเขียนไปยังไฟล์ที่มีคำสั่ง Ex หากตัวเลือกไม่ว่างเปล่าระบบเติมข้อความอัตโนมัติจะตั้งค่าตัวเลือกต่าง ๆ
saginaw

5
vim -Nu .vimrcprivateการลงคะแนนเสียงสำหรับฉัน
romainl

3
วิธีการเกี่ยวกับการรวมกันของ 4 และ 1,2 หรือ 3? alias vimprivate='vim -u .vimrcprivate'ฯลฯ
Steve

7
อีกวิธีหนึ่งคือ symlink เป็นกลุ่มไปยังชื่ออื่นเช่น vimp แล้วทดสอบv:progname == "vimp"และหากเป็นจริงให้ดำเนินการตั้งค่าโหมดส่วนตัวของคุณ :help v:prognameดู
garyjohn

@garyjohn ทางออกของคุณดีจริงๆ! ทำงานเหมือนมีมนต์เสน่ห์ :)
Mateusz Piotrowski

คำตอบ:


10

ดีล่าช้าเล็กน้อย แต่เพื่อตอบสนองต่อ:

  1. เวทมนตร์บางอย่าง (จากความคิดเห็นโดย Carpetsmoker ในหัวข้อนี้)

แนวคิดทั่วไปของฉันคือคุณต้องการเริ่ม "โหมดส่วนตัว" ถ้าคุณใช้ไฟล์ที่เข้ารหัสดังนั้น autocommand นี้จะทำเพื่อคุณ:

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

โดยทั่วไปทุกครั้งที่ไฟล์ถูกอ่านจากดิสก์จะตรวจสอบว่ามีkeyการตั้งค่าไว้หรือไม่ (ซึ่งเป็นที่เก็บข้อความรหัสผ่านของคุณ) และหากเป็นเช่นนั้น ดู:help autocommandภาพรวมทั่วไปเกี่ยวกับการทำงานของ AutoCommands

ข้อดีของมันคือไม่สามารถลืมได้

แน่นอนว่าต้องมีการเข้ารหัสไฟล์ หากไม่เป็นเช่นนั้นจะไม่มีการดำเนินการใด ๆ แต่ไม่สูญหายทั้งหมดเราสามารถใช้ชื่อไฟล์เพื่อระบุว่าไฟล์เป็นแบบส่วนตัวตัวอย่างเช่น:

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

ตามเอกสาร Vim ( :help -c) สามารถมีได้สูงสุด 10 รายการ+{command}เท่านั้น-c {command}และ-S {file}อาร์กิวเมนต์ตัวเลือกจะรวมกันเมื่อเริ่มต้น Vim และพวกเขาจะเรียกใช้ _after_ ในไฟล์แรกที่อ่าน

--cmd {command}ตัวเลือกที่ช่วยให้เพิ่มอีก 10 คำสั่งที่จะดำเนินการก่อนที่จะประมวลผลไฟล์ vimrc ใด ๆ แต่จำไว้ว่าการตั้งค่าใด ๆ สามารถแทนที่โดย 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.