vim을 역순으로 사용하여 디렉터리의 모든 파일 열기

vim을 역순으로 사용하여 디렉터리의 모든 파일 열기

vim을 사용하여 주어진 디렉토리의 모든 파일을 알파벳 역순으로 어떻게 열 수 있습니까? 명령 -

vim *

모든 파일을 알파벳순으로 엽니다. :n반대 순서 로 파일을 반복하려면 어떻게 해야 합니까 ? 나는의 용도를 발견했다tac 여기, 파일 내용을 표시하는 또 다른 솔루션여기, 그리고 emacs를 위한 솔루션여기에 대한 솔루션은 아닙니다 vim.

답변1

일반적인 아이디어는 다음과 같은 *결과를 뒤집는 것일 수 있습니다.

printf '%s\n' * | tac

이것을 사용하여 xargs생성합니다 vim. 이에 대한 두 가지 문제점:

  1. 일반적으로 파일 이름에는 개행 문자가 포함될 수 있으므로 null 문자로 구분하고 xargs -0.

  2. vimxargs파이프에서 생성된 입력은 터미널에서 나오지 않는다고 불평합니다. 이상한 일이 일어날 수도 있습니다. xargs지원하는 경우 -o( /dev/tty명령을 실행하기 전에 하위 프로세스에서 stdin을 다시 여는 경우) 이를 사용하십시오.

그러면 전체 솔루션은 다음과 같습니다.

printf '%s\0' * | tac -s "" | xargs -0o vim

노트:

  • tacPOSIX에서는 필요하지 않습니다. xargs사용된 옵션을 지원하지 않을 수 있습니다. 전체 접근 방식은 이식성이 없습니다.
  • 옵션 인수인 빈 문자열은 tac -s널 문자를 명시적으로 전달하지 않고 구분 기호로 널 문자를 설정하는 것으로 보입니다(문제가 있을 수 있음).
  • 있다ARG_MAX한계, 더 긴 명령을 실행할 수 없습니다. 파일이 많은 경우 확장이 *제한을 초과하여 Argument list too long. printf쉘에 내장된 경우 이 시점에서는 제한이 적용되지 않을 수 있습니다. 여전히 xargs스폰을 시도할 때 적용됩니다 vim. xargs이를 감지하고 vim필요한 경우 두 개 이상의 프로세스를 순서대로 실행합니다. 그러나 이는 원하는 것이 아닐 수도 있습니다. 를 사용하여 수동으로 반복할 예정이므로 :n파일 수가 그다지 크지 않을 것으로 예상하므로 ARG_MAX문제가 되지 않을 것입니다.

관련 정보