vi / vim에서 파일을 덮어 쓰지 않고 파일에 어떻게 추가합니까? 오늘 그것을 달성하기 위해 나는 할

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

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

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

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



답변

보낸 사람 :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>>


답변

함수를 정의하십시오.

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

함수를 호출하십시오.

call App('/foo/samples')


답변