ฉันจะแยกความแตกต่างระหว่าง vim และ vimdiff จากภายใน vimrc ได้อย่างไร


10

ฉันมีฟังก์ชั่นเป็นกลุ่มซึ่งจะเปิดบัฟเฟอร์ทั้งหมดเป็นแท็บ อย่างไรก็ตามหลังจากที่ฉันเพิ่มฟังก์ชั่นนี้ vimdiff ก็เปิดไฟล์ที่จะเปรียบเทียบเป็นแท็บที่แตกต่างกันและด้วยเหตุนี้จะไม่แสดงความแตกต่าง มีวิธีใดบ้างที่ฉันจะทราบได้ว่า vim หรือ vimdiff ซึ่งเรียกใช้ไฟล์ vimrc ของฉันหรือไม่

function! OpenTabs()
    let bf=len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
    if bf > 1
      exe "tab 5sball"
    endif
endfunction

โพสต์ที่เกี่ยวข้องเกี่ยวกับการใช้แท็บเป็นบัฟเฟอร์: การใช้แท็บของ Vim เช่นบัฟเฟอร์
Peter Rincker

ฉันพบคำถามนี้เพราะฉันไม่ต้องการพื้นที่ทำงานที่โหลดโดย vim-workspace เมื่อ VIm ถูกดำเนินการโดยgit difftoolแต่ในกรณีนี้let g:workspace_session_disable_on_args = 1เหมาะกับฉันดีกว่า
GünterZöchbauer

คำตอบ:


12

:help diff ครอบคลุมสิ่งนี้:

ในไฟล์. vimrc ของคุณคุณสามารถทำสิ่งพิเศษเมื่อ Vim เริ่มทำงานในโหมด diff คุณสามารถใช้โครงสร้างเช่นนี้:

   if &diff
      setup for diff mode
   else
      setup for non-diff mode
   endif

12

คุณสามารถใช้&diffตัวเลือกเช่นใน vimrc ของคุณ:

if &diff
    echo "in diff mode"
else
    echo "not in diff mode"
endif

ดู :h 'diff'


จัง! ฉันจะอัปเกรดของคุณถ้าคุณเพิ่มระดับของฉัน;)
รวย

อ่าฉันช้า 6 วินาทีในการคลิก "ส่ง"!
โหวตขึ้น

ขอบคุณสำหรับการตอบกลับอย่างรวดเร็ว! สงสัยว่ามีตัวเลือกในการระบุมุมมอง & vi ด้วยหรือไม่
Ankit Jain

@AnkitJain สำหรับมุมมองที่คุณอาจตรวจสอบว่าบัฟเฟอร์ทั้งหมดของคุณมี'readonly'ชุดตัวเลือกหรือคุณอาจviewตั้งชื่อตัวแปร vim ที่คุณจะตรวจสอบเมื่อเริ่มต้น
statox

3
@AnkitJain:h v:progname
Christian Brabandt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.