Trích xuất kết quả của lệnh shell vào một biến trong tệp .vimrc?


22

Trong tệp .vimrc của tôi, tôi muốn lưu trữ trong một biến kết quả của một lệnh bên ngoài, trong trường hợp của tôi:

$ echo $LANG

Vì vậy, vimrctập tin của tôi sẽ có:

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

Cho đến nay tôi không thể tìm thấy làm thế nào để làm điều đó. Tôi đã thấy rằng trong chế độ lệnh, :read !echo $LANGsẽ chèn vào tệp hiện tại của tôi nội dung mà tôi đang tìm kiếm. Nhưng tôi không biết làm thế nào để ghi nó vào một tập tin vimrc.

Câu trả lời:


22

Bạn có thể làm điều này với systemchức năng:

let language = system('echo $LANG')

Điểm thưởng: nếu đầu ra của bạn là một danh sách, bạn có thể sử dụng systemlistthay thế để lấy lại danh sách. ví dụ

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

tham chiếu: :h system


13

Nếu LANGlà một biến môi trường, bạn chỉ có thể làm:

let language = $LANG

Hoặc, thậm chí đơn giản hơn:

if $LANG == 'en'
…
endif

Điều này không trả lời chính xác câu hỏi quá chung chung của tôi ... nhưng thậm chí còn tốt hơn! Cảm ơn.
Feffe
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.