Внешний редактор в Libre-Office

1

В Libre-Office можно ли редактировать выделение с помощью внешнего редактора, такого как Vim или Emacs?

Чтобы написать это, я вызываю Vim из Qutebrowser, т.е. отмечаю окно и нажимаю ctrl + e. Это открывает экземпляр Vim с тем, что было в окне. Когда я закрываю буфер, его новое содержимое помещается в окно в Qutebrowser. Нечто подобное в Libre-Office поможет.

Я спрашиваю не потому, что хочу использовать Libre-Office, а потому, что мне нужно сотрудничать с кем-то, кто использует Word.

PS. В идеале курсив должен быть преобразован во что-то, что может быть отредактировано в виде обычного текста, например \ it {this}.

Toothrot
источник
Скопировать и вставить?
Скотт
@ Скотт, да, но это не идеально.
Toothrot
@ fixer1234, это что или почему вам неясно? ты пробовал vim?
Toothrot
Как человек, который использует Vim и LO каждый день, это звучит как хорошая идея для меня.
Джим К
@ fixer1234: Toothrot изменил вопрос через несколько минут после ответа на мой комментарий. ISTM этот пересмотр объясняет, что хочет ОП. Для сравнения, копирование и вставка были бы громоздкими и подвержены ошибкам.
Скотт

Ответы:

1

Используйте следующий макрос 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,
Джим К
источник
Спасибо, но для меня не очевидно, как действовать после нажатия / настройки /.
Toothrot
@ Tootrot: см. Отредактированный ответ.
Джим К
У меня нет ничего в macros / user / standard, кроме module1, поэтому инструкция по связыванию ключа не работает.
Toothrot
Вы видели ссылку с надписью "Python macro" выше? Это работает, но вы должны следовать инструкциям. Если вы уже поместили файл .py в правильное место, но он не отображается в разделе «Мои макросы», убедитесь, что установлен python-uno. См. Christopher5106.github.io/office/2015/12/06/… учебник.
Джим К
Пытаюсь, но пока не могу найти каталоги. У меня нет каталога в ~, который называется .openoffice что-то или .libreoffice что-то.
Toothrot