Trong tập lệnh Vim, không có cách nào được thiết kế để nhận danh sách hiện tại là các biến môi trường được xác định. Tuy nhiên, có thể khai thác Vim tính năng hoàn thành dòng lệnh.
Xem xét các hoàn thành có thể có cho lệnh chưa hoàn thành sau.
:echo $
Nó không phải là khó khăn để thấy rằng, theo cú pháp kịch bản Vim, tất cả các hoàn là tên của các biến môi trường. Nhấn wildchar
chính (Tab, theo mặc định) hoặc Ctrl +D sẽ hiển thị tất cả trong số họ.
Để nhận danh sách hoàn thành này từ bên trong tập lệnh, chúng tôi cần khắc phục tính chất tương tác của nó. Một mẹo có thể xảy ra mà chúng tôi xem xét ở đây là thực hiện , dựa trên sự kết hợp các tính năng. Đầu tiên là Ctrl + A lệnh. Trong chế độ Dòng lệnh, phím tắt này kích hoạt chèn mọi hoàn thành có sẵn ở phía trước con trỏ. Những lần hoàn thành này được liệt kê theo thứ tự bảng chữ cái và được phân tách bằng dấu cách.
Nếu chúng tôi làm cho Vim in những hoàn thành được chèn ngay vào dòng lệnh, chúng tôi có thể dễ dàng chụp chúng bằng cách chuyển hướng đầu ra lệnh bằng lệnh :redir
. Nhưng tất cả chúng ta cần phải đạt được điều đó tác dụng phụ là trích dẫn các văn bản chèn với Ctrl +Một: Trích dẫn làm cho phần còn lại của chúng tôi :echo
lệnh một chuỗi chữ sẽ được chỉ in ra!
:echo 'NAME1 NAME2 NAME3'
NAME1 NAME2 NAME3
Để chỉnh sửa một dòng lệnh theo cách này, người dùng có thể gõ :ec
(một bí danh cho :echo
) sau đó $
, nhấn Ctrl + Một, gõ '
, nhảy đến đầu của lệnh với Ctrl + B, di chuyển con trỏ qua ký hiệu đô la bằng cách nhấn ⇾ (phím mũi tên phải) hai lần, xóa số $
và chèn '
thay thế. Trình tự nhấn phím tương tự có thể được sao chép không tương tác bằng cách sử dụng lệnh :normal
.
Đưa tất cả các phần câu đố này lại với nhau, chúng tôi có được chức năng sau.
function! Env()
redir => s
sil! exe "norm!:ec$\<c-a>'\<c-b>\<right>\<right>\<del>'\<cr>"
redir END
return split(s)
endfunction
Đối với phương pháp này để làm việc, Vim sẽ được biên dịch với các tính năng +cmdline_compl
.
http://vim.wikia.com/wiki/Displaying_the_current_Vim_environment có thể được giúp đỡ – epsilonhalbe
Vì vậy, bạn đang tìm kiếm một danh sách đầy đủ của env vars thừa kế vim, hoặc là bạn đang tìm kiếm tất cả các vv env Vim tạo ra trên riêng của mình (của chính nó)? –
Theo như tôi biết, nó không thể làm điều đó bằng Vim chỉ có nghĩa là. Tuy nhiên, trong các hệ thống giống Unix, người dùng chỉ có thể sử dụng ':! Env'. –