현재 파일의 전체 내용을 filename이라는 파일에 추가합니다.

현재 파일의 전체 내용을 filename이라는 파일에 추가합니다.

나는 단순히 파일에 쓰기만 하면 이 작업을 수행할 수 있다는 것을 알고 있습니다 :w <file>. 파일을 덮어쓰는 대신 추가하여 파일에 쓰는 방법을 알고 싶습니다.

사용 사례 예: 로그 파일의 일부 샘플을 다른 파일로 가져오고 싶습니다. 이를 달성하기 위해 오늘은 다음과 같이 할 수 있습니다.

  1. 로그 파일 열기
  2. 일부 행을 선택하세요Shift+v
  3. 파일에 쓰기::w /tmp/samples
  4. 행을 더 선택하세요Shift+v
  5. /tmp/samples에 추가하다:w !cat - >> /foo/samples

불행하게도 5단계는 길고 보기 흉하며 오류가 발생하기 쉽습니다(누락하면 >데이터가 손실될 수 있음). Vim에게 더 좋은 일이 있었으면 좋겠습니다.

답변1

~에서: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>>

답변2

함수를 정의합니다:

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

함수 호출:

call App('/foo/samples')

답변3

현재 파일의 전체 내용을 filename이라는 파일에 추가합니다.

:w >> filename

현재 파일의 1행부터 13행까지의 내용을 filename이라는 파일에 추가합니다.

:1,13w >> filename

관련 정보