Python命令是否适合Vim的可视模式?

时间:2009-06-30 16:19:31

标签: python vim

我发现AWK中的以下命令在Vim中很有用

:'<,'>!awk '{ print $2 }'

Python在Vim中也很有用。 但是,我没有在Python中为Vim的可视模式找到一个有用的命令。

您在Vim中使用哪些Python命令

2 个答案:

答案 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脚本来反转行中的字符,并在发现revtac之前反转文件的行。

答案 1 :(得分:4)

当用于编码vim“宏”时,Python对vim最有用(你需要一个用+python编译的vim,但许多预构建的都是这样的)。 Here是一个关于你可以做的一些很好的演示文稿(很多例子和片段!),而here是vim自己关于这个特征的参考文档。