在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);
答案 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。