Vifm에서 확장자 없이 파일 이름 복사

Vifm에서 확장자 없이 파일 이름 복사

~에서비빔 위키그리고 사용클립, 선택한 파일의 파일 이름을 복사하는 방법을 보여줍니다.

nnoremap yn :!echo -n %c | xclip -selection clipboard %i<cr>:echo expand('%"c') "is yanked to clipboard"<cr>

그런데 확장명으로 복사되는데, 확장명 없이 파일 이름을 클립보드에 복사하려면 어떻게 해야 합니까?

답변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>

관련 정보