![Vifm: 선택한 각 파일에 대해 개별적으로 명령 실행](https://linux55.com/image/161752/Vifm%3A%20%EC%84%A0%ED%83%9D%ED%95%9C%20%EA%B0%81%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EB%8C%80%ED%95%B4%20%EA%B0%9C%EB%B3%84%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EB%AA%85%EB%A0%B9%20%EC%8B%A4%ED%96%89.png)
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