iTerm2越しにコマンドラインの単語で戻る進むのショートカットを追加する
新しいMacを構築中です。
気づいたことをメモっておこうかと思っています。
bashなどのコマンドラインでEsc+f Esc+b で単語移動できますが、 押しづらいのでiTerm2で接続するときに Command+f と Command+b に置き換えています。
iTerm2のPreferences > Keys の Key Mapings の下の + を押して
追加する項目を設定します。
Keyboard Shortcut で Command+f を押して
Actionで Send Escape Sequenceを選択して
Esc+fなどに設定すればOKです。
他にも設定可能なので見ておくといいかもしれないですね。
Accept: */*; で MissingTemplateになってしまうのを防ぐ
topページヘのアクセスでたまに変なExceptionが出てたのです。
ActionView::MissingTemplate (Missing template pages/top, application/top with {:locale=>[:ja], :formats=>["*/*;"], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :slim, :coffee, :jbuilder]}. Searched in:
一見何がおかしいのかよくわからなかったですが、
HTTP Headerが Accept: /; で送られるとエラーになり Accept: / とセミコロンがない場合はhtmlのテンプレートが判断されて セミコロンがついてるとMissingTemplateになってしまうようです。
UAをみていると Baidu Browser のようですが、ExceptionがでてSlackなどに通知されてしまうのも何なので
ActionView::MissingTemplate (Missing template mall_front/pages/top, mall_front/application/top with {:locale=>[:ja], :formats=>["/;"], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :slim, :coffee, :jbuilder]}. Searched in:
ApplicationController に以下のように設定すると防げました。
before_atcion :default_request_format def default_request_format request.format = :html if request.format == '*/*;' end
あんまり困っている人がいないのか、ググっててもあまり載ってないですね。
新しいMacBook Proを買いました。
新年あけましておめでとうございます。
しばらくブログを書けていなかったのですが、
気づけば2016年も終わり2017年になってしまいました。
早いものです。
年末に頼んでいたMacBook Proが届きました。 www.apple.com
まだ使い始めてセットアップなどしてるところですが、
今回はUSキーボードにして少し操作にもなれないといけないのですが、
会社ではUSキーだったので、これはこれで少しすれば慣れそうです。
何と言っても日本語キーボードよりもホームポジションがセンターよりになっているのが
気持ちよく作業できますね。
ただ、新しいMacBook Proでタッチパッドが大きくなってしまったので右手が少し触れてしまうこともあり、
その点は少し残念ですね。
Touch Barはまだうまく使いこなせてないのですが、
カスタマイズしておきたいところですね。
しばらく使ってみてまた感想書いておきます。
簡単ですが、今年もよろしくお願いします。
Windows、Linux、Macで開発している場合のGitの改行コード
Gitで管理してるファイルの改行コードが混在してないですか?
いままではnkfを使って改行コードをLFに直したりしてたのですが、
Git側でLFになおしてくれる設定がありました。
なんてこった。。いままで無駄なことして履歴を汚してたなんて、、
core.autocrlf
の設定を変更しておけばよかったようで
git config --global core.autocrlf false
デフォルトはfalseのようで、変換しないでそのままコミットしてチェックアウトするようです。
git config --global core.autocrlf true
trueするとコミット時にLFに、チェックアウト時にCRLFに変換してくれます。
git config --global core.autocrlf input
inputを設定するとコミット時にLFに変換してくれますが、チェックアウト時は何もしないでくれます。
この設定だといろいろな環境で扱っている場合便利そうですね。
単一の文字列中から文字列を探すときは正規表現は使わない
文字列から文字列を探すときには正規表現をよく使ってしまいます。
Effective Rubyには =~ などのPerl風機能を避けようということが書かれています。
RuboCopでは逆に=~を使うように促されてしまってなんのこっちゃと思っていたのですが、
ruby-style-guideの内容を見てると
単一の文字列中から文字列を探す場合は正規表現を使わないというような記述がありました。
ruby-style-guide/README.ja.md at japanese · fortissimo1997/ruby-style-guide · GitHub
string['text']
と書けば良いようです。
こんなこともできるのですね。
文字列の添字に直接正規表現を入れることもできるようで、
match = string[/regexp/] # マッチした内容が得られる first_group = string[/text(grp)/, 1] # キャプチャグループの内容が得られる string[/text (grp)/, 1] = 'replace' # string => 'text replace'
こんなこともできるようです。
便利ですね。
Unite.vimの履歴を使う
最近、特定のリクエストで Railsのformatsの値が/;に置き換わってしまってMissing templateになるという事例に悩まされています。
原因がいまいちよくわからず。。知ってる人がいれば教えて下さい。
本題ですが、
以前からUnite.vimの履歴があればいいなと思っていたら、
GitHub - Shougo/unite.vim: Unite and create user interfaces
history/unite
というsourceが増えていたのですね。
感激です。
これで履歴を呼び出すことができそうです。
ありがたや〜
あと知らない間に
grep/git
のsourceも増えていてこちらも使ってみようかなと
git grep の sourceは以前から
こちらを使っていました。
こちらはいきなり入力モードで入れるので使い方に合わせて使ってみようかと思います。
シェルで前回使った引数を使う
最近、itamae, serverspecと格闘中です。
production, stagingでうまく切り替えてroleの管理ができないか。
なんて考え中です。うまいことできないかしら。。
本題ですがzshなどを使っているケースで
gd aaa bbb ga aaa bbb
※gdはgit diff , ga は git addのaliasです。
などのコマンドを打つときに
前回使った引数を使いまわしたいシーンが度々あります。
mkdir と cdを使うケースの場合は
mkdir aaa cd $_
引数がひとつの場合は$_ を使うことで乗りきれるのですが
複数ある場合はこれではうまくいきません。
調べていると
- !!で前回のコマンドのhistoryを使えて
- !$で前回の引数の最後の値
- !:1で前回の引数の最初の値
が使えるので
gd aaa bbb ga !:1-$
と打つことで複数の引数に対応できるようです。
ただ$_とは違うので一旦展開が差し込まれる挙動が省略されて欲しいところです。
少し話は変わって
yum install hogehoge
と打った時に
sudo忘れなんてこともありますが
!!を使うことで
sudo !!
とすると前回のコマンドをsudoで実行ということも簡単にできそうです。
でもやっぱり C-p、C-a でsudoと打ってしまいそうですが。。