Vim은 이상한 캐릭터를 보여줍니다 <91>, <92> 페이지에서 내 SSH / Vim 세션으로

Vim over SSH를 사용하는 동안 웹 페이지에서 내 SSH / Vim 세션으로 일부 내용을 복사하여 다음 결과를 얻었습니다.

SIZE=`df -h|grep $DISC|awk <91>{print $2}<92>`

분명히 <91><92>스탠드 '하지만 어떻게 검색하고이 물건을 대체 할 수 있습니까? 그리고 그 무엇을 91/ 92뜻? 어떻게 이런 일이 인코딩으로 인해됩니다 91/ 92ASCII의 평균에 \[?



답변

소스 웹 페이지의 내용이 지나치게 재 포맷되었습니다. 텍스트는 의심 할 여지없이 사용했는데 (직선) (ASCII 작은 따옴표 39/0x27, U+0027) 대신 곱슬 작은 따옴표 ( U+2018하고 U+2019있으며, 0x91 and 0x92또한 MS-ANSI와 WINDOWS-1252로 알려진 CP1252 (에; Windows에서 공통의 8 비트 인코딩)) .

Vim은 16 진수 코드를 보여줍니다 .Vim이 사용하는 인코딩 (아마 UTF-8)에는 유효하지 않기 때문입니다. 파일에 이미 저장된 텍스트를 편집하는 경우 :e ++enc=cp1252;를 사용 하여 파일을 CP1252로 다시로드 할 수 있습니다 . 이렇게하면 중괄호가 표시됩니다. 그러나 CP1252로 다시로드 할 실제 이유는 없으며 0x91and 0x92문자를 삭제하고 작은 따옴표로 바꿉니다.


답변

91과 92는 MS Windows 기본 버전 인 latin1 / ISO-8859-1 인코딩의 열기 및 닫기 중괄호 (작은 따옴표)에 대한 16 진 코드이며,보다 구체적으로 cp1252 / Windows-1252 (cp는 코드를 나타냄) 페이지).

이러한 문자는 “Smart Quotes”기능의 일부로 Word 문서 / Outlook 전자 메일의 내용을 복사하는 사람들이 가장 자주 삽입합니다. 이 코드 페이지의 다른 문제 문자는 16 진수 93/94이며 큰 따옴표, 글 머리 기호 (•) 및 OE 합자 (– 및 Œ)입니다. cp1252 의 녹색으로 강조 표시된 Wikipeda 페이지 에서 동일한 코드로 ISO-8859-1 또는 UTF-8에 직접 맵핑되지 않는 “문제점”의 전체 목록을 볼 수 있습니다 .

파일을 올바른 인코딩으로 열려면 ++ enc = cp1252 옵션을 : e 명령에 사용하십시오.

:e ++enc=1252 filename.txt

Vim의 특정 잘못된 16 진 코드를 대체 명령 (: s)과 코드 대체 중 하나로 바꿀 수 있습니다.

\d123   decimal number of character
\o40    octal number of character up to 0377
\x20    hexadecimal number of character up to 0xff
\u20AC  hex. number of multibyte character up to 0xffff
\U1234  hex. number of multibyte character up to 0xffffffff

16 진수 91/92 문자를 변경하려면 다음을 수행해야합니다.

:%s/[\x91\x92]/'/g

답변

iconv열기 전에 텍스트 파일을 CP1252에서 UTF-8로 변환하는 데 사용하십시오 .

iconv -f cp1252 -t utf8 inputfile.csv > outputfile.csv

Mac OS에서는 다음을 사용하십시오.

iconv -f cp1252 -t UTF8-MAC inputfile.csv  > outputfile.csv

답변

실제로 16 진 91과 92를 나타내며, Windows 코드 페이지에서는 작은 따옴표 ( ‘및’-Alt-0145 및 Alt-0146)를 닫고 닫는 중괄호입니다.

다음 검색 / 바꾸기를 시도하십시오.

:s%/\<9[12]\>/'/g