Используйте следующий макрос Python . Перейдите в Инструменты -> Настроить, чтобы запустить его при нажатии клавиши.
import os
import tempfile
import uno
def edit_with_vim():
doc = XSCRIPTCONTEXT.getDocument()
oVC = doc.getCurrentController().getViewCursor()
data = oVC.getString()
encoded_data = data.encode("utf8")
fileTemp = tempfile.NamedTemporaryFile(delete = False)
fileTemp.write(encoded_data)
fileTemp.close()
os.system('gvim -c "set encoding=utf8" %s' % (fileTemp.name))
g_exportedScripts = edit_with_vim,
РЕДАКТИРОВАТЬ :
После просмотра ссылки выше см. Https://forum.openoffice.org/en/forum/viewtopic.php?f=74&t=12882 учебник по настройке ключевой команды для запуска макроса.
РЕДАКТИРОВАТЬ 2 :
Этот код отправляет изменения обратно в Writer.
import io
import os
from subprocess import call
import sys
import tempfile
import uno
def edit_with_vim():
doc = XSCRIPTCONTEXT.getDocument()
oVC = doc.getCurrentController().getViewCursor()
textstring = oVC.getString()
text_bytes = textstring.encode("utf8")
tf = tempfile.NamedTemporaryFile(delete = False)
tempfilename = tf.name
tf.write(text_bytes)
tf.close()
if os.name == 'nt':
GVIM = "C:/Windows/gvim.bat"
else:
GVIM = "/usr/bin/gvim"
call([
GVIM, "-f",
"-c", '"set encoding=utf8"',
tempfilename])
with io.open(tempfilename, 'r+b') as fh:
fh.seek(0)
edited_bytes = fh.read()
os.unlink(tempfilename)
edited_string = edited_bytes.decode("utf8")
edited_string = edited_string.strip()
oVC.setString(edited_string)
g_exportedScripts = edit_with_vim,