ฉันจะแยกแยะระบบปฏิบัติการปัจจุบันใน. vimrc ของฉันได้อย่างไร


20

ฉันใช้ Vim บนทั้ง OS X และ Windows ที่มีการกำหนดค่าเกือบเหมือนกัน

ฉันต้องการใช้.vimrcระบบปฏิบัติการทั้งสองแบบเดียวกันแต่มีสองสิ่งที่ฉันต้องกำหนดค่าแตกต่างกัน

สิ่งที่ฉันต้องการเพิ่มลงใน.vimrcไฟล์ของฉันคือ:

:if <windows>
  "some windows-specific settings here
:elseif <os x>
  "some os x-specific settings here
:endif

แต่ผมไม่ทราบว่าจะใช้สำหรับการและ<windows><os x>

เป็นไปได้ไหม

คำตอบ:


30

NB แม้ว่าคำตอบก่อนหน้านี้ทั้งสองให้ข้อมูลฉันเพียงพอที่จะคิดออกว่าจะแก้ปัญหาได้อย่างไร (และรับ upvotes จากฉัน) แต่ก็ไม่ได้ให้คำตอบทั้งหมด เพื่อให้ผู้อื่นที่มีคำถามเดียวกันไม่ต้องทำวิจัยฉันเพิ่มคำตอบของตัวเอง อย่างไรก็ตามหาก @googletorp หรือ @Azz แก้ไขคำตอบของพวกเขาเพื่อรวมข้อมูลนี้ฉันจะลบคำตอบและยอมรับคำตอบของพวกเขา

การส่งออกไปยัง:h feature-listแสดงให้เห็นว่าคุณควรจะสามารถที่จะใช้has("win32")และhas("macunix")แต่หลังไม่ทำงานในรุ่นที่เป็นกลุ่มที่รวมอยู่ใน OS X ได้ (มันไม่แต่การทำงานใน MacVim.)

นี่คือสิ่งที่ฉันใช้:

if has("win32")
  "Windows options here
else
  if has("unix")
    let s:uname = system("uname")
    if s:uname == "Darwin\n"
      "Mac options here
    endif
  endif
endif

โปรดทราบว่าใช้has("win32")งานได้กับฉันแม้กระทั่ง 64 Vim บน Windows 64 บิต

คุณสามารถใช้การทดสอบที่คล้ายกันของunameภายในif has("unix")บล็อคเพื่อแยกความแตกต่างของ Unix เพียงแค่เรียกใช้unameหรือuname -aจากบรรทัดคำสั่งเพื่อดูสิ่งที่คุณต้องการเปรียบเทียบs:unameด้วย ดูเพิ่มเติม:h matchstr()หากคุณต้องการเปรียบเทียบเพียงบางส่วนของunameผลลัพธ์


1
สำหรับบันทึก: ในกลุ่มจาก MSYS2 มี ("unix") คือ 1, มี ("win32") คือ 0 และมี ("win32unix") คือ 1 ดังนั้นใช้ has ("win32unix") เพื่อแยกแยะ
user31389

4

คุณสามารถดูที่นี่

โดยทั่วไปคุณสามารถใช้อย่างใดอย่างหนึ่งhas(), system():

let os = substitute(system('uname'), "\n", "", "")
if os == "SunOS"
  ..
endif  

2

นี่ดูเหมือนจะเป็นสิ่งที่คุณหลังจากฉันไม่เข้าใจมันดังนั้นฉันจะเชื่อมโยงคุณ

/programming/2842078/how-do-i-detect-os-x-in-my-vimrc-file-so-certain-configurations-will-only-apply


แปลก. ดูเหมือนว่าจะคัดลอกมาจากstackoverflow.com/questions/2842078
อุดม

1
@Rich: ข้อมูล SU ทั้งหมดได้รับอนุญาตภายใต้ Creative Commons Attribution ShareAlike ซึ่งดูเหมือนว่าพวกเขาจะปฏิบัติตาม
Daniel Beck

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