読者です 読者をやめる 読者になる 読者になる

今夜もLab.に独り

蛙飛び込むVimの音

Executor導入【ランチャ】

デスクトップが諸々のショートカット類で埋まっていたのを掃除したついでに、ランチャを導入した。

executor.dk

このExecutorというランチャが好みの挙動に近かった。

採用の決め手は

  • マウス操作不要

  • キーバインドカスタム可能

  • スペース取らない

  • キーワード(任意文字列のトリガ)カスタム可能

といったところか。

設定は導入後にいくらでもできるので、とりあえずデフォルトの設定でインストールしてよい。

キーバインドVimに合わせて(?)^:にカスタムした。

任意のキーワードと特定の操作を、aliasコマンドみたいにカスタム定義できるのがすごく良くて、

例えば俺の設定だと

ssh xxxx

sshクライアントがサーバxxxxへ接続するプリセットで起動する。

スペースあけた後の文字列を引数として渡せるのがえらい。

まれにもっさりする挙動が出るけど,タスクバーの常駐アイコンから殺して再稼働すればとりあえず解決する。

Bootstrap使ってみた

Web作成を頼まれたので、Bootstrapを導入して作成することにした。

名前だけしか知らなかったけれど、Bootstrapって要するにWebページの構造をまるっとクラス名で定義してあるようなものなのね。

まだ4時間くらいしか触ってないけれど、すごくいい感じ。特にグリッドデザイン。

スタック用のメモリ上限設定

FortranのプログラムをOpenMPで並列化した時、
コンパイルが通って実行した時に初めて出る

Segmentation Fault

の原因は、大概の場合は自分のコードミス。

しかし、たまに環境由来のセグ落ちがあって、その一つがメモリ領域の不足らしい。

$ ulimit -a

でメモリ周りの現在の設定が出てくる。

$ ulimit -s xxxxxxx

で、スタック用のメモリの上限が設定できるよ。(俺の環境では単位はkb)
他もいじりたいときは-aで出てきた情報を見て(自己責任で)いじって、どうぞ。

xxxxxxxの部分には整数の他にunlimitedという値も入れられるのだけれど、これは無限という意味ではなく各環境毎に何らかの値に対応するというはた迷惑な表現らしいので、各自自分の環境を見て手計算して具体的な整数を入れるべし。

TeXがコンパイルできない!

後輩のTeXコンパイルがうまくいかないのを修繕した記録。

文字コード由来のエラー

おおよそすべてのファイルはShift-JISUTF-8のどちらかだけれど、 とりあえずutf-8を使いたい人間を想定して話を進めよう。

TeXコンパイル時に

l.1 \begin{document}

?
! Undefined control sequence.
l.2 \section
            {驕^^ef^^bd^^a9蠖薙↑繧^^ef^^bd^^bb繧^^ef^^bd^^af繧^^ef^^bd^^b7...

のようなメッセージが出てきたらまぁファイルの文字コードを変えてやればよい。 そもそも\begin{document}で文句を言われることがおかしいし、2個目のメッセージは完全に文字化け。 今回の場合は、Shift-JISのファイルをUTF-8で読み込んでいるのでそれを修正。

文字コードの変え方はいろいろあるけれど、俺はVimで編集しているのでそのやり方を。

:e ++enc=sjis        "現在のファイルを__Shift-JIS__で開き直す
:w ++enc=utf-8       "現在のファイルを__UTF-8__で保存する

ということで、文字コードを変えたいファイルを開いて上のコマンドをたたいて終了。

++enc=の後ろに指定する文字列の一覧は

:h encoding-values

で確認できる。

バックスラッシュと円マーク

文字コードを修正してもなお、\begin{document]のような 円マーク・バックスラッシュで始まる基本的なコマンドで文句を言われることがある。

このようなエラーは、¥の文字コードを 本来の制御文字としての\と異なる文字のようにTeXが認識しているせいだ(と思う)。 *1

本来的にはバックスラッシュが正式な制御文字(だったはず)なので、 対応としては、変換後のファイルに対して置換操作をすればよい。 (以下、YENとなっている部分が¥だと思ってほしい)

:%s/YEN/\\/g

で操作終了。

1つ目のバックスラッシュが2つ目のバックスラッシュをエスケープしているので、コマンド上ではバックスラッシュが2つ並んでいる。

俺の環境ではバックスラッシュしか打てないので、 ファイルの中の¥を使って¥一文字だけの行を作ってから、 ノーマルモードでカーソル下の文字列を検索するコマンド*を打っている。 こうすると、¥一文字だけの検索がかかるので、 直前の検索履歴を置換対象文字列に指定する書き方を使って

`:%s//\\/g`

とすれば、同様の処理が行える。

改行文字の削除

時折、ファイルの各行末に^Mという文字が存在するファイルと出くわす。

これは改行コードのゴミが残っているので、Vimの置換コマンドで削除すればよい。

:%s/^M//g

で終了。^M^k<CR><CR>(コントロール+k,エンター,エンター)と入力すること。 *2

*1:こちらのページ に書いてある、付録Cの表がすごくわかりやすい。

*2:改行文字は普通の文字ではないので、特殊文字の入力コマンドを使わないと検索できない。

facebookでコメントできなかった事案【Vimperator】

Firefox上でfacebookのコメントに文字を打つと、すごくおかしな挙動が出てとても文章を打てたものではなかったので、しぶしぶiPhoneでコメントしていた。

原因はどうやらVimperatorとfacebookの仕様の衝突らしい。

Facebook comment boxes. · Issue #90 · vimperator/vimperator-labs · GitHub

リンク先でも触れられているように、解決策は

<Shift-Esc>を押してIGNORE ALL KEYSモードに入ってから、

コメント欄をクリックして文章を打てばよいそうだ。

earthquake.gemと端末への日本語入力【一部未解決】

TweetVimすごく使いやすいし好きなんだけれど、自動で流れてくるTLが見たくなってearthquakeを導入。

$ gem install earthquake

$ earthquake

起動してそのままアカウント認証操作終了。 さて動かそうと思ったら日本語入力ができない。

どうやらターミナル上で日本語入力がきかないようで。

えー困ったなぁブラウザとかだと普通にIbusさんが動いて日本語打てるのになぁ

ターミナルは日本語を不自由なく表示してくれているのに、入力ができない不思議。

一応クリップボードから貼り付けると入力できるけど、キーボードで打てないのは勘弁願いたい。

GVim + VimShellという素晴らしい解もあるのだけれど)

とりあえず以下の物をまとめて導入。

$ apt-get install uim-fep uim-utils uim-mozc

せっかくなのでmozcとやらを試すことにした。

これらはログアウトしてから再ログインすると使えるようになるらしい。

おとなしく再ログイン。ターミナルを開いて

$ uim-fep

でターミナルの下にIMの表示が出てくるようになった。

$ sudo vim /usr/share/uim/generic-key-custom.scm

で設定ファイルをいじれるので、generic-onとgeneric-offで検索かけて、該当行をそれぞれ以下のように変更。

(define-custom 'generic-on-key '("<Control> ")
(define-custom 'generic-off-key '("<Control> ")

この設定で^<Space>で入力切替ができるようになる。

後はランチャを適当に"gnome-terminal -- uim-fep"とかで登録すると ターミナル開くたびにいちいちコマンド打たなくて済む。

で、

当然Ibusマッピングが衝突するので、当分はIbusを封印。

まぁ日本語で物を書くならVimで書くんだし、ブラウジングするときはWindowsを使うと割り切ることに。 (根本的な解決には至らず)

うーん、なんで入力だけできなかったんだろ?

スペルチェックと文字カウント

Vimのスペルチェック機能を使ってみたら割と面白かった

以下は

:help spell

で出てくる情報から抜粋。

開いているバッファに対してスペルチェックをonにする

:setlocal spell spelllang=en_us

US以外もあるらしいけど、設定したら怒られたのでとりあえずUS

単語の登録

某MS様の赤線みたいな表示を[消したい|つけたい]ときに。

zg      "カーソル下の単語を正しい(good)単語リストに登録
zw      "カーソル下の単語を間違った(wrong)単語リストに登録

間違えて登録しちゃった時は

zug      "カーソル下の単語に関するzgの取り消し
zuw      "カーソル下の単語に関するzwの取り消し

単語の訂正

間違っている単語の訂正案をVimに出してもらう

z=      "カーソル下の単語の訂正案を出す

画面を覆い尽くす勢いで単語が出てくるので、これだ!と思う単語の番号を打つと訂正してくれる。 何も打たずにするとキャンセル扱いになる。

便利なジャンプ機能

[s      "スペルミスの前方検索
]s      "スペルミスの後方検索

超便利。

ワードカウント

単語数を気にしながら英文アブスト書いてるときは、ビジュアルモードで文章を選択して

g^g

すると、(いろんな情報と一緒に)選択した範囲の単語数合計が出てくるので便利