美文网首页
vim 替换十六进制为字符 hex2char

vim 替换十六进制为字符 hex2char

作者: 千羽之城88 | 来源:发表于2021-04-03 19:08 被阅读0次

    现在有一些文字,比如:

    (CHARSINTYPE D 1 U00AB U2018 U201C U3008 U300A U300C U300E U3010 U3014 U3016 U3018 U301D UFF08 UFF3B UFF5B UFF5F)
    (CHARSINTYPE D 2 U00BB U2019 U201D U3009 U300B U300D U300F U3011 U3015 U3017 U3019 U301F UFF09 UFF3D UFF5D UFF60 U301E)
    (CHARSINTYPE D 3 U203C U2047 U2048 U2049 UFF01 UFF1F)
    (CHARSINTYPE D 4 U30FB UFF1A UFF1B)
    (CHARSINTYPE D 5 U3002 UFF0E)
    (CHARSINTYPE D 6 U3001 UFF0C)
    (CHARSINTYPE D 7 U2014 U2025 U2026 U3033 U3034 U3035)
    (CHARSINTYPE D 8 U3005 U303B U3041 U3043 U3045 U3047 U3049 U3063 U3083 U3085 U3087 U308E U3095 U3096 U309D U309E U30A1 U30A3 U30A5 U30A7 U30A9 U30C3 U30E3 U30E5 U30E7 U30EE U30F5 U30F6 U30FC U30FD U30FE U31F0 U31F1 U31F2 U31F3 U31F4 U31F5 U31F6 U31F7 U31F8 U31F9 U31FA U31FB U31FC U31FD U31FE U31FF)
    (CHARSINTYPE D 9 U00B0 U2030 U2032 U2033 U20AC U2103 U2113 U2116 U3303 U330D U3314 U3318 U3322 U3323 U3326 U3327 U332B U3336 U333B U3349 U334A U334D U3351 U3357 U338E U338F U339C U339D U339E U33A1 U33C4 U33CB UFF03 UFF04 UFF05 UFFE0 UFFE1 UFFE5)
    (CHARSINTYPE D 10 U3000)
    (CHARSINTYPE D 11 U3042 U3044 U3046 U3048 U304A U304B U304C U304D U304E U304F U3050 U3051 U3052 U3053 U3054 U3055 U3056 U3057 U3058 U3059 U305A U305B U305C U305D U305E U305F U3060 U3061 U3062 U3064 U3065 U3066 U3067 U3068 U3069 U306A U306B U306C U306D U306E U306F U3070 U3071 U3072 U3073 U3074 U3075 U3076 U3077 U3078 U3079 U307A U307B U307C U307D U307E U307F U3080 U3081 U3082 U3084 U3086 U3088 U3089 U308A U308B U308C U308D U308F U3090 U3091 U3092 U3093 U3094 U30A2 U30A4 U30A6 U30A8 U30AA U30AB U30AC U30AD U30AE U30AF U30B0 U30B1 U30B2 U30B3 U30B4 U30B5 U30B6 U30B7 U30B8 U30B9 U30BA U30BB U30BC U30BD U30BE U30BF U30C0 U30C1 U30C2 U30C4 U30C5 U30C6 U30C7 U30C8 U30C9 U30CA U30CB U30CC U30CD U30CE U30CF U30D0 U30D1 U30D2 U30D3 U30D4 U30D5 U30D6 U30D7 U30D8 U30D9 U30DA U30DB U30DC U30DD U30DE U30DF U30E0 U30E1 U30E2 U30E4 U30E6 U30E8 U30E9 U30EA U30EB U30EC U30ED U30EF U30F0 U30F1 U30F2 U30F3 U30F4 U30F7 U30F8 U30F9 U30FA)
    (CHARSINTYPE D 12 U2010)
    (CHARSINTYPE D 13 U2013 U30A0)
    (CHARSINTYPE D 14 U301C)
    (CHARSINTYPE D 15 UFE30 UFF1A U30FB UFF1B)
    

    把想这些内容替换成字符,首先先修改一下形式:

    (CHARSINTYPE D 1 0x00AB 0x2018 0x201C 0x3008 0x300A 0x300C 0x300E 0x3010 0x3014 0x3016 0x3018 0x301D 0xFF08 0xFF3B 0xFF5B 0xFF5F)
    (CHARSINTYPE D 2 0x00BB 0x2019 0x201D 0x3009 0x300B 0x300D 0x300F 0x3011 0x3015 0x3017 0x3019 0x301F 0xFF09 0xFF3D 0xFF5D 0xFF60 0x301E)
    (CHARSINTYPE D 3 0x203C 0x2047 0x2048 0x2049 0xFF01 0xFF1F)
    (CHARSINTYPE D 4 0x30FB 0xFF1A 0xFF1B)
    (CHARSINTYPE D 5 0x3002 0xFF0E)
    (CHARSINTYPE D 6 0x3001 0xFF0C)
    (CHARSINTYPE D 7 0x2014 0x2025 0x2026 0x3033 0x3034 0x3035)
    (CHARSINTYPE D 8 0x3005 0x303B 0x3041 0x3043 0x3045 0x3047 0x3049 0x3063 0x3083 0x3085 0x3087 0x308E 0x3095 0x3096 0x309D 0x309E 0x30A1 0x30A3 0x30A5 0x30A7 0x30A9 0x30C3 0x30E3 0x30E5 0x30E7 0x30EE 0x30F5 0x30F6 0x30FC 0x30FD 0x30FE 0x31F0 0x31F1 0x31F2 0x31F3 0x31F4 0x31F5 0x31F6 0x31F7 0x31F8 0x31F9 0x31FA 0x31FB 0x31FC 0x31FD 0x31FE 0x31FF)
    (CHARSINTYPE D 9 0x00B0 0x2030 0x2032 0x2033 0x20AC 0x2103 0x2113 0x2116 0x3303 0x330D 0x3314 0x3318 0x3322 0x3323 0x3326 0x3327 0x332B 0x3336 0x333B 0x3349 0x334A 0x334D 0x3351 0x3357 0x338E 0x338F 0x339C 0x339D 0x339E 0x33A1 0x33C4 0x33CB 0xFF03 0xFF04 0xFF05 0xFFE0 0xFFE1 0xFFE5)
    (CHARSINTYPE D 10 0x3000)
    (CHARSINTYPE D 11 0x3042 0x3044 0x3046 0x3048 0x304A 0x304B 0x304C 0x304D 0x304E 0x304F 0x3050 0x3051 0x3052 0x3053 0x3054 0x3055 0x3056 0x3057 0x3058 0x3059 0x305A 0x305B 0x305C 0x305D 0x305E 0x305F 0x3060 0x3061 0x3062 0x3064 0x3065 0x3066 0x3067 0x3068 0x3069 0x306A 0x306B 0x306C 0x306D 0x306E 0x306F 0x3070 0x3071 0x3072 0x3073 0x3074 0x3075 0x3076 0x3077 0x3078 0x3079 0x307A 0x307B 0x307C 0x307D 0x307E 0x307F 0x3080 0x3081 0x3082 0x3084 0x3086 0x3088 0x3089 0x308A 0x308B 0x308C 0x308D 0x308F 0x3090 0x3091 0x3092 0x3093 0x3094 0x30A2 0x30A4 0x30A6 0x30A8 0x30AA 0x30AB 0x30AC 0x30AD 0x30AE 0x30AF 0x30B0 0x30B1 0x30B2 0x30B3 0x30B4 0x30B5 0x30B6 0x30B7 0x30B8 0x30B9 0x30BA 0x30BB 0x30BC 0x30BD 0x30BE 0x30BF 0x30C0 0x30C1 0x30C2 0x30C4 0x30C5 0x30C6 0x30C7 0x30C8 0x30C9 0x30CA 0x30CB 0x30CC 0x30CD 0x30CE 0x30CF 0x30D0 0x30D1 0x30D2 0x30D3 0x30D4 0x30D5 0x30D6 0x30D7 0x30D8 0x30D9 0x30DA 0x30DB 0x30DC 0x30DD 0x30DE 0x30DF 0x30E0 0x30E1 0x30E2 0x30E4 0x30E6 0x30E8 0x30E9 0x30EA 0x30EB 0x30EC 0x30ED 0x30EF 0x30F0 0x30F1 0x30F2 0x30F3 0x30F4 0x30F7 0x30F8 0x30F9 0x30FA)
    (CHARSINTYPE D 12 0x2010)
    (CHARSINTYPE D 13 0x2013 0x30A0)
    (CHARSINTYPE D 14 0x301C)
    (CHARSINTYPE D 15 0xFE30 0xFF1A 0x30FB 0xFF1B)
    
    :%s/\zs\(0x[^ |)]\+\)\ze/\=nr2char(submatch(1))/g
    
    命令 描述
    \zs...\ze 确定字符范围
    nr2char() 数字转字符
    submatch() 得到捕获组1
    (CHARSINTYPE D 1 « ‘ “ 〈 《 「 『 【 〔 〖 〘 〝 ( [ { ⦅)
    (CHARSINTYPE D 2 » ’ ” 〉 》 」 』 】 〕 〗 〙 〟 ) ] } ⦆ 〞)
    (CHARSINTYPE D 3 ‼ ⁇ ⁈ ⁉ ! ?)
    (CHARSINTYPE D 4 ・ : ;)
    (CHARSINTYPE D 5 。 .)
    (CHARSINTYPE D 6 、 ,)
    (CHARSINTYPE D 7 — ‥ … 〳 〴 〵)
    (CHARSINTYPE D 8 々 〻 ぁ ぃ ぅ ぇ ぉ っ ゃ ゅ ょ ゎ ゕ ゖ ゝ ゞ ァ ィ ゥ ェ ォ ッ ャ ュ ョ ヮ ヵ ヶ ー ヽ ヾ ㇰ ㇱ ㇲ ㇳ ㇴ ㇵ ㇶ ㇷ ㇸ ㇹ ㇺ ㇻ ㇼ ㇽ ㇾ ㇿ)
    (CHARSINTYPE D 9 ° ‰ ′ ″ € ℃ ℓ № ㌃ ㌍ ㌔ ㌘ ㌢ ㌣ ㌦ ㌧ ㌫ ㌶ ㌻ ㍉ ㍊ ㍍ ㍑ ㍗ ㎎ ㎏ ㎜ ㎝ ㎞ ㎡ ㏄ ㏋ # $ % ¢ £ ¥)
    (CHARSINTYPE D 10  )
    (CHARSINTYPE D 11 あ い う え お か が き ぎ く ぐ け げ こ ご さ ざ し じ す ず せ ぜ そ ぞ た だ ち ぢ つ づ て で と ど な に ぬ ね の は ば ぱ ひ び ぴ ふ ぶ ぷ へ べ ぺ ほ ぼ ぽ ま み む め も や ゆ よ ら り る れ ろ わ ゐ ゑ を ん ゔ ア イ ウ エ オ カ ガ キ ギ ク グ ケ ゲ コ ゴ サ ザ シ ジ ス ズ セ ゼ ソ ゾ タ ダ チ ヂ ツ ヅ テ デ ト ド ナ ニ ヌ ネ ノ ハ バ パ ヒ ビ ピ フ ブ プ ヘ ベ ペ ホ ボ ポ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ヰ ヱ ヲ ン ヴ ヷ ヸ ヹ ヺ)
    (CHARSINTYPE D 12 ‐)
    (CHARSINTYPE D 13 – ゠)
    (CHARSINTYPE D 14 〜)
    (CHARSINTYPE D 15 ︰ : ・ ;)
    

    也可以不用替换U为0x,直接替换,并加入一点格式上的变化:

    %s/U\zs\([^ |)]\+\)\ze/\=submatch(1).":[".nr2char("0x".submatch(1))."],"/g
    
    (CHARSINTYPE D 1 0x00AB:[«], 0x2018:[‘], 0x201C:[“], 0x3008:[〈], 0x300A:[《], 0x300C:[「], 0x300E:[『], 0x3010:[【], 0x3014:[〔], 0x3016:[〖], 0x3018:[〘], 0x301D:[〝], 0xFF08:[(], 0xFF3B:[[], 0xFF5B:[{], 0xFF5F:[⦅],)
    (CHARSINTYPE D 2 0x00BB:[»], 0x2019:[’], 0x201D:[”], 0x3009:[〉], 0x300B:[》], 0x300D:[」], 0x300F:[』], 0x3011:[】], 0x3015:[〕], 0x3017:[〗], 0x3019:[〙], 0x301F:[〟], 0xFF09:[)], 0xFF3D:[]], 0xFF5D:[}], 0xFF60:[⦆], 0x301E:[〞],)
    (CHARSINTYPE D 3 0x203C:[‼], 0x2047:[⁇], 0x2048:[⁈], 0x2049:[⁉], 0xFF01:[!], 0xFF1F:[?],)
    (CHARSINTYPE D 4 0x30FB:[・], 0xFF1A:[:], 0xFF1B:[;],)
    (CHARSINTYPE D 5 0x3002:[。], 0xFF0E:[.],)
    (CHARSINTYPE D 6 0x3001:[、], 0xFF0C:[,],)
    (CHARSINTYPE D 7 0x2014:[—], 0x2025:[‥], 0x2026:[…], 0x3033:[〳], 0x3034:[〴], 0x3035:[〵],)
    (CHARSINTYPE D 8 0x3005:[々], 0x303B:[〻], 0x3041:[ぁ], 0x3043:[ぃ], 0x3045:[ぅ], 0x3047:[ぇ], 0x3049:[ぉ], 0x3063:[っ], 0x3083:[ゃ], 0x3085:[ゅ], 0x3087:[ょ], 0x308E:[ゎ], 0x3095:[ゕ], 0x3096:[ゖ], 0x309D:[ゝ], 0x309E:[ゞ], 0x30A1:[ァ], 0x30A3:[ィ], 0x30A5:[ゥ], 0x30A7:[ェ], 0x30A9:[ォ], 0x30C3:[ッ], 0x30E3:[ャ], 0x30E5:[ュ], 0x30E7:[ョ], 0x30EE:[ヮ], 0x30F5:[ヵ], 0x30F6:[ヶ], 0x30FC:[ー], 0x30FD:[ヽ], 0x30FE:[ヾ], 0x31F0:[ㇰ], 0x31F1:[ㇱ], 0x31F2:[ㇲ], 0x31F3:[ㇳ], 0x31F4:[ㇴ], 0x31F5:[ㇵ], 0x31F6:[ㇶ], 0x31F7:[ㇷ], 0x31F8:[ㇸ], 0x31F9:[ㇹ], 0x31FA:[ㇺ], 0x31FB:[ㇻ], 0x31FC:[ㇼ], 0x31FD:[ㇽ], 0x31FE:[ㇾ], 0x31FF:[ㇿ],)
    (CHARSINTYPE D 9 0x00B0:[°], 0x2030:[‰], 0x2032:[′], 0x2033:[″], 0x20AC:[€], 0x2103:[℃], 0x2113:[ℓ], 0x2116:[№], 0x3303:[㌃], 0x330D:[㌍], 0x3314:[㌔], 0x3318:[㌘], 0x3322:[㌢], 0x3323:[㌣], 0x3326:[㌦], 0x3327:[㌧], 0x332B:[㌫], 0x3336:[㌶], 0x333B:[㌻], 0x3349:[㍉], 0x334A:[㍊], 0x334D:[㍍], 0x3351:[㍑], 0x3357:[㍗], 0x338E:[㎎], 0x338F:[㎏], 0x339C:[㎜], 0x339D:[㎝], 0x339E:[㎞], 0x33A1:[㎡], 0x33C4:[㏄], 0x33CB:[㏋], 0xFF03:[#], 0xFF04:[$], 0xFF05:[%], 0xFFE0:[¢], 0xFFE1:[£], 0xFFE5:[¥],)
    (CHARSINTYPE D 10 0x3000:[ ],)
    (CHARSINTYPE D 11 0x3042:[あ], 0x3044:[い], 0x3046:[う], 0x3048:[え], 0x304A:[お], 0x304B:[か], 0x304C:[が], 0x304D:[き], 0x304E:[ぎ], 0x304F:[く], 0x3050:[ぐ], 0x3051:[け], 0x3052:[げ], 0x3053:[こ], 0x3054:[ご], 0x3055:[さ], 0x3056:[ざ], 0x3057:[し], 0x3058:[じ], 0x3059:[す], 0x305A:[ず], 0x305B:[せ], 0x305C:[ぜ], 0x305D:[そ], 0x305E:[ぞ], 0x305F:[た], 0x3060:[だ], 0x3061:[ち], 0x3062:[ぢ], 0x3064:[つ], 0x3065:[づ], 0x3066:[て], 0x3067:[で], 0x3068:[と], 0x3069:[ど], 0x306A:[な], 0x306B:[に], 0x306C:[ぬ], 0x306D:[ね], 0x306E:[の], 0x306F:[は], 0x3070:[ば], 0x3071:[ぱ], 0x3072:[ひ], 0x3073:[び], 0x3074:[ぴ], 0x3075:[ふ], 0x3076:[ぶ], 0x3077:[ぷ], 0x3078:[へ], 0x3079:[べ], 0x307A:[ぺ], 0x307B:[ほ], 0x307C:[ぼ], 0x307D:[ぽ], 0x307E:[ま], 0x307F:[み], 0x3080:[む], 0x3081:[め], 0x3082:[も], 0x3084:[や], 0x3086:[ゆ], 0x3088:[よ], 0x3089:[ら], 0x308A:[り], 0x308B:[る], 0x308C:[れ], 0x308D:[ろ], 0x308F:[わ], 0x3090:[ゐ], 0x3091:[ゑ], 0x3092:[を], 0x3093:[ん], 0x3094:[ゔ], 0x30A2:[ア], 0x30A4:[イ], 0x30A6:[ウ], 0x30A8:[エ], 0x30AA:[オ], 0x30AB:[カ], 0x30AC:[ガ], 0x30AD:[キ], 0x30AE:[ギ], 0x30AF:[ク], 0x30B0:[グ], 0x30B1:[ケ], 0x30B2:[ゲ], 0x30B3:[コ], 0x30B4:[ゴ], 0x30B5:[サ], 0x30B6:[ザ], 0x30B7:[シ], 0x30B8:[ジ], 0x30B9:[ス], 0x30BA:[ズ], 0x30BB:[セ], 0x30BC:[ゼ], 0x30BD:[ソ], 0x30BE:[ゾ], 0x30BF:[タ], 0x30C0:[ダ], 0x30C1:[チ], 0x30C2:[ヂ], 0x30C4:[ツ], 0x30C5:[ヅ], 0x30C6:[テ], 0x30C7:[デ], 0x30C8:[ト], 0x30C9:[ド], 0x30CA:[ナ], 0x30CB:[ニ], 0x30CC:[ヌ], 0x30CD:[ネ], 0x30CE:[ノ], 0x30CF:[ハ], 0x30D0:[バ], 0x30D1:[パ], 0x30D2:[ヒ], 0x30D3:[ビ], 0x30D4:[ピ], 0x30D5:[フ], 0x30D6:[ブ], 0x30D7:[プ], 0x30D8:[ヘ], 0x30D9:[ベ], 0x30DA:[ペ], 0x30DB:[ホ], 0x30DC:[ボ], 0x30DD:[ポ], 0x30DE:[マ], 0x30DF:[ミ], 0x30E0:[ム], 0x30E1:[メ], 0x30E2:[モ], 0x30E4:[ヤ], 0x30E6:[ユ], 0x30E8:[ヨ], 0x30E9:[ラ], 0x30EA:[リ], 0x30EB:[ル], 0x30EC:[レ], 0x30ED:[ロ], 0x30EF:[ワ], 0x30F0:[ヰ], 0x30F1:[ヱ], 0x30F2:[ヲ], 0x30F3:[ン], 0x30F4:[ヴ], 0x30F7:[ヷ], 0x30F8:[ヸ], 0x30F9:[ヹ], 0x30FA:[ヺ],)
    (CHARSINTYPE D 12 0x2010:[‐],)
    (CHARSINTYPE D 13 0x2013:[–], 0x30A0:[゠],)
    (CHARSINTYPE D 14 0x301C:[〜],)
    (CHARSINTYPE D 15 0xFE30:[︰], 0xFF1A:[:], 0x30FB:[・], 0xFF1B:[;],)
    
    

    参考:

    1. https://stackoverflow.com/questions/18877381/math-in-vim-search-and-replace

    相关文章

      网友评论

          本文标题:vim 替换十六进制为字符 hex2char

          本文链接:https://www.haomeiwen.com/subject/gduwcltx.html