有没有办法使用vim键来操纵java中的字符串?

时间:2015-08-24 22:09:28

标签: java vim

在vim中,对于字符串

"Hello, today is the first day of your life"

删除Hello,并在今天使用大写

我用

^[0df ~

在Java中,我可能需要更多代码来执行此操作。 是否有任何java库允许在vi中操作文本?

String result = vilibrary.execute("Hello, today is the first day ...", "^[0df ~", viins);

1 个答案:

答案 0 :(得分:1)

这并没有直接回答你的问题,虽然它确实提供了一个可能的hacky解决方案。

我写了一个名为qvim的小bash脚本。它基本上是vim周围的一个瘦包装器,用-调用它(以便它将stdin读入初始未命名缓冲区),然后通过-c值自动传递所有命令行参数,所以它们将作为vim命令行命令执行。然后它添加自己的-c参数,其值为wq! $QVIM_FILENAME,其中变量是临时文件,然后cat。这为vim提供了一个shell命令行界面。

这是qvim

#!/bin/bash

QVIM_FILENAME="$(mktemp /tmp/qvim-XXXXXXXXXX)";

if [[ "$QVIM_VERBOSE" == '1' ]]; then
    vim - "${@/#/-c}" -c "wq! $QVIM_FILENAME";
else
    vim - "${@/#/-c}" -c "wq! $QVIM_FILENAME" >/dev/null 2>&1;
fi;
rc=$?;

if [[ -e "$QVIM_FILENAME" ]]; then
    cat -- "$QVIM_FILENAME";
    rm -f -- "$QVIM_FILENAME";
fi;

exit $rc;

因此你可以在shell中执行此操作:

> echo 'Hello, today is the first day of your life'| qvim 'normal 0df ~';
Today is the first day of your life

理论上,您可以在Java程序的系统命令中调用它,尽管您必须小心引用输入字符串和vim命令。

正如我所说,hacky。