Vifm: 선택한 각 파일에 대해 개별적으로 명령 실행

Vifm: 선택한 각 파일에 대해 개별적으로 명령 실행

for루프 시뮬레이션을 원합니다비빔.

파일을 선택하지 않으면 현재 파일 이름을 인수로 사용하여 입력 :!echo %f하고 출력을 볼 수 있습니다.echo

여러 파일을 선택하면 :!echo %f생성된 출력은 echo선택한 모든 파일 이름이 공백과 인수로 연결된 위치입니다.

echo선택한 각 파일에 임의의 프로그램(예:)을 적용 하려면 어떻게 해야 합니까 ? 그래서

echo file1
echo file2
echo file3
...

바꾸다

echo file1 file2 file3

내 옵션은 무엇입니까?

추신: 다음 Bash 코드의 Vifm 시뮬레이션을 원합니다.

for f in file1 file2 file3; do
  echo $f
done

답변1

옵션 1: 사용자 정의 명령

:com loop for f in %f; do %a "$f"; done

~/.config/vifm/vifmrc항상 명령 설정 에 넣으십시오 .

ls -l선택한 각 파일 에 적용하려면 다음을 발행하십시오.

:loop ls -l

두 개의 매크로가 사용됩니다:

  • %f선택한 파일 이름을 올바르게 인용하세요.
  • %a논쟁. 우리의 예에서는 ls-l.

옵션 2: 지도

:noremap b :!for f in %f; do  "$f"; done<A-B><A-B><Left>

항상 지도 설정을 유지하려면 다시 입력하세요 ~/.config/vifm/vifmrc.

일반 또는 시각적 모드에서 키를 누르면 b명령줄에 for 루프가 나타나고 커서는 및 사이에 편리하게 위치하므로 do원하는 "$f"명령을 입력하고 키를 누르면 됩니다 Enter.

<A-B><A-B><Left>커서 위치 지정은 명령줄 모드에서 Alt+B커서를 이전 단어의 시작 부분으로 이동하고 Left(분명히) 왼쪽으로 한 칸 이동 하여 수행됩니다 .

노트&: 실행하는 데 시간이 오래 걸리고 Vifm이 실행되는 동안 차단되는 것을 원하지 않는 경우 이 명령을 백그라운드에 추가하는 것을 잊지 마세요.

답변2

그러면 원하는 출력이 생성됩니다.

:!echo %f | xargs -n 1 echo

물론 for사용하기 쉽도록 명령(예: )을 정의할 수 있습니다.

:com for echo %f | xargs -n 1

그런 다음 다음을 입력하면 됩니다.

:for echo

관련 정보