Для файлов в определенной папке я бы хотел, чтобы vim никогда не трогал «измененную» метку времени.
В качестве фона я использую Bloxsom для ведения блога, который использует текстовые файлы в ~/bloxsom
качестве источника всех статей. Дата статьи (и, следовательно, порядок появления) основана на дате изменения текстового файла. Я не хочу, чтобы статья всплывала, как будто она новая, когда я просто исправляю опечатку. (Я делаю много
из них ...: D)
Пока что vim меняет метку времени, а оригинальная метка теряется навсегда. Это нормально, и я хочу сохранить это для большинства файлов в системе. Но я не хочу этого для файлов блога - я всегда могу touch
файл, если мне нужно.
Любые идеи о том, как настроить Vim в этом поведении?
vim
timestamps
Алоис Махдал
источник
источник
Ответы:
Я не думаю, что у vim есть эта особенность. Один из вариантов - изменить копию и установить временную метку соответствующим образом, например:
Или даже лучше:
источник
Если вам нужно повеселиться:
Замените путь на ваш фактический путь к файлу
источник
Я написал Perl-скрипт для этого.
Это обертка вокруг vim, сохраненная
~/bin/vim-nomtime.pl
и введенная в использование черезalias vim='~/bin/vim-nomtime.pl'
мой .bashrc.Некоторые хорошие функции:
поддерживает несколько имен файлов
поддерживает несколько "просмотренных" папок
поддерживает символическую директорию
может быть улучшен с другими критериями
большинство из которых, вероятно, также может быть достигнуто с чистой версией vim. Недостатки этого решения по сравнению с моим желаемым решением для чистой среды:
восстанавливает только штамп после того, как vim завершил работу, поэтому, если я буду долго редактировать и сохранять, файл будет всплывающим как новый, пока я не выйду из vim
он поддерживает несколько файлов в командной строке, но довольно наивно - он только проверяет,
@ARGV
является ли объект файлом. Это, вероятно, не будет работать с подстановочными знаками (напримерvim note-*.txt
) или другими забавными вещамиэто не доказательство аварии, вероятно, даже не доказательство HUP (это может быть сделано)
... ну, это обертка. (Я имею в виду, если бы мы решили все с помощью обертки, сколько оберток у нас было бы до того, как случилось что-то плохое?)
источник
Этот короткий сценарий сохранит измененное время, если какой-либо родительский каталог файла содержит
.nomtime
файл:источник
Попробуйте эту
bash
функцию (основываясь на ответе Shâu Shắc )Теперь мы можем отредактировать файл и сохранить измененное время, используя это
источник
vi
только один файл за раз; это не сработаетvi file1 file2
. (3) Само собой разумеется, что, если пользователь переключится на другой файл:e
, он не будет обработан.Существует возможность скопировать метку времени из другого файла.
Пример:
источник
На этой веб-странице я нашел отличное решение , которое создает функцию vim для сохранения текущего файла при сохранении существующего времени модификации и связывает эту функцию с F4функциональной клавишей:
Однако я обнаружил, что исходная функция содержит небольшую ошибку, которая выдает следующее предупреждение, если F4дважды используется один и тот же файл, потому что vim запутывается при изменении времени модификации:
К счастью, это легко исправить: я добавил команду «edit» в исходную функцию, чтобы перезагрузить файл после восстановления временной метки, чтобы vim знал, какое время модификации ожидать от файла.
Вот модифицированная функция vim с этим исправлением ошибки, которую можно добавить к
~/.vimrc
:Примечание: Эта функция зависит от GNU версии
date
,stat
иtouch
.источник
Используя некоторые из концепций, описанных выше, вот очень быстрый и грязный однострочный псевдоним для CSH, который делает команду «edit» доступной для этой цели:
Вы можете легко использовать переменную окружения $ VISUAL или $ EDITOR вместо "vim". Таким образом, вы можете выполнить следующую команду, чтобы изменить редакторы по умолчанию
Теперь сам псевдоним не нужно переопределять, чтобы приспособить его к различным редакторам, что делает его несколько более переносимым. Если вы используете оболочку, отличную от CSH или TCSH, конечно, приведенные выше примеры можно соответствующим образом адаптировать.
источник