Скопировать имя файла без расширения в Vifm

Как найдено здесь ; убедитесь, что Chrome по крайней мере пытается включить аппаратное ускорение:

Try the simplest fix first.

Go into chrome://settings, click on show advanced settings at the bottom, and then scroll down to the bottom again and make sure "use hardware acceleration when available" is checked.

Это была проблема в моей ситуации.

2
06.08.2020, 17:21
1 ответ

Используйте sed для удаления всего после первой точки включительно:

:nnoremap yn :!sed "s/\..*//"<<<%c|xclip -selection clipboard %i<cr>

Если ваша оболочка не поддерживает строки (<<<), используйте printf(Почему printf лучше, чем echo?)передать в sed:

:nnoremap yn :!printf '%%s' %c|sed "s/\..*//"|xclip -selection clipboard %i<cr>

Vifm обрабатывает макросы перед передачей команду оболочке. %cстановится именем файла (правильно экранированным ); %sтакже будет заменено, поэтому %%sнеобходимо, чтобы printf получает %s. Аналогично, <cr>— это « Enter эквивалент" и является обязательным, иначе вся команда просто выскакивает в командной строке -.

Это было проверено. Даже файл с изысканным названием t*.a.<!e>&прошел проверку, в буфер обмена попадает t*.

Если вы хотите удалить все после включительно последний точка (не первая ), используйте sed "s/\.[^.]*$//".


Чтобы отобразить скопированную строку в строке состояния, повторите команду до sed и используйте макрос %S.

:nnoremap yn :!printf '%%s' %c|sed "s/\..*//"|xclip -selection clipboard %i<cr>:!printf '%%s' %c|sed "s/\..*//;s/$/ is yanked to clipboard/" %S<cr>
4
18.03.2021, 23:14

Теги

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