나는 단순히 파일에 쓰기만 하면 이 작업을 수행할 수 있다는 것을 알고 있습니다 :w <file>
. 파일을 덮어쓰는 대신 추가하여 파일에 쓰는 방법을 알고 싶습니다.
사용 사례 예: 로그 파일의 일부 샘플을 다른 파일로 가져오고 싶습니다. 이를 달성하기 위해 오늘은 다음과 같이 할 수 있습니다.
- 로그 파일 열기
- 일부 행을 선택하세요
Shift+v
- 파일에 쓰기:
:w /tmp/samples
- 행을 더 선택하세요
Shift+v
/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