投稿

10月, 2012の投稿を表示しています

Vimでカーソル位置などの設定保存 と .vimrc

vimrcを見なおしたら結構おかしいとこがありました…

あと、Vimを開いたり閉じたりしまくりますが
そのために毎回移動しなおしたり折りたたみを開いたり閉じたりは面倒です
そこで以下のように設定しました。


" 設定の保存と復元 autocmd BufWinLeave * silent mkview autocmd BufWinEnter * silent loadview " 2012/10/30 修正 autocmd BufWinLeave ?* silent mkview autocmd BufWinEnter ?* silent loadview

2012/10/30追記
パターンマッチが修正前だと:helpなどにも反応してしまうので修正

Vimにはセッションビューというものがあります。
セッションが全ウィンドウとグローバル設定などで、ビューがウィンドウ毎のローカル設定らしいです。
簡単に言うとビュー∈セッションだろうか?

上記設定では、バッファがウィンドウから非表示になる時に発生するBufWinLeaveイベントでmkviewを使いビューを保存します。
同様に、バッファがウィンドウに表示される時に発生するBufWinEnterイベントでloadviewを使いビューを復元します。

viewはファイルごとに作成、保存され標準だと~/.vim/viewに書きだされます。
viewoptiosを設定することで保存と復元をする設定を選べます。

以下、.vimrc
いろんなとこを参考にしました。


"-------------------------------------------------------------------------------" " Vim Option By mopp "-------------------------------------------------------------------------------" " viとの互換をオフ set nocompatible " バックアップ作成 set backup set backupdir=$HOME/\.vim_backup set writebackup "…

Mac OS X で ターミナルから関連付けアプリを開く

OS X 固有のコマンドらしいです
存外に便利なのでメモ

# 関連付けられたエディタで開く open hoge.txt # TextEditで開く open -e hoge.txt # アプリケーションを指定して開く open -a /Applications/Huga.app ./hoge.txt # Finderでディレクトリを開く (カレントディレクトリにフォーカスされる) open . # Finderでhoge.txtがあるディレクトリを開く (hoge.txtにフォーカスされる) open -R ./hoge.txt # 標準入力を標準エディタに新規ファイルとして出力して開く open -f # プログラム実行結果を標準エディタに出力 ./a.out | open -f
これ以外にもオプションが幾つか用意されてるようです

それにしてもFinderは使いづらい…

Mac の iTerm2 と Vim の 全角記号の問題について

イメージ
たまに気になっていた事をふとググってみたら解決したのでメモメモ

普段はMacのiTerm2でVimをいじっているのですが
全角記号が 以下のようになってしまいます。






Vimのオプションで
>set ambiwidth=double
とすると直るらしい

ですが、iTermではそれだけだと不十分なので
Preferences…>Profile>Text>Double-Width Charactersの
Treat ambiguous-width characters as double width.
にチェック


そうするとちゃんと表示され、移動もできます。

あまり、そういう記号は使う機会はないですが
気になるところではありました。

reallocで動的メモリ確保

書いたのでメモ書き


#include #include #include int main(void){ char *str, *strDummy, **data, **dataDummy; int i, j, sCnt = 0, lCnt = 0; // メモリ確保 str = (char *)malloc(sizeof(char)); if(str == NULL){ fprintf(stderr, "allocation is Faild\n"); return -1; } // メモリ確保 data = (char **)malloc(sizeof(char*)); if(data == NULL){ fprintf(stderr, "allocation is Faild\n"); return -1; } printf("EOFで入力終了\n"); while((*(str + sCnt)=getchar()) != EOF){ // 改行コードが来たら行の終了 if('\n' == *(str + sCnt)){ // 改行文字を終端子へ書き換え *(str + sCnt) = '\0'; // メモリを再確保 dataDummy = (char **)realloc(data, sizeof(char *)*(lCnt+1)); if(dataDummy == NULL){ fprintf(stderr, "allocation is Faild\n"); return -1; }else{ data = dataDummy; } // メモリを確保 *(data + lCnt) = (char *)malloc(sizeof(char*)*(sCnt+1)); if(*(data + lCnt) == NULL){ fprintf(stderr, "allocation is Faild\n"); return -1; } // 文字列格納 …