我发现AWK中的以下命令在Vim中很有用
:'<,'>!awk '{ print $2 }'
Python在Vim中也很有用。 但是,我没有在Python中为Vim的可视模式找到一个有用的命令。
您在Vim中使用哪些Python命令?
答案 0 :(得分:4)
很难在Python中制作有用的单行过滤器。您需要导入sys
才能获得stdin
,并且您已经开始推送它了。这并不是说Python有什么坏处。我的感觉是Python针对多行脚本进行了优化,而单行代码表现良好的语言(awk,sed,bash,我可以命名其他语言,但可能会被点燃......)往往效果不佳(恕我直言)在编写任何重要复杂的脚本时。
我非常喜欢Python编写可以从Vim调用的多行脚本。例如,我有一个Python脚本,当给出Java构造函数的签名时,就像这样:
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;
我通过突出显示签名然后键入!jhelper.py
来从Vim中使用它。
我还习惯使用我编写的Python脚本来反转行中的字符,并在发现rev
和tac
之前反转文件的行。
答案 1 :(得分:4)