2013-12-21 65 views
1

過濾行,我有以下文件:如何從VIM使用PowerShell

firstname,lastname,email 
jane,doe,[email protected] 
drew,neil,[email protected] 
john,smith,[email protected] 

我執行1,$!sort -property @{"Expression"={$_.split(',')[1]}}

它輸出以下錯誤:

At line:1 char:49 
+ sort -property @{Expression={$_.split(',')[1]}} <C:/Users/wild/AppData/Local/Tem ... 
+             ~ 
The '<' operator is reserved for future use. 
    + CategoryInfo   : ParserError: (:) [], ParentContainsErrorRecordException 
    + FullyQualifiedErrorId : RedirectionNotSupported 

在我_vmrc

set shell=powershell\ -ExecutionPolicy\ Unrestricted\ -NoProfile\ -NoLogo\ -NonInteractive 
set shellcmdflag=-command 
set shellpipe=| 
set shellredir=> 

此外,我已經試過從here沒有結果:

if has("win32") 
    set shell=cmd.exe 
    if has("gui_running") 
    set shellcmdflag=/c\ chcp\ 65001\ &&\ powershell.exe\ -NoLogo\ -NoProfile\ -NonInteractive\ -ExecutionPolicy\ RemoteSigned 
    else 
    set shellcmdflag=/c\ powershell.exe\ -NoLogo\ -NoProfile\ -NonInteractive\ -ExecutionPolicy\ RemoteSigned 
    endif 
    set shellpipe=| 
    set shellredir=> 
endif 

如何使用Sort-Object cmdlet和VIM?

+0

你應該先說你有什麼和你想要什麼,這樣我們才能理解'vim'的必要性。頂部的執行命令沒有意義 –

+0

我目前沒有具體的任務來解決。我想了解如何一起使用vim + powershell。通過外部程序過濾線條的能力看起來很有趣。它不起作用令人失望。對'vim'的需求超出了這個範圍。 – Artyom

+0

所以這仍然是事物的狀態:在使用Vim時,不能用PowerShell過濾行? – Alan

回答

0

單純從PS用戶的角度來看:這種方法的問題是事實,PowerShell中(如錯誤消息,試圖解釋)沒有<操作。這是少數保留但尚未實施(可能由於需求相對較低)之一。

除非有辦法迫使vim的使用與管道元件「通常」的PowerShell語法到Sort-Object,你不會走遠。

2

我碰到了同樣的問題。從理論上講,你應該能夠通過在Vim中設置noshelltemp而是使用輸入重定向操作符「<」的管道,但它不是當前在Windows系統上實現:

'shelltemp' 'stmp' boolean (Vi default off, Vim default on)

global

{not in Vi}

When on, use temp files for shell commands. When off use a pipe. When using a pipe is not possible temp files are used anyway. Currently a pipe is only supported on Unix.

所以,看起來我們被卡住現在...