Vimでウィンドウの移動を少し楽にする設定

Mac

Emacsの記事ばっかりでVimからEmacsに乗り換えたのか??と思われると寂しいので、Vimのウィンドウを便利にする設定の紹介です。。。。といってもたいしたことはしていないのですが。

Vimの設定ファイルに以下を追加します



set statusline=[%{winnr('$')>1?''.winnr().'/'.winnr('$'):''}]\ %<\ %f\ %m%r%h%w%y%{'['.(&fenc!=''?&fenc:&enc).'\|'.&ff.']'}%=%l/%L\ (%P)

nnoremap <silent> <TAB> <C-w>w

現在のステータスバーの設定がある人はそこに
[%{winnr('$')>1?''.winnr().'/'.winnr('$'):''}]の部分を追加します。

上記の設定をするとステータスバーが以下の画像のような表示になります。

vimscreen.png

一番左に表示されているのが分割ウィンドウの番号なので、ノーマルモードで 「移動したいウィンドウの番号<TAB>」 と入力すると、そのウィンドウに移動することができます。もしタブに割り当てするのは。。。という場合は、「移動したいウィンドウの番号<C-w>w」 で移動することができます。上の画像のウィンドウに移動するときは「1<TAB>」

よかったらつかってみてください。

でわでわ、たかともでした。

Tags:

コメントはありません

Emacs で Objective-Cのメソッドを補完する。Anything.el

Mac

Emacs テクニックバイブルを手にいれたかた、どれぐらいいるんでしょうか?

たかともはいまだに購入を迷っています。知っていることも多いというのが一番の悩み。最後の方のAnything.elの章はものすごく手元にほしいのですが、それだけのために購入していいものかというところです。

そんなわけでAnything.elを使ってObjective-Cのメソッド名を補完するanything-c-sourceを作ってみました。

導入にあたって必要なもの

Anything.elはもう導入できているものとして、class-dump,stClass-dumpについては、この記事を参照にインストールしてください。ということで、あとはEmacsの設定ファイルにコードを追加していくだけになります。


(add-hook 'objc-mode-hook
    (lambda ()
        (define-key objc-mode-map (kbd "C-;") 'anything-objc-complete)))

;; anything-c-source-stClass-dumpをつくる。
(defvar anything-make-objc-method-command "stClass-dump %s")

(defun anything-c-make-objc-method-init ()
  (start-process-shell-command "stClass-dump" nil
                               (format anything-make-objc-method-command
                                       anything-pattern)))

(defvar anything-c-source-stClass-dump
  '((name . "stClass-dump")
    (candidates . anything-c-make-objc-method-init)
    (action . anything-c-make-objc-insert-action)
    (requires-pattern . 3)
    (delay)))

(defun anything-c-make-objc-insert-action (line)
  (let ((selected-line (string-match " *\\(.*\\)$" line)))
    (insert (match-string 1 line))))

(defun anything-objc-complete ()
  (interactive)
  (anything-other-buffer '(anything-c-source-stClass-dump)
                         "*anything-objc*"))

使い方

iPhone開発に使う場合

  • -i : iOS SDKに含まれるフレームワークをすべて表示
  • -i フレームワーク名 : フレームワーク名を検索
  • -i フレームワーク名 -a : フレームワークに含まれるメソッド・プロパティを検索
  • -i フレームワーク名 -f : フレームワークに含まれるメソッド一覧
  • -i フレームワーク名 -f hoge : フレームワークに含まれるメソッドでhogeを含むものを検索

Mac開発に使う場合は -i を -m に変更してください。

選択した項目はカーソル位置に挿入されるようになっています。また以下のように設定しておくとメソッド名をほとんどみられるようになっておいしいかもしれません。


(setq anything-candidate-number-limit 30000)
(setq anything-lisp-complete-symbol-set-timer 500)
(setq anything-mp-highlight-delay nil)
(setq anything-mp-highlight-threshold nil)

まだ設定したばかりですが、 「-i uikit -f numberOf…」のように検索して、メソッドを選択していくような使い方を想定しています。=他の機能はおまけ。よかったら試してみてください。そのうち「-(void)hotehote」をそのまま入力するのではなくて、 [hogehoge addSubView:]のような形での入力もできるように仕様と思っています。

でわでわ、たかともでした。

おまけ: anything の入力をするときに /Applications/Safari.app などすると Safariで使っているメソッドが見られるようになっています。

Tags:

コメントはありません

Vim で他のウィンドウをスクロールさせるスクリプト

Mac

Emacsをいじっていて、すごく楽だったのが別の分割ウィンドウをスクロールさせるコマンド

ちょっと横に開いたファイルをみるときとか、かなり重宝したのでVimでもできないかなぁ〜と探してみたのですが、見つからなかったのでさくっとスクリプトを書いてみました。



nnoremap <C-`> :<C-u>call g:ScrolOtherWindow(1)<CR>
inoremap <C-`> <Esc>:<C-u>call g:ScrolOtherWindow(1)<CR>i
nnoremap <C-~> :<C-u>call g:ScrolOtherWindow(0)<CR>
inoremap <C-~> <Esc>:<C-u>call g:ScrolOtherWindow(0)<CR>i

function! g:ScrolOtherWindow(direction)
    let current = winnr()
    if a:direction == 1
        wincmd w
        execute "normal \<C-d>"
        execute current . "wincmd w"
    else
        wincmd w
        execute "normal \<C-u>"
        execute current . "wincmd w"
    endif
endfunction

たしか元のウィンドウに戻るコマンドがあったと思ったのですが、探すよりもこれぐらいなら書いてしまった方が早いかな?なんておもったので、winnr()を使って現在の分割ウィンドウに戻るようにしてしまいました。実際には Control + `・Control + ~ を使わずに Option + `・Option + ~ に割り当てて使っています。好きなキーバインドに割り当てて使ってください。

うむ、だんだんVimが便利になってきた♪

ちなみにこのスクリプトをつくったのはVimShellで前回の記事で紹介したclass-dumpを拡張したものをつかったときにウィンドウを移らずにチェックしたかった。それだけだったりします。意外と便利だと思うのでよかったらVimの設定ファイルにいれてみてください。

でわでわ、たかともでした

・・・というか、もともとこの機能あったらごめんなさい>< Vimをバカにしてごめんなさい

コメントはありません

Objective-Cの長いメソッド名に悩まされないのですっ!!

Mac

Objective-Cのメソッド名って長くって覚えられない。そんな自分のためにclass-dumpというシェルスクリプトを利用して、簡単にメソッド名を検索できるスクリプトを作ってみました。といってもclass-dumpにちょっとオプションを追加しただけのスクリプトですが。

インストール方法

  1. まずはここからclass-dumpというシェルスクリプトをダウンロード。
  2. PATHの通った場所にclass-dumpを移動。PATHの通った場所はターミナルで「echo $PATH」で確認してください。
  3. 次にここからstClass-dumpをダウンロード
  4. class-dumpを移動させたフォルダにファイルを移動させる。
  5. ターミナルで「cd 移動させたフォルダ」「chmod +x class-dump stClass-dump」とコマンドを打つ。

これで準備は完了です。

class-dumpに追加したオプションとして -i と -m があります。

-i オプション
iOS SDKに含まれるフレームワークからの検索

$ stClass-dump -i
iOS SDK に含まれるフレームワークをすべて表示
$ stClass-dump -i フレームワーク名 (拡張子はいれない、大文字小文字は無視します)
指定したフレームワークを検索
$ stClass-dump -i フレームワーク名 -a
指定したフレームワークのメソッド名、プロパティをすべて表示
$ stClass-dump -i フレームワーク名 -f hoge
指定したフレームワーク内のメソッドでhogeを含むメソッドを検索
-m オプション
Macのフレームワークからの検索。使い方は -i オプションと同じです。
-m オプションも -i オプションつけずに使った場合
class-dumpと同じ挙動になっています。

-i -m オプションをstClass-dumpコマンドの後につけた場合、それぞれフレームワークを検索してclass-dumpに渡しているだけのスクリプトなので、-i -m オプション以外はclass-dumpのオプションがそのまま使えるようになっています。詳しい使い方を知りたいときは class-dump –helpでもしてみてください。

class-dumpの機能としてバイナリファイルに含まれているヘッダーを出力できるようになっています。

$ stClass-dump /Applications/Safari.app/Contents/MacOS/Safari などするとSafariで使われているクラスやメソッドがみれて楽しいですよ〜。ためしてみてください♪

たかともが、いちばん使うのは $ stClass-dump -i uikit -f hoge 。

$ class-dump /Developer/Platform/iPhoneOS なんちゃら〜 -f hoge が長い。。。という理由、それだけ。

みなさんも使ってみてくださいね。

でわでわ、たかともでした。

追記1: もしSDKのバージョンがかわったらファイルのFWFOLDERの部分を直してください。別のフォルダを追加したい場合もFWFOLDERに追加すれば使えるので、外部のフレームワークを入れているフォルダがあれば、そのフォルダも追記してください。

追記2: バグ?

  • フレームワークの指定が1つしかできない。2つ以上のフレームワークの串刺し検索はできない。
  • Cocoa.framaworkが検索できない。AppKit、Foundation、CoreDataを指定して使ってください。

1つめのフレームワークの指定に関してはスクリプトを変更することで対応できるのですが、2つめのCocoa.frameworkに関してはclass-dump自体がCocoa.frameworkを指定したときに検索ができないので、対応できません。ただし、Cocoa.framework自体はAppKit、Foundation、CoreDataをインポートしているものなので、AppKit、Foundation、CoreDataを指定して検索することで参照することはできるようになっています。

Tags:

コメントはありません

Emacs テクニックバイブル 〜作業効率をカイゼンする200の技〜

Mac

本日が発売日♪

Anything.el という elisp を作った方が書いた本なのですが、
目次をみてみたのですが、目次だけで自分のEmacsが強化されていきそうな気がします。

とくにAnything.elはカスタマイズの幅が広く、知らないことも多いので
1章をまるまるこのelispについて解説があるのはうれしいです。

早く手に入れたい><
しかし予約するのを忘れてしまって、どうしようか。。。

これからEmacsを使い始める人、
というよりはEmacsをすでに使っていて、もう一歩踏み込んだ使い方をしたい。
そんな人にはぴったりな本だと思われます。

いや、まぁ目次みただけですけど。

手に入れた方は感想を聞かせてくださいね。

でわでわ、たかともでした。

Tags:

1件のコメントがあります

Get Adobe Flash playerPlugin by wpburn.com wordpress themes