Как предотвратить выполнение команды, отредактированное с ФК

Я имею FCEDIT набор к vim. Если я звоню fc команда это откроется vim с временным файлом и содержанием того файла будет последняя выполняемая команда из истории.

Проблема состоит в том, что, даже если я выхожу без сохранения, команда все еще выполняется. Например:

$ printf "\nHelloAskubuntu\n\n"

HelloAskubuntu

$ fc # opens vim, I do :q!
printf "\nHelloAskubuntu\n\n"

HelloAskubuntu

Как я избегаю этого?

3
задан 19 July 2016 в 03:55

2 ответа

fc не выполнит команду, если команда редактора не выходила успешно. В Vim существует команда для принуждения этого : :cq :

                                                        :cq :cquit
:cq[uit][!]             Quit Vim with an error code, so that the compiler
                        will not compile the same file again.
                        WARNING: All changes in files are lost!  Also when the
                        [!] is not used.  It works like ":qall!" :qall,
                        except that Vim returns a non-zero exit code.

Так, когда Вы не испытываете желание выполнять команду, использование :cq для выхода вместо :q!. Могло бы быть возможно заставить Vim сделать это, если бы Вы не вносили изменений, но это, вероятно, будет более раздражающим для взятий за работу надежно, чем просто использование :cq.

1
ответ дан 1 December 2019 в 17:32

Это происходит, потому что содержание уже хранится во временном файле /tmp/bash-fc-*. Закрытие его непосредственно, fc выполнит ту оболочку так или иначе.

А, работающий, подход, что я мог протестировать его в Ubuntu 16.04.

  1. , Создает команду прокси (новый редактор)

    sudo vim /usr/local/bin/vim2
    

    Делают, он открыть тот файл в vim затем освобождает его на диске. Таким образом, содержание находится только в vim, если Вы не сохраните его, [то 117] будет работать, ничто

    #!/bin/sh
    
    sh -c "sleep 1; echo -n ''>$1" &
    vim $1
    

    Не Исправляет разрешение

    sudo chmod +x /usr/local/bin/vim2
    
  2. Набор FCEDIT к vim2 или временно протестировать export FCEDIT=vim2

, единственная надежда состоит в том, что Вы не более быстры, чем я, для закрытия vim, прежде чем 1 секунда передала.

0
ответ дан 1 December 2019 в 17:32

Другие вопросы по тегам:

Похожие вопросы: