Откройте Vim из PHP, как Git

0

Как открыть vim из файла PHP, чтобы отредактировать какой-либо другой файл, например git, когда вы запускаете "git commit" без флага -m?

Я пробовал это решение Open Vim From PHP CLI из-php-cli, но он вызывает у меня некоторую ошибку ввода-вывода с vim:

Vim: Предупреждение: выход не на терминал Vim: Предупреждение: вход не от терминала?

есть ли другой способ сделать это? вероятно, с bash или чем-то еще?

  • 0
    Это второй подобный вопрос за два дня и та же самая основная проблема: вы хотите создать что-то, что работает как $ git commit но вы даже не смотрите на то, как это происходит.
  • 0
    @romainl Я думаю, что он хочет, это как команда редактирования в pry или \ e в psql.
Показать ещё 1 комментарий
Теги:
vim

3 ответа

0
Лучший ответ

Я смог сделать это с помощью метода proc_open с одним из решений Open Vim From PHP CLI и цикла, который постоянно проверяет, продолжает ли процесс. Закончив редактирование, он продолжает запускать скрипт.

$descriptors = array(
        array('file', '/dev/tty', 'r'),
        array('file', '/dev/tty', 'w'),
        array('file', '/dev/tty', 'w')
    );        
    $process = proc_open($_SERVER['EDITOR']. $filename, $descriptors, $pipes);
    //if(is_resource($process))
    while(true){
        if (proc_get_status($process)['running']==FALSE){
            break;
        }
    }

Это не очень элегантно, но это делает работу :)

PS: Прошу прощения за плохой английский>. <

  • 0
    Ваш английский был идеальным.
1

Vim - это интерактивный редактор. Ошибка, которую вы получаете ("Выход не к терминалу"), является точным описанием проблемы. Вы не можете контролировать Vim из PHP-скрипта.

Если вам нужно передать текст, вы должны использовать альтернативные подходы, такие как вышеупомянутый флаг -m или STDIN.

  • 0
    Есть ли другой способ открыть любой редактор терминала, выполняющий скрипт PHP / bash для редактирования какого-либо файла? файл не обязательно пустой ...
  • 0
    Вы должны загрузить весь файл в строковую переменную в PHP (с file_get_contents ), отредактировать строку и затем сохранить ее снова.
0

Итак, вы хотите выполнить скрипт bash с PHP?

Взгляни на:

shell_exec()
exec()

http://php.net/manual/de/function.shell-exec.php

http://php.net/manual/de/function.exec.php

Первый будет возвращать данные из выполненной команды, если вы сделаете cat file.txt вы получите строку, содержащую содержимое файла file.txt

Если вы используете exec, он не вернет вывод std, но вернет true/false, если данная команда была успешной.

Теперь вы можете написать простой скрипт bash, который обрабатывает текст, а затем выполняет его через PHP.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню