Dired 버퍼에 프로그램 적으로 파일 삽입


10

파일 이름 목록 (전체 경로 포함)이 있고이 파일 세트를 나열하는 Dired 버퍼를 만들고 싶습니다. 어떻게하면 되나요?

파일 이름 목록에서 Dired 버퍼를 어떻게 만듭니 까?

외부 종속성을 사용하지 않습니다.


명확히하십시오. 목록의 문자열이 a) 작성하려는 파일의 이름 또는 b) 파일의 내용 (절대 경로가있는 것)입니까?
Dan

@Dan 절대 경로가있는 파일 이름 목록입니다. 파일 이름 만
Tu Do

1
내가 당신을 올바르게 이해한다면, 당신은 (find-file your-directory-path)관련 dired버퍼 를 얻기 위해 사용할 수 있습니다 (예를 들어, 버퍼에 디렉토리를 (find-file "/tmp/")열 것입니다 ). tmpdired
Dan

1
이 의견에서 말한 내용에 따라 귀하의 질문을 편집했습니다. 내가 잘못하면 자유롭게 롤백하십시오.
Malabarba

3
elisp에서 파일 객체에 대해 묻고 싶다면 완전히 다른 질문입니다. 매우 짧은 대답은 없습니다. :-)
Malabarba

답변:


20

C-h f dired답을 알려줍니다. 그냥 패스 dired는 AS, DIRNAME, 인수의 차로 원하는 Dired 버퍼 이름 (문자열)을 가지고 있으며, 파일 이름 목록 CDR 당신이 버퍼에 나열된 원하는 목록을. 일반적으로 절대 파일 이름을 사용하려고합니다. 예를 들면 다음과 같습니다.

(dired (list "My Dired Buffer Name*"     ; The Dired buffer name
             "/usr/foo/file1.el"         ; First file
             "/usr/bar/toto/some-file.c" ; Second file
             "/whatever/directory/"      ; Third is a directory
             "/a/file/somewhere.zzz"))   ; Fourth

플랫폼에 따라 입력 하지 않은 파일 및 디렉토리의 이름 이 무시되거나 (나열되지 않음) 오류가 발생할 수 있습니다. 전자는 당신이 사용하는 경우에 발생합니다 ls-lisp.el(예 : MS Windows). 원하는 ls-lisp경우 다음 을 수행 하여 원하는 경우 옵션 ls-lisp을 적게 사용 하여 모든 플랫폼 에서 사용할 수 있습니다 ls.

(setq ls-lisp-use-insert-directory-program nil)
(require 'ls-lisp)

라이브러리 Dired + ( dired+.el)를 사용하는 경우 대화식으로 나열 할 파일 및 디렉토리를 선택할 수 있습니다. dired양수가 아닌 접두사 인수 (예 : <= 0)를 지정하십시오. 그런 다음 나열된 디렉토리 및 파일 이름을 입력하라는 메시지가 반복적으로 나타납니다. *일치하는 파일과 디렉토리를 포함시키기 위해 파일 이름 와일드 카드 (예 : 글 로빙)를 사용할 수 있습니다 . C-g입력을 끝내기 위해 사용 합니다.

즉, Dired 버퍼는 단일 디렉토리를 나열하는 대신 여러 디렉토리 및 파일 이름을 나열 할 수 있으며 다른 디렉토리 트리에 속할 수도 있습니다.

(음이 아닌 접두어 arg (즉,> = 0)는 ls목록 스위치 를 묻는 메시지를 표시합니다 . 따라서 접두어 arg가 0이면 스위치와 파일 / 디렉토리를 모두 나열하라는 메시지가 표시됩니다. 먼저 ls스위치와 파일 / 디렉토리가 표시됩니다.)


명령을 사용하지 않고 Elisp에서하고 싶습니다. (insert ...)텍스트를 버퍼에 삽입 하는 방법과 비슷한 파일 이름 (전체 경로 포함)을 Dired 버퍼의 항목으로 바꾸는 간단한 코드 스 니펫을 원합니다 .
Tu Do

1
@tudo : dired는 elisp 함수입니다. 이것을 평가하십시오 : (dired '("my-list" "/home/rekado/dev/script.scm" "/home/rekado/another-file"))@Drew가 쓴 것처럼 이러한 파일을 포함하는 dired 버퍼를 얻습니다.
rekado

@rekado. 감사합니다. 이제 나는 대답을 올바르게 다시 읽었습니다. 나는 당신과 같은 Elisp 코드 스 니펫을보고 싶었고 Drew가 그것을 보았을 때 사용자에게 명령 명령을 내렸다고 생각했습니다.
Tu Do

@Drew rekado의 예제를 추가하십시오. 답변 주셔서 감사합니다.
Tu Do

처음에는 파일 세트를 볼 때 이것이 간단하다고 생각하지 않았습니다 . Dired가 제대로 작동하려면 올바른 파일 객체를 인식시켜야한다고 생각했습니다.
Tu Do

2

파일 목록이 한 줄에 하나의 파일로 버퍼에있을 때이를 수행하는 명령이 있습니다.

(defun dired-virtual-vanilla ()
  (interactive)
  (dired (cons "*Dired*" (split-string (buffer-string) "\n" t))))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.