スパム対策として書込み時にID/PWを要求されますが、ローマ字で ほげ/ホゲ で書き込めるようになります。

カーソル下の文字のコードを取得する

  • ページ: tips
  • カテゴリー: 日本語関連
  • 投稿日: 2007-01-28 10:45:07 (日)

メッセージ

Vim6 Part10より

113 :名無しさん@お腹いっぱい。 :04/10/31 18:27:40
    ちょっと質問させてください。
    statuslineを書き換えていたのですが
    %Bの部分がfencがS-JISだろうがEUCだろうがUTF-8だろうが関係なく
    S-JISのキャラクタコードを返すのに気づきました。(ちなみにgaも一緒でした)
    これってfencに従ったコードで返してくれる方法はないのでしょうか?教えてください。
    ちなみには書き換えたものは以下の通りです。
    statusline=%<%F%h%r%w%m%=%([%{&fileencoding}]%)%([%{&fileformat=='dos'?'DOS':''}]%) [%B] %c%V,%l/%L

114 :名無しさん@お腹いっぱい。 :04/10/31 20:03:46
    そこはencによるコードが返ってるんで、どうしてもってゆーならiconv()とか
    使ってできなくはない…のかな?

115 :名無しさん@お腹いっぱい。 :04/10/31 20:23:05
    >>113
    それ俺も気になってた。
    是非知りたいです。>賢者

116 :名無しさん@お腹いっぱい。 :04/10/31 21:59:14
    function! GetB()
      let c = matchstr(getline('.'), '.', col('.') - 1)
      let c = iconv(c, &enc, &fenc)
      return String2Hex(c)
    endfunction
    " :help eval-examples
    " The function Nr2Hex() returns the Hex string of a number.
    func! Nr2Hex(nr)
      let n = a:nr
      let r = ""
      while n
        let r = '0123456789ABCDEF'[n % 16] . r
        let n = n / 16
      endwhile
      return r
    endfunc
    " The function String2Hex() converts each character in a string to a two
    " character Hex string.
    func! String2Hex(str)
      let out = ''
      let ix = 0
      while ix < strlen(a:str)
        let out = out . Nr2Hex(char2nr(a:str[ix]))
        let ix = ix + 1
      endwhile
      return out
    endfunc
    set statusline=%{GetB()}

117 :113 :04/10/31 23:47:41
    >>116さん
    関数まで書いていただいてありがとうございます。
    %Bと入れ替えて見事にfencに応じて表示されるようになりますた!
    愛用させていただきます〜




トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-10-14 (火) 01:13:17 (1465d)