Tôi đang sử dụng gvim trên Windows.Vim với Powershell
Trong _vimrc của tôi, tôi đã thêm:
set shell=powershell.exe
set shellcmdflag=-c
set shellpipe=>
set shellredir=>
function! Test()
echo system("dir -name")
endfunction
command! -nargs=0 Test :call Test()
Nếu tôi thực hiện chức năng này (: Test) Tôi thấy các ký tự vô nghĩa (ký tự không phải số/thư ASCII).
Nếu tôi sử dụng cmd làm trình bao, nó hoạt động (không có tên), do đó, vấn đề dường như là nhận được kết xuất từ powershell vào vim.
Điều thú vị là, này hoạt động tuyệt vời:
:!dir -name
Như thực hiện điều này:
:r !dir -name
UPDATE: hành vi xác nhận đề cập bởi David
Nếu bạn thực hiện các lệnh bộ nêu trên trong _vimrc,: Kiểm tra kết quả đầu ra vô nghĩa. Tuy nhiên, nếu bạn thực hiện chúng trực tiếp trong vim thay vì trong _vimrc,: Kiểm tra hoạt động như mong đợi.
Ngoài ra, tôi đã cố gắng sử dụng iconv trong trường hợp nó là một vấn đề mã hóa:
:echo iconv(system("dir -name"), "unicode", &enc)
Nhưng điều này đã không thực hiện bất kỳ sự khác biệt. Tôi có thể sử dụng các loại mã hóa sai mặc dù.
Bất kỳ ai biết cách thực hiện công việc này?
Tôi chỉ nghĩ rằng nó sẽ rất tuyệt. Hãy tưởng tượng sức mạnh/tính linh hoạt! –
Có thể đó là sự cố mã hóa không? Powershell sử dụng Unicode nếu nó cho rằng đích là một tập tin. Hãy thử ASCII mã hóa như là một chuyển đổi để powershell. – nickd
Bất kỳ ý tưởng làm thế nào tôi có thể vượt qua chuyển đổi đó thông qua Vim? –