にたまごほうれん草アーカイブ

はてなダイアリーで書いてた「にたまごほうれん草」という日記のアーカイブです。現在は「にたまごほうれん草ブログ」を運営中です。

今日のお勉強

vimのコマンド

エンコーディングを指定して開き直す。

Windows上で作成したテキストを開くと文字化けするので開き直す。

:e ++enc=shift_jis

参考:vimエディタで「形式を指定してファイルを再読込する」 : サイト更新停滞ちうっ 名無しのVIM使い

編集中のファイルの文字コード、改行コードを変更して保存する

こちらは、保存後のファイルのエンコーディングを変更する方法。

:set fileencoding=utf-8

他に、euc-jp,shift_jisなどを指定可。

  • 改行コード(ファイルフォーマット)の変更
:set fileformat=unix

他に、dos,macなどを指定可。fileformatの代わりにffでもいいらしい。

ウィンドウを閉じずにバッファを閉じる

EmacsでのCtrl-x kのようなことがしたかったわけです。:qとするとウィンドウごと終了してしまうので、そういう場合には、

:bdelete

または、

:bd

でいけるそうな。
参考:Vim documentation: windows

vim協調モード

私がUbuntu環境で普段使用しているSCIM-Anthyだと、挿入モードで日本語を入力したあとにESCでコマンドモードに抜けたときも日本語入力が有効になったままなので、iとかaとか入力すると変なことになってしまいます。それを解決する方法として、UIM-Anthyvim協調モードを使うという方法がありました。

試してみましたが、どうもUIM経由での日本語変換はやりにくかったので、結局SCIMに元通り…

エディタでのUTF-8における文字幅の問題

Emacsvimでは矢印などの記号を入力したときに表示される文字幅が半角分になってしまい、表示が崩れることがあります。それぞれのエディタで、以下のようにすることでこの問題を解決できます。
情報元は、Emacs22 + UTF-8 における文脈依存な文字幅の問題についてです。

vimの場合

.vimrcに以下の設定を追加します。

set ambiwidth=double

Emacsの場合

.emacsに以下を追加します。

(utf-translate-cjk-set-unicode-range
 '((#x00a2 . #x00a3)                    ; ¢, £
   (#x00a7 . #x00a8)                    ; §, ¨
   (#x00ac . #x00ac)                    ; ¬
   (#x00b0 . #x00b1)                    ; °, ±
   (#x00b4 . #x00b4)                    ; ´
   (#x00b6 . #x00b6)                    ; ¶
   (#x00d7 . #x00d7)                    ; ×
   (#X00f7 . #x00f7)                    ; ÷
   (#x0370 . #x03ff)                    ; Greek and Coptic
   (#x0400 . #x04FF)                    ; Cyrillic
   (#x2000 . #x206F)                    ; General Punctuation
   (#x2100 . #x214F)                    ; Letterlike Symbols
   (#x2190 . #x21FF)                    ; Arrows
   (#x2200 . #x22FF)                    ; Mathematical Operators
   (#x2300 . #x23FF)                    ; Miscellaneous Technical
   (#x2500 . #x257F)                    ; Box Drawing
   (#x25A0 . #x25FF)                    ; Geometric Shapes
   (#x2600 . #x26FF)                    ; Miscellaneous Symbols
   (#x2e80 . #xd7a3) (#xff00 . #xffef)))

ちょっと長いけど、表示が崩れる状況が直ってよかった。