В мрачном имени файла появляются непреднамеренные кавычки

В Debian stretch некоторые основные настройки загружаются после загрузки /etc/vim/vimrcи /etc/vim/vimrc.local. См./etc/vim/vimrc:

...
" Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc.
" This happens after /etc/vim/vimrc(.local) are loaded, so it will override
" any settings in these files.
" If you don't want that to happen, uncomment the below line to prevent
" defaults.vim from being loaded.
"let g:skip_defaults_vim = 1
...

Этот файл по умолчанию имеет значение /usr/share/vim/vim80/defaults.vim. Теперь изменение центрального файла под /usr/share/...равно

  • зло
  • непостоянный -, он возвращается после обновления

Установка skip_defaults_vimпутем раскомментирования строки выше удаляет все другие параметры, установленные этим файлом. Чтобы просто удалить ненужные параметры, введите следующее в/etc/vimrc.local:

" /etc/vim/vimrc.local
" honor skip_defaults_vim from the master /etc/vim/vimrc file
if ! exists('skip_defaults_vim')
  " Source the defaults file manually from here
  source $VIMRUNTIME/defaults.vim
endif

" avoid loading the defaults twice
let g:skip_defaults_vim = 1

" revert any unwanted changes the defaults file introduced
set mouse=

" set any other options you want centrally on your system
"set paste " uncomment if you want paste insert enabled
"...

Это загружает defaults.vimвручную и отключает автоматическую загрузку, что дает вам возможность отменить любые нежелательные настройки без необходимости создавать .vimrcдля каждой учетной записи пользователя.

2
28.06.2020, 03:06
2 ответа

$() создает новый контекст цитирования, поэтому вам не нужно экранировать внутри него кавычки. Это одна из причин, почему $()предпочтительнее ``, в котором смешивание вложенности и кавычек привело бы к кошмару.

Для сравнения:

$ echo "screenshot-$(date +\"%y%m%d_%T\").png"
screenshot-"200701_14:56:19".png
$ echo "screenshot-`date +\"%y%m%d_%T\"`.png"
screenshot-200701_14:56:27.png

Вы можете не использовать обратную косую черту и просто использовать "screenshot-$(date +"%y%m%d_%T").png". Или, поскольку %и другие не являются особыми, просто не используйте внутренние кавычки:

$ echo "screenshot-$(date +%y%m%d_%T).png"
screenshot-200701_14:57:23.png
4
18.03.2021, 23:23

Просто опустите обратную косую черту.Не это:

grim -g "$(slurp)" "$HOME/screenshot-$(date +\"%y%m%d_%T\").png"

но это:

grim -g "$(slurp)" "$HOME/screenshot-$(date +"%y%m%d_%T").png"

А вот насчет вашего комментария:время не сортируется в моей папке с файлами

Рекомендую использовать :FullYear -Moth -Day или %Y%m%d_%Tили просто%F_%T

В этом формате сортировка текста отлично работает с датами.

1
18.03.2021, 23:23

Теги

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