2009-06-30 73 views

回答

4

在Python中很難製作有用的單線過濾器。您需要導入sys才能獲得stdin,並且您已經開始推動它。這並不是說Python的壞處。我的感覺是,Python對多線腳本進行了優化,而在單線程中表現良好的語言(awk,sed,bash,我可以命名其他語言,但很可能會被燒焦......)的工作效果不佳(恕我直言)當編寫任何重大複雜的腳本時。

我真的很喜歡Python編寫可以從Vim調用的多行腳本。例如,我有一個會,當一個Java構造賦予了簽名一個Python腳本,像這樣:

Foo(String name, int size) { 

會放出大量的是進入創建值類的樣板:

private final String name; 
private final int size; 

public String getName() { 
    return name; 
} 

public int getSize() { 
    return size; 
} 

@Override 
public boolean equals(Object that) { 
    return this == that 
     || (that instanceof Foo && equals((Foo) that)); 
} 

public boolean equals(Foo that) { 
    return Objects.equal(getName(), that.getName()) 
     && this.getSize() == that.getSize(); 
} 

@Override 
public int hashCode() { 
    return Objects.hashCode(
     getName(), 
     getSize()); 
} 

Foo(String name, int size) { 
    this.name = Preconditions.checkNotNull(name); 
    this.size = size; 

我在Vim中使用這個,突出顯示簽名,然後輸入!jhelper.py

我也曾經使用過Python腳本,我寫了這些腳本來翻轉行中的字符,並在找到關於revtac的文件行之前將其翻轉。

4

當vim用於編寫vim「宏」(你需要一個編譯爲+python的vim,但許多預構建的編譯器以這種方式來編譯)時,Python對vim最有用。 Here是關於您可以使用的一些內容(大量示例和片段!)的不錯演示,並且here是vim自己的關於此功能的參考文檔。

+0

@謝謝你的鏈接! --- MJD表示只有Lisp可以在http://lists.warhead.org.uk/pipermail/iwe/2005-July/000130.html上完成源代碼生成。 --- @Alex:Vim或Lisp和Vim哪個更有用? – 2009-06-30 20:17:58