Я имею FCEDIT
набор к vim
. Если я звоню fc
команда это откроется vim
с временным файлом и содержанием того файла будет последняя выполняемая команда из истории.
Проблема состоит в том, что, даже если я выхожу без сохранения, команда все еще выполняется. Например:
$ printf "\nHelloAskubuntu\n\n"
HelloAskubuntu
$ fc # opens vim, I do :q!
printf "\nHelloAskubuntu\n\n"
HelloAskubuntu
Как я избегаю этого?
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
.
Это происходит, потому что содержание уже хранится во временном файле /tmp/bash-fc-*
. Закрытие его непосредственно, fc
выполнит ту оболочку так или иначе.
А, работающий, подход, что я мог протестировать его в Ubuntu 16.04.
, Создает команду прокси (новый редактор)
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
Набор FCEDIT
к vim2
или временно протестировать export FCEDIT=vim2
, единственная надежда состоит в том, что Вы не более быстры, чем я, для закрытия vim
, прежде чем 1 секунда передала.