norinyang メガ進化!

気ままに色々

Sublime Text 3 でカーソルを見失う問題

Sublime Text の カーソルとカーソル行ハイライトが全く主張してくれなくてどこにいるかしょっちゅう見失う
もっと、原色ばりばりに光り輝いてほしい

という訳で、どうにかしてみた

http://tmtheme-editor.herokuapp.com/

Sublime Text のテーマを自分で作れる&プレビューがみられるちょういけてる便利ツール!

がしかし、このツール初見だとどうしたらいいかいまいちわからんし
そもそも自分が今使っているテーマをベースに編集したいけどどうすんの?
ってなる
英語厳しい

ベースとなるテーマを選ぶ

デフォルトではMonokaiというテーマが選ばれているはずで、どこからかえればいいかわからない
URL構造みればどうなってるかわかるが、Monokaiってなってるところをベースにしたいテーマ名二かえたらよいが
対応してる/してないとかあるしGUIからやる方法を知っておく方が何かとよい
f:id:norisu0313:20140219020813j:plain

画面左上このボタンを押すとテーマの一覧が出てくる
f:id:norisu0313:20140219021213j:plain

こんな感じ

好きなテーマを選んでクリック!

今回はみんな大好き Flatland を選択しました。

カーソル行ハイライト色を変える

カーソル行ハイライトの設定がは General タブ内なので切り替え
f:id:norisu0313:20140221010709j:plain

Line Highlight って項目がある
f:id:norisu0313:20140221010935j:plain

この項目がカーソル行ハイライトの色になるのでこれを書き換える
Color の部分クリックすると GUI のカラーパレット出てくるので適当に変更

残念なことにプレビューにちゃんと表示されないので、うまくいっていない訳ではないです

実際に Sublime Text 3 に適用

まずはいじったカラーテーマをファイルとしてダウンロード
f:id:norisu0313:20140221011300j:plain

Mac なら
/Users/[ユーザー名]/Library/Application Support/Sublime Text 3/Packages/Color Scheme - User/
にダウンロードしたファイルをおいて
Sublime Text をきどうして、普通に追加されたテーマを選べばOKです

Windowsだとパスが違うので注意

だがしかし

さて、ここまでやって思った、カーソル行の色濃くしたから行はわかるようになったけど、行の中でカーソルがどこにあるかわからない問題解決してない!?
元々vimerでかつSublime TextでもVintageモード使っている身としては
f:id:norisu0313:20140221011909j:plain
こう
なんというかブロックぽくなってほしい

Sublime Text 2 の場合は
SublimeBlockCursor - Packages - Package Control
このパッケージを入れたらカーソルをブロックにすることができる

しかし Sublime Text 3 は未対応で、直接 github から落としてきてパッケージの下にぶち込んだりしても動きません

ST3 Support · Issue #21 · netpro2k/SublimeBlockCursor · GitHub
完全に放置されてることがわかる

という訳でこの Sublime Text 3 で使えるように直してみた
といっても、解決方法は上記URLに書かれているのでそれを実践

まずは落としてくる

cd /Users/[ユーザー名]/Library/Application Support/Sublime Text 3/Packages/ 
git clone git://github.com/netpro2k/SublimeBlockCursor

SublimeBlockCursor.py の書き換え

変更するべきなのは2箇所

6行目

    def view_is_widget(view):

となっているところを

    def view_is_widget(self, view):

に変更

25行目

        if view_is_widget(view) or (is_vintage_mode and not command_mode):

となっているところを

        if self.view_is_widget(view) or (is_vintage_mode and not command_mode):

に変更

これでブロック調こカーソルになったはず

f:id:norisu0313:20140221015237j:plain

Facebook/Gunosyからはてなブックマークする

IFTTTとPocketを使ってはてなブックマークしてみた - norinyang メガ進化!

昨日こんな日記を書いたんだけど、どうもFacebook/Gunosy等のアプリから連携するとまどろっこしい
#hatebu って毎回うつの結局こすとあがってて糞みたいな感じである

なので別の手がないか調べてみた
ようはPocketに保存できたらいいので

ページが見つかりませんでした
(なんかタイトルが出ない場合がある)
122: Gunosy→Pocketへ、URLをコピーするだけで送れるClippedが便利!無料!
http://nhnl.yosshi7777.com/archives/1682/

こちらの記事を参考にしてみた

このアプリを使うとPocketに簡単に追加可能
アプリ自体はいろいろなサービスに対応していてよい感じ

この方法でいけてないのは

  • あらかじめアプリを立ち上げる必要がある
    • まぁ許容範囲
  • 割と頻繁にバックグラウンドで立ち上げてるclippedのセッションが切れる
    • 切れたらclippedをもう一度立ち上げないとダメ

なんかもっといけてる方法ないかなー?

IFTTTとPocketを使ってはてなブックマークしてみた

Twitterクライアントみている時にブクマするのって結構面倒
メールでぶくまする機能とかあるけどふぁぼる感覚でなんとかできないもんか?と思っていろいろ調べつつ考えてみた

メールではてなブックマークに追加できる機能をリリースしました - はてなブックマーク日記 - 機能変更、お知らせなど
IFTTT / Put the internet to work for you.

IFTTTはご存知の通り「if this then that」日本語でひらたくいうと「あれしたらこれする!」である
はてながサポートされてれば話が早いんだけど、残念ながらされていないので多少強引さが必要

Pocketに追加したらブクマする

Pocket (Formerly Read It Later)

Pocket (Formerly Read It Later)

  • Idea Shower
  • ニュース
  • 無料

IFTTTのレシピてきには「Pocketに追加されたらメールを送る」です
たくさんチャンネルが用意されている中に、Gmailからメールを送る機能があります
はてなブックマークにはメールを使ってブックマークする機能があります
なので、Pocketに追加されたらGmailからメールを送ることでブックマークすることができます

IFTTT Recipe: Pocket -> Hatena Bookmark connects pocket to gmail

このレシピを使うと
Pocketに追加されたときに「To address」に指定したアドレスへ

  • メールタイトル
    • "{Pocketに追加されたページのタイトル} "
  • 本文
    • ”[unclassified] {Pocketに追加されたページのタイトル} {Pocketに追加されたページのURL}”

という内容のメールを送ります

To address には はてなブックマーク
"設定->メール->メール投稿用アドレス" に書かれているものを入れます

これで、Pocketに追加するとはてなブックマークに unclassified タグをつけて登録することができます

Twitter だけじゃなくて Pocket に対応してるアプリだったら何でも同じことが実現できるので
Flipboard とかでも同じことができる!

#hatebuがついた投稿をしたときにPocketに追加する

目的は達成したけど、ほかのサービスからもいい感じに登録したいと思った
Pocket未対応のアプリ多いけどほとんどのアプリはTwitterに対応しているので
Twitter に #hatebu で投稿したらそれを Pocket に追加する IFTTT のレシピも導入してみた

IFTTT Recipe: Twitter #hatebu to Pocket  connects twitter to pocket

これを使うことで #hatebu 付きで Twitter に Post すると Pocket に追加されて、結果的にブクマされようになった

Chrome拡張とかからブクマするときも #hatebu ってコメントに書いて Twitter にシェアしたら Pocket に追加される
メールは無駄うちするけど、まぁいいでしょう!気にしたら負け

Pocketの内容とはてぶの内容が同期されて便利!
こっちの使い道は主にChrome拡張とGunosyになりそう

まとめ

こんな感じにとりあえずしてみたけど使いやすいかとかはこれから運用してみる
しばらくはがんばれそうなきがしている
結果こんな感じで落ち着いたけど最初はファボったらメールを送ってブクマしようとしてた
これでもできたんだけど、URLつきじゃない投稿をファボったときにIFTTTのエラーページがブクマされるというとても悲しい事件が起きたので、この案は却下しました

MBPのSSD換装をした

MBP買い替えた
ちょうど彼女がPCを買い替えを考えていたのであげることにした
とはいえ、そこそこ使っていて動作が重くなってきたので買い替えた訳であってそのまま渡すのは忍びない
ということでSSDに換装した

  • マシン
    • Mac Book Pro Mid 2010
  • ディスク
    • HDD 250GB

彼女はそこまでガッツリ使う訳じゃないのでストレージもそんなに大きくなくていいにちがいない!
250GBは据え置きでいいだろう
という訳で

Samsung SSD 840 EVO For Laptop PC Upgrade 250GB
を使うことにしました!
f:id:norisu0313:20140216235607j:plain

交換

自作PCはやるけどMACの換装は初めてなのでちょっとドキドキ
やり方は
【実録】旧いMacBook Proを快適に現役続行させる、SSD換装のやりかた : ライフハッカー[日本版]
を参考にやりました
画像多いし、すごくわかり安いし思ったより簡単だった

OSインストール

今回はあげるものなのでデータ復旧は必要ないのでHDDからSSDに交換したら次はOSをインストールしました
OS X Mavericks: OS X を消去して再インストールする
Appleのサポートページの通りにやればいいんです

さしたばかりのSSDは当然ながらフォーマットされてません
フォーマットされていないディスクにインストールできないので
ディスクユーティリティを先に起動してフォーマットしておく必要があります
これ結構忘れがちだと思うので気をつけましょう

TRIMを有効化

最後に起動してみて問題なさそうだったら TRIM を有効にしておきましょう!
これをやらないと1年後とかに悲しい気持ちになる可能性があります
忘れずにやっておきましょう

前述のSSD交換記事でもやり方書いてありますが
Mac で SSD の TRIM 有効化 | はずまないブログ
こっちの記事を参考にしてやりました
TRIMの変更方法に特化して詳しく書いてあるのでとても参考になった

まとめ

交換してみたらすげー簡単だったので、SSDだけじゃなくてメモリもかえたい欲求が出てきた
SSDだけあげてもメモリ積まないと意味ないんじゃないかなーとか考えてたけど、いざ起動してみたら爆速だった
もはや買い替えとか実は必要なかったんじゃないかって感じだった
くっそー!!!
やっぱHDDからSSDだとIOのパフォーマンス全然違うし、HDDは3年近くたってるから性能劣化してるしIOって大事だなぁと思った

とりあえず新しいマシンは3年でSSD交換して5年ぐらい戦いたい気持ちです

忘れてたこと

せっかく開くんだから中掃除する用意しておけばよかったという後悔
エアダスターとか買っとけばよかった
今度やってあげよう

VESSEL 精密ドライバーセット TD-56

VESSEL 精密ドライバーセット TD-56

E-Value 精密ドライバーセット EPS-650

E-Value 精密ドライバーセット EPS-650

VimからSublime Text 3に移行してみた

Sublime Text っていうのがいけているらしいという事で vim から移行してみた

vim ライクな操作にするために色々やってなんとか違和感最小限で使えるようになったのでメモ
まぁ、vim もちゃんと使いこなせていたかと言われるとかなり怪しいのですが。。。

まずはインストール

下記URLから使っているパソコンにあわせてダウンロード&インストール

http://www.sublimetext.com/3

f:id:norisu0313:20131207211425p:plain

インストールできました。

パッケージコントローラーを入れる

Sublime Text のいいところの一つとしてプラグインが簡単に入れられる事&充実している所だと思います!
が、プラグインを入れるためにパッケージコントローラーを入れる必要があります

下記URLにバージョン毎に必要なコマンドが書かれているので、とりあえずコピーします

https://sublime.wbond.net/installation#st3

メニューバーから View > Show Console を選択します

f:id:norisu0313:20131207212730p:plain

すると下にコンソールが出てきます

f:id:norisu0313:20131207212844p:plain

ここに先ほどコピーしたコードを貼付けて実行します
ちなみに ver3 の場合は

import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read())

再起動します(もしかしたらいらないかもです)
するとパッケージコントローラーが使えるようになります

vim っぽくする

ここから vim ライクになるように設定して行きます

設定編

Sublime Text には元々 vim ライクな操作が出来るようになる設定が存在します
なので、まずはそれを入れます

Sublime Text の設定は Settings - Default / Settings - User / Settings - More の3種類が存在します
Settings - Default と Settings - User が Sublime Text 全体の設定になります
Settings - More は拡張子毎の設定になります

Sublime Text > Preferences > Settings - User を開いてみて下さい
恐らくからのファイルが開くはずです

f:id:norisu0313:20131207213414p:plain

次に Settings - Default の方を開いてみるとなにやら色々設定が書かれていると思います

Settings - Default をいじってももちろん設定は反映されるのですが、名前の通り User に自分用の設定を追記して行きます
設定の反映順が Default > User > More になるので、Userに書いてある設定が Default に書いてある設定よりも優先されます

Vintageの有効化

下記のように User 用の設定ファイルに追記すると vim ライクな操作が出来るようになります

{
    "ignored_packages": []
}

これは適用しないパッケージはない、という設定です

Default の方を見ると

    // List any packages to ignore here. When removing entries from this list,
    // a restart may be required if the package contains plugins.
    "ignored_packages": ["Vintage"]

とかかれており、Vintage というパッケージが無視されている事が分かります
このVintageが vim ライクな操作が出来るようになるパッケージなのです

これで一応は vim ライクにはなりますが、vim から移行してきた人にとってはまだまだ使いにくい状態です

なので、下記の設定を追加します

	"vintage_ctrl_keys": true,
	"vintage_start_in_command_mode": true

vintage_ctrl_keys は ctrl キーを使用する vim のショートカットが使えるようにする設定です
vintage_start_in_command_mode はファイルを開いた時にコマンドモードで始まるようにする設定です

今設定は

{
        "ignored_packages": [],
	"vintage_ctrl_keys": true,
	"vintage_start_in_command_mode": true
}
Vintageouse の導入

これで大分マシにはなってきたはずですが、Vintageousというプラグインを入れる事でさらに vim らしくなります。(Sublime Text 2 では VintageExというプラグインだったようです)

Command+Shift+p をおすと下の画像のWindowが出るはずです
f:id:norisu0313:20131207215024p:plain

ここに Install と入れてみて下さい Package Control が見つかるので Enter をおすと
下の画像のWindowが出るはずです

f:id:norisu0313:20131207215110p:plain

ここにインストールしたいパッケージを入れるとプラグインがインストールされます
Vingateousと入れてみましょう

これで%sでの置換なども出来るようになります
(具体的に何が出来るようになるかは忘れました。。。)

ちなみに下記URLからパッケージコントローラーで入れられるプラグインを探す事が出来ます
https://sublime.wbond.net/

さて、これでかなり vim らしくなったと思います

キーバインド

今度はキーバインドを自分で書いてさらに vim っぽくして行きます

キーバインドに付いても Default / User の設定があります
User に設定を追加して行きます

Sublime Text > Preferences > Key Bindings - User を開きます
からのファイルが開くはずです

f:id:norisu0313:20131207215500p:plain

gt/gT でタブを前後移動出来るようにします
    {
        "keys": ["g", "t"],
        "command": "next_view",
        "context":
        [
            { "key": "setting.is_widget", "operand": false },
            { "key": "setting.command_mode" }
        ]
    },
    {
        "keys": ["g", "T"],
        "command": "prev_view",
        "context":
        [
            { "key": "setting.is_widget", "operand": false },
            { "key": "setting.command_mode" }
        ]
    },
sp で画面の縦分割、vs で画面の横分割がされるようにします
    {
        "keys": ["s", "p"], "command": "simple_clone",
        "args":
        {
            "location": "right",
        },
        "context":
        [
            { "key": "simpleclone_keymap_enabled.right" },
            { "key": "setting.command_mode" },
        ]
    },
    {
        "keys": ["v", "s"], "command": "simple_clone",
        "args":
        {
            "location": "down",
        },
        "context":
        [
            { "key": "simpleclone_keymap_enabled.down" },
            { "key": "setting.command_mode" },
        ]
    },
command + w w / command + w W で画面の前後移動を出来るようにします

command w はSublime Text 的にはファイルを閉じるショートカットになっていますが、必要ないと思うのでつぶしています
この機能なにもタブがない画面があるとバグるみたいですが、それは我慢するしかなさそうでした

    {
        "keys": ["super+w", "w"],
        "command": "focus_neighboring_group",
        "context":
        [
            { "key": "simpleclone_keymap_enabled.down" },
            { "key": "setting.command_mode" },
        ]
    },
    {
        "keys": ["super+w", "W"],
        "command": "focus_neighboring_group",
        "args": {"forward": false},
        "context":
        [
            { "key": "simpleclone_keymap_enabled.down" },
            { "key": "setting.command_mode" },
        ]
    },
command + r で redo 出来るようにします

command + r は Sublime Text の中でもかなりの便利コマンドで関数検索ペレットを開くに割り当てられていますが、後から別のショートカットに割り当てる事にして vim の操作に寄せています

    {
        "keys": ["super+r"],
        "command": "redo"
    },
検索ペレットをcommand+fに割り当てています

command + f はファイルない検索ですが、vimmer は / を使うだろうってことで必要ないはずで
検索=command + fは色々名ツールでデファクトかなと思ったのでこれに割り当てています
実はSublime Textデフォルトのcommand + rとは違ってファイルない検索ペレットではなくプロジェクトない検索ペレットを表示するようにしています。@で始めるとファイルないになるので、@は自分でうてばいいかなぁと思った次第です
関数検索ペレットの詳しい使い方は他のエントリー探して下さい

    {
        "keys": ["super+f"],
        "command": "show_overlay",
        "args": {"overlay": "goto"},
        "context":
        [
            { "key": "simpleclone_keymap_enabled.down" },
            { "key": "setting.command_mode" },
        ]
    },
shift + i に複数行同時挿入を割り当てています。

(カーソル移動 選択) カレントワードを選択する。 すでに文字列を選択中の場合は文字列を検索して順次選択する。
という機能らしく、vimの同時挿入とはちょっと違いますが近い事が出来ます(むしろSublime Text のほうがすごい)

    {
        "keys": ["shift+i"],
        "command": "find_under_expand",
        "context":
        [
            { "key": "simpleclone_keymap_enabled.down" },
            { "key": "setting.command_mode" },
        ]
    },
選択範囲を , でコメントアウトします
    {
        "keys": [","],
        "command": "toggle_comment",
        "args": { "block": false },
        "context":
        [
            { "key": "simpleclone_keymap_enabled.down" },
            { "key": "setting.command_mode" },
        ]
    },
全体はこんな感じ
[
    {
        "keys": ["g", "t"],
        "command": "next_view",
        "context":
        [
            { "key": "setting.is_widget", "operand": false },
            { "key": "setting.command_mode" }
        ]
    },
    {
        "keys": ["g", "T"],
        "command": "prev_view",
        "context":
        [
            { "key": "setting.is_widget", "operand": false },
            { "key": "setting.command_mode" }
        ]
    },
    {
        "keys": ["s", "p"], "command": "simple_clone",
        "args":
        {
            "location": "right",
        },
        "context":
        [
            { "key": "simpleclone_keymap_enabled.right" },
            { "key": "setting.command_mode" },
        ]
    },
    {
        "keys": ["v", "s"], "command": "simple_clone",
        "args":
        {
            "location": "down",
        },
        "context":
        [
            { "key": "simpleclone_keymap_enabled.down" },
            { "key": "setting.command_mode" },
        ]
    },
    {
        "keys": ["super+w", "w"],
        "command": "focus_neighboring_group",
        "context":
        [
            { "key": "simpleclone_keymap_enabled.down" },
            { "key": "setting.command_mode" },
        ]
    },
    {
        "keys": ["super+w", "W"],
        "command": "focus_neighboring_group",
        "args": {"forward": false},
        "context":
        [
            { "key": "simpleclone_keymap_enabled.down" },
            { "key": "setting.command_mode" },
        ]
    },
    {
        "keys": ["super+f"],
        "command": "show_overlay",
        "args": {"overlay": "goto"},
        "context":
        [
            { "key": "simpleclone_keymap_enabled.down" },
            { "key": "setting.command_mode" },
        ]
    },
    {
        "keys": ["super+r"],
        "command": "redo"
    },
    {
        "keys": ["shift+i"],
        "command": "find_under_expand",
        "context":
        [
            { "key": "simpleclone_keymap_enabled.down" },
            { "key": "setting.command_mode" },
        ]
    },
    {
        "keys": [","],
        "command": "toggle_comment",
        "args": { "block": false },
        "context":
        [
            { "key": "simpleclone_keymap_enabled.down" },
            { "key": "setting.command_mode" },
        ]
    },
]

大分 vim ぽっくなった!キーバインドも自分の前の設定にかなり近いこれなら移行できそう

HomeBrew で縦分割 screen

mac には元々 screen が入っているけど縦分割機能を使いたいので自分で入れる事にした
git から HEAD を持ってきて make install すればいいんだけど、やっぱり HomeBrew で管理しておきたい
ちなみに例によってなにも考えずに

brew install screen

しても何も起きない、縦分割する以前にscreenすら落ちてこない
さて、というわけでどうするかというと.rbを書くわけですね
ネット漁ってると情報でてくるけどどうもそのままじゃうまくいかない、ほくの環境が悪いのかもしれないけどごちゃごちゃ書き換えて、実行時にオプションつけてやったらうまく行きました

require 'formula'
 
class ScreenVerticalSplit < Formula
  homepage 'http://www.gnu.org/software/screen/'
  url 'http://ftp.gnu.org/gnu/screen/screen-4.0.3.tar.gz'
  mirror 'http://ftp.gnu.org/gnu/screen/screen-4.0.3.tar.gz'
  md5 '8506fd205028a96c741e4037de6e3c42'
 
  head 'git://git.savannah.gnu.org/screen.git', :branch => 'master'
 
  if ARGV.build_head?
    depends_on 'autoconf'
    depends_on 'libtool'
    depends_on 'automake'
  end
 
  def install
    if ARGV.build_head?
      Dir.chdir('src')
      system "./autogen.sh"
    end
 
    system "./configure", "--enable-colors256",
                          "--prefix=#{prefix}",
                          "--mandir=#{man}",
                          "--infodir=#{info}"
    if ARGV.build_head?
      system 'bash osdef.sh'
    end
    system "make"
    system "make install"
  end
end

最終的にはこんな感じ、タブの枚数増やしたい方はconfigureのオプションでなんか指定したら行けたはず(何だったか忘れた)
一応このままで縦分割なしの screen も落とせるはず

さて、この状態で

brew install --HEAD https://gist.github.com/raw/3060cc5b88312b8573df/e5be273375e4fe3b0c90dba19de4ae15cb1fb17d/screen-vertical-split.rb

すると!!!
うまく行きません、エラーになります
なんでかはよく分からないけど。。。

Can't exec "aclocal"

っていわれます
automake は依存関係で解決してるつもりなのでうまく行かないはずないんだけどなぁって感じです
実際に git から直接落としてきて make したら普通にビルドできているので、HomeBrew の問題っぽい
さて困ったどうしたもんかというわけで

READ THIS: https://github.com/mxcl/homebrew/wiki/troubleshooting

ここを読めと言われたので読んでみる事に

Try using the old environment, e.g. brew install --env=std graphviz

これが何か行けそうな気がする!
old environment って何が古いねん!!と思いつつ

brew install  --env=std --HEAD https://gist.github.com/raw/3060cc5b88312b8573df/e5be273375e4fe3b0c90dba19de4ae15cb1fb17d/screen-vertical-split.rb

してみた

/usr/local/Cellar/screen-vertical-split/HEAD: 25 files, 948K, built in 26 seconds

出来た!!
なんで。。。?
実際に縦分割できるか確認
screenってたたくと mac のデフォルトのが開いてしまうので絶対パスで指定

/usr/local/Cellar/screen-vertical-split/HEAD/bin/screen

で Ctrl+a | で縦分割で出来た!
あとはシェルの rc ファイルで ailias 張れば終わり

一日近くかかった絶望。。。orz