แยกผลลัพธ์ของคำสั่งเชลล์ไปยังตัวแปรในไฟล์. vimrc หรือไม่


22

ในไฟล์. vimrc ของฉันฉันต้องการเก็บไว้ในตัวแปรผลลัพธ์ของคำสั่งภายนอกในกรณีของฉัน:

$ echo $LANG

ดังนั้นvimrcไฟล์ของฉันจะมี:

let language = output(!echo $LANG)
if language == 'en'
   nnoremap <somekey> <ohanotherkey!>
end if

จนถึงตอนนี้ฉันไม่สามารถหาวิธีการได้ ฉันพบว่าในโหมดคำสั่ง:read !echo $LANGจะแทรกเนื้อหาที่ฉันกำลังค้นหาในไฟล์ปัจจุบันของฉัน แต่ฉันไม่รู้วิธีเขียนลงในไฟล์ vimrc

คำตอบ:


22

คุณสามารถทำได้ด้วยsystemฟังก์ชั่น:

let language = system('echo $LANG')

จุดโบนัส: ถ้าผลลัพธ์ของคุณเป็นรายการคุณสามารถใช้systemlistแทนเพื่อกลับรายการ เช่น

let files = systemlist('ls')
" ['bin', 'dev', ... ]

Ref: :h system


13

หากLANGเป็นตัวแปรสภาพแวดล้อมคุณสามารถทำได้:

let language = $LANG

หรือง่ายยิ่งขึ้น:

if $LANG == 'en'
…
endif

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