가장 간단한 방법은 binary
옵션 을 사용하는 것입니다. 보낸 사람 :help binary
:
This option should be set before editing a binary file. You can also
use the -b Vim argument. When this option is switched on a few
options will be changed (also when it already was on):
'textwidth' will be set to 0
'wrapmargin' will be set to 0
'modeline' will be off
'expandtab' will be off
Also, 'fileformat' and 'fileformats' options will not be used, the
file is read and written like 'fileformat' was "unix" (a single <NL>
separates lines).
The 'fileencoding' and 'fileencodings' options will not be used, the
file is read without conversion.
[..]
When writing a file the <EOL> for the last line is only written if
there was one in the original file (normally Vim appends an <EOL> to
the last line if there is none; this would make the file longer). See
the 'endofline' option.
이 작업을 수행하지 않고 환경에서 멀티 바이트 인코딩 (예 : 대부분의 사람들이 사용하는 UTF-8)을 사용하는 경우 Vim은 텍스트를 그대로 인코딩하려고 시도하여 일반적으로 파일 손상을 일으 킵니다.
파일을 열고을 사용하여이를 확인할 수 있습니다 :w
. 이제 변경되었습니다.
사용자가 설정 한 경우 LANG
와 LC_ALL
로 C
(ASCII), 빔 아무것도 변환하지 않고 파일이 동일하게 유지 빔은 어떤 멀티 바이트 인코딩을 수행 할 필요가 없습니다 때문에 (여전히하지만, 줄 바꿈을 추가합니다).
개인적 으로 바이너리 를 비활성화 하는 것을 선호 set wrap
하지만 다른 사람들이 바이너리를 활성화 하는 것을 선호 할 수도 있습니다 . YMMV. 또 다른 유용한 방법은입니다 :set display=uhex
. 보낸 사람 :help 'display'
:
uhex Show unprintable characters hexadecimal as <xx>
instead of using ^C and ~C.
마지막 팁으로 %B
( :set rulerformat=0x%B
) 를 사용하여 눈금자의 커서 아래에있는 문자의 16 진수 값을 표시 할 수 있습니다 .
더 고급 : xxd
이 xxd(1)
도구를 사용하여 파일을보다 읽기 쉬운 형식으로 변환하고 (이것이 중요한 비트입니다) 편집 된 "읽기 가능한 형식"을 구문 분석 한 다음 이진 데이터로 다시 쓸 수 있습니다. xxd
의 일부 vim
이므로 vim
설치 한 경우 설치해야합니다 xxd
.
그것을 사용하려면 :
$ xxd /bin/ls | vi -
또는 이미 파일을 연 경우 다음을 사용할 수 있습니다.
:%!xxd
이제 화면 왼쪽의 16 진수 (16 진수)에서 변경해야하며 오른쪽의 변경 (인쇄 가능한 표현)은 쓰기시 무시됩니다.
저장하려면 다음을 사용하십시오 xxd -r
.
:%!xxd -r > new-ls
파일이에 저장됩니다 new-ls
.
또는 현재 버퍼에 바이너리를로드하려면
:%!xxd -r
보낸 사람 xxd(1)
:
-r | -revert
reverse operation: convert (or patch) hexdump into binary. If
not writing to stdout, xxd writes into its output file without
truncating it. Use the combination -r -p to read plain hexadeci‐
mal dumps without line number information and without a particu‐
lar column layout. Additional Whitespace and line-breaks are
allowed anywhere.
그런 다음 사용 :w
하여 작성하십시오. ( 주의 : binary
위와 같은 이유로 파일에 쓰기 전에 옵션 을 설정하려고합니다 ).
이를보다 쉽게하기위한 보완 키 바인딩 :
" Hex read
nmap <Leader>hr :%!xxd<CR> :set filetype=xxd<CR>
" Hex write
nmap <Leader>hw :%!xxd -r<CR> :set binary<CR> :set filetype=<CR>
gVim을 사용하는 경우 '도구 ➙ HEX로 변환'및 '도구 ➙ 다시 변환'아래에있는 메뉴에서도 사용할 수 있습니다.
정력 팁 위키는 더 많은 정보와 헬퍼 스크립트가있는 페이지가 있습니다. 개인적으로 바이너리 파일을 자주 편집하는 경우 실제 16 진수 편집기를 사용하는 것이 좋습니다. Vim 은
일종의 일을 할 수 있지만 분명히 그것을 위해 설계된 것은 아니며 :set binary
Vim 없이 쓰면 바이너리 파일이 손상 될 수 있습니다!