koturnの日記

普通の人です.ブログ上のコードはコピペ自由です.

2015-08-01から1ヶ月間の記事一覧

WhitespaceをC言語ソースに変換する

はじめに WhitespaceとはBrainfuckやLazyKと同じ難解プログラミング言語と言われる言語のひとつである. 難解プログラミング言語はジョーク言語と言われるが,実装の容易さやシンプルな言語仕様を考えると,とても興味深い言語である. Brainfuckはチューリ…

C言語でメモリ上のコードを実行する

(あまり低レイヤに詳しくない人間がこの記事を書いているので,信憑性については注意すること) C言語といえば,自由度の高いプログラミングである. メモリ上に機械語を書いて,それを実行したいという欲求は多くあるだろう. 例えば,次のHello Worldプロ…

NeoBundleの使い方

Vim

他人の.vimrcを見ていると,NeoBundleを用いてプラグインの管理をしている人が多い. かくいう僕もその一人である. しかし,NeoBundleの事情に詳しくない人は,どうも古い情報を参照しているため,以下のような古い仕様のNeoBundleに沿った記述や,そもそも…

memolist.vimの遅延読み込み設定

Vim

glidenote/memolist.vimというメモを取るためのVimプラグインがある, Shougo/neobundle.vimでこのプラグインを管理し,遅延読み込み設定を行った. NeoBundleLazy 'glidenote/memolist.vim', { \ 'autoload': {'commands': ['MemoGrep', 'MemoList', 'MemoN…

Vimで<C-c>を含むマッピングをするときに注意すること

Vim

前書き まずは,簡単な説明をする. $ vim -u NONE としてvimを立ち上げて, :nnoremap :<C-u>a<C-c>echo 'Hello World!'<CR> のようにマッピングしてみよう. そして,ノーマルモードにて, a<C-c> と入力すると, Hello World! とエコーされず, Type :quit<Enter> to exit Vim と表</enter></c-c></cr></c-c></c-u>…

VimでUndo履歴を消去する

Vim

:help clear-undo を見ると, let old_undolevels = &undolevels set undolevels=-1 exe "normal a \<BS>\<Esc>" let &undolevels = old_undolevels unlet old_undolevels とすれば,undo履歴が消去できるとのこと. しかし,コマンド normal は,マッピングを展開す</esc></bs>…

Vimでルートユーザとして保存する

Vim

rootユーザでVimを起動したり, sudoedit でVimを起動しなかった場合,権限の無いファイルを編集後,保存しようとしても保存できない. 割とあるあるなことだと思う. (特にVimに閉じこもる人にとっては) そんなとき, :w !sudo tee > /dev/null % と実行…

NeoBundleLazyのautoloadのcommands指定で頑張った話

Vim

neobundle.vimには,遅延読み込み機能があり,適切に設定してやることで,プラグインの使用感はそのままで,Vimの起動時間を短縮することができる. autoloadの設定には, ファイルタイプ検出時 filetypes ファイル名検出時 filename_patterns コマンド実行…

Vimに自殺させる

Vim

Vim力を上げるために,過去のvimrc読書会のログを見ていたときに,次のコマンドを発見した. command! Suicide call system('kill -KILL ' . getpid()) Vimは自分自身のPIDを getpid() 関数で取得できる. そうして取得した自身のPIDに対して kill コマンド…