При редактировании исходного кода с использованием gvim (v.7.4.488) я хочу зафиксировать некоторые изменения в vcs (я использую git 2.1.4 из командной строки в Ubuntu linux).
git --status
показывает, какие файлы я изменил. Тем не менее, он также показывает vim .*.swp
видимого в данный момент буфера (ов) (как если файл содержит несохраненные изменения, так и когда отредактированный файл совпадает с .*.swp
-file). Конечно, git может игнорировать эти файлы или vim может хранить файлы подкачки в другом месте (см. Vim.wikia или этот вопрос в stackoverflow ). Но мне нравится, когда .*.swp
файлы -файлы git --status
содержат несохраненные изменения, так как они сигнализируют мне, что я фиксирую файлы в другом состоянии, чем то, в котором они находятся.
Как можно избежать ложных срабатываний .*.swp
-files, отображаемых в том git --status
случае, если сохраненный файл совпадает с .*.swp
-file, и при этом возможность увидеть, что файл для фиксации находится в другом состоянии, чем те, которые я редактирую с помощью vim?
- Возможно ли иметь только
.*.swp
-files, когда файл на диске и файл в vim различаются? - Есть ли другой способ обнаружить несохраненные файлы?
Объединение комментариев @elyashiv и @VanLaser приводит к более простому методу, чем определение, подразумевают ли файлы подкачки несохраненные файлы:
- не позволяйте git игнорировать файлы. *. sw [po];
- при совершении, если
git --status
обнаруживаются какие-либо.*.sw[po]
файлы, делайте a:wa
в vi; и, - добавить и зафиксировать.
:wa
чтобы убедиться , что нет никаких несохраненных файлов.git commit
...Ответы:
vim -r
в командной строке будут перечислены все файлы подкачки в текущем каталоге и временных каталогов, и содержат ли они все несохраненные изменения. Посмотрите на строку , которая говоритmodified: no/YES
.Я не знаю , как сказать Vim заглянуть в другом каталоге, так что вам нужно изменить для каждого каталога , который содержит файл подкачки и запустить
vim -r
. Вы можете придумать сценарий , который разобранный выходgit status
, или используютсяfind -name '.*.sw[po]'
, а затем побежалvim -r
в каждом каталоге, чтобы показать все файлы подкачка с несохраненными изменениями.(Я использую
.*.sw[po]
вместо.*.swp
, потому что иногда.swo
файлы создаются в дополнение к.swp
файлам, когда вы редактируете файл, у которого уже есть файл подкачки..swn
Файлы могут быть созданы также, если вы редактируете файл с двумя существующими файлами подкачки, но я не думаю, что Я когда-либо видел в дикой природе. Если вы действительно параноик, вы можете использовать.*.sw[a-p]
или просто.*.sw?
.)См.
:help -r
(Немного) дополнительную информацию о-r
параметре или:help recover.txt
дополнительную информацию о восстановлении и смене имен файлов.источник
.
в имени файла), так что правильный шаблон будет.*.sw[a-p]
(хотя в патологических случаях вы действительно можете получить весь путь.foo.saa
). Это также должно исключать совпадение файлов Flash, так как я сомневаюсь, что это, как правило, скрытый файл..
требуется в Glob оболочки, но*.swp
работает в качестве аргументаfind
. Но ведущие.
делает вещи проще. Спасибо!Да. Приведенный ниже фрагмент (адаптированный из vimrc tpope ) отключит файл подкачки для буфера, если он не был изменен, поэтому файлы подкачки существуют только для измененных файлов.
Предупреждение : поскольку файл подкачки существует только при изменении буфера, вы теряете использование файла подкачки в качестве консультативной блокировки. Если буфер не изменен, другой Vim может начать его редактирование без уведомления о том, что он уже открыт. Если второй Vim сохраняет до того, как первый внесет дополнительные изменения, они не будут замечены, пока пользователь не попытается сохранить или что-то не вызовет Vim, чтобы проверить, изменен ли файл.
источник