vi / vim에서 파일을 덮어 쓰지 않고 파일에 어떻게 추가합니까?


11

간단히 수행하여 파일에 쓸 수 있다는 것을 알고 있습니다 :w <file>. 덮어 쓰지 않고 파일을 추가하여 파일에 쓰는 방법을 알고 싶습니다.

사용 사례의 예 : 일부 샘플을 로그 파일에서 다른 파일로 가져오고 싶습니다. 오늘 그것을 달성하기 위해 나는 할 수 있습니다 :

  1. 로그 파일을 엽니 다
  2. 로 몇 줄을 선택하십시오 Shift+v
  3. 파일에 쓰기 : :w /tmp/samples
  4. 라인을 더 선택하십시오 Shift+v
  5. 추가하는 /tmp/samples:w !cat - >> /foo/samples

불행히도 5 단계는 길고 추악하며 오류가 발생하기 쉽습니다 ( >데이터를 잃어 버리게됩니다). Vim이 여기에 더 좋은 것이 있기를 바랍니다.


3
Vim을 더 잘 사용하려면 자매 사이트 Vi와 Vim을 체크 아웃하십시오 .
muru

답변:


26

보낸 사람 :h :w:

                                                :w_a :write_a E494
:[range]w[rite][!] [++opt] >>
                        Append the specified lines to the current file.

:[range]w[rite][!] [++opt] >> {file}
                        Append the specified lines to {file}.  '!' forces the
                        write even if file does not exist.

당신은 비주얼 모드를 사용하여 텍스트를 선택한 경우에 따라서, 단지 할 :w >> /foo/samples( :'<,'>자동 붙을). 를 놓치면 >Vim이 다음과 같이 불평합니다.

E494: Use w or w>>

이것은 완벽합니다 :) 문서를 읽는 것과 같은 것은 없습니다. :h그래도 몰랐다 . 더 많이 사용할 것입니다
Bruno Polaco

1
@BrunoPolaco :h는 속기입니다 :help. :help helphelp?로 시작하십시오 : D
muru

0

함수를 정의하십시오.

fun! App(filename)
    exec "w !cat - >> " . shellescape(a:filename)
endfunc

함수를 호출하십시오.

call App('/foo/samples')
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.