Emacsのバッファ移動に便利なショートカットキー
問題点
C-xoでバッファ移動はできるけどバッファを3分割以上してると移動がめんどくなってきますよね。
自分は5画面(メイン1つ、サブ2つ、grep-find対象、grep-find結果)があるのでC-xoでは対処できなくなってきました。
そこでバッファをもっと便利に移動する設定を紹介。
よくある設定
Shift+カーソルキーでバッファが移動できるようになります。
めっちゃ便利!
しかし使っているとシフトを押すのがだるくなってきました。
(windmove-default-keybindings) (setq windmove-wrap-around t)
今回の設定
そこでシフトすらいらないように設定。
そもそもEmacsではfbpn使うからカーソルキーなんて使わないって人におすすめ。
カーソルキーは全部バッファ移動に割り当ててしまいましょう.
(global-set-key (kbd "<left>") 'windmove-left) (global-set-key (kbd "<right>") 'windmove-right) (global-set-key (kbd "<up>") 'windmove-up) (global-set-key (kbd "<down>") 'windmove-down)
やっぱりカーソルキーはほしい
手をカーソルキーまで移動するのもめんどいので、C-c+hjklを追加
手を移動させるのはとても面倒なことですよね。
;;; C-x oの代わりのバッファ移動 (global-set-key "\C-cl" 'windmove-right) (global-set-key "\C-ch" 'windmove-left) (global-set-key "\C-cj" 'windmove-down) (global-set-key "\C-ck" 'windmove-up)
まとめ
今はこのC-c+vi操作が気に入っています。
まじ便利
C言語で非アスキー文字を使う方法
諸事情でArduinoを使っています。
さらにArduino ROBOTO LCDを組み合わせています。
さてこのLCDはアスキー文字を表示できますが、実はアスキー外にも文字が定義されています。
その中で-9(unsignedだと247)*1を含んだ文字列を表示する方法で困ったのでまとめます。
無理やりキャストする
できるけどさっぱりクールじゃない。
コードも読みづらいです。
char* s = "a"; char[0] = (char)(-9);
16進数を使う
@keita44_f4 あ、今試したら C が16進エスケープの一部として読まれちゃうから "5\xf7" "C" みたいにして逃げないといけなかった
ただしchar1文字しか使わないならN2文字で区切る必要があります。
char* s = "\xf7";
8進数を使う
@dico_leque @keita44_f4 そういうときは octal で "5\367C" だー。
2014-06-30 19:09:55 via twicca to @dico_leque
char* s = "\367";
まとめ
C難しい
*1:-9は上付き丸に割り当てており、℃を二文字使って表せる
俺がgithubを使うにあたってgitを理解しようとした話3
そもそもなんでgitを理解せねば、というかこんなトラブルをことが起きてしまったのか、というお話。
何をしようとしていたか
https://github.com/smlsharp/smlsharp:githubのSML#レポジトリ]のバージョンが1.1.0だったので1.2.0と2.0.0にアップデートしようとしてました。 |
何をやらかしたか
バージョン1.2.0のアップデートは素直にいき、githubへ反映できました。
しかしその次が問題。
間違えて2.0.0の変更を1.1.0にかけてしまい、手元のmasterがリモートのmaster(oring/master)と別ブランチ状態に。
詳細は、いらないファイルを消し忘れたり、README.mdを消してしまったりをして、何度かやり直してパニックになっているうちに、こんな間違ったpush状態に陥っていました。
解決法
解決方法はいろいろありますが、今回は手元のmasterをresetしてv1.2.0に指し直してから、2.0.0をコミットしました。*1
図とコマンドは下記。
ちなみにこの時の自分ではどうしていいかわからずに*2、mzpさんとbleisさんにご指導を仰ぎました。
結果としてgitについていろいろ知ることになりました。
$ git reset --hard v1.2.0 # masterのHEADとファイル内容をv1.2.0へセット
反省
- gitはコマンドのコピペじゃなくて中身を理解してつかう
- たいていは痛い目を見てから覚える
- git reset --hardはファイル内容も書き換えるので慎重に
- rebase -iでHEADが指してるコミットは消せないっぽい
- gitのコミットはrebase等で消しても見えなくなるだけで、タグ・ブランチなどで差されていないとそのうちGCされて本当に消えるらしい
ロードバイクを買うときに必要なものリスト
去年の11月にロードバイクを買いました。
先々週、鈴鹿サーキットで走ってきました。
自転車購入を迷っている人のために、何が必要になるかをまとめたくなった。
- ◎:必須
- ○:あった方が良い
- △:人による
ロードバイクを買うにあたって必要なものリスト
- ◎ロードバイク
- もちろん必須ですね。僕は8万クラスの入門モデルを。スペックよりも色で選びました。この値段だとスペックなんて対して変わらないっていうのが結論です。
- ◎仏式空気入れ
- ロードバイクはタイヤのバルブが特殊+圧力計が必要なので専用の空気入れを買いましょう
- ◎工具(ドライバ、六角レンチ)
- 追加パーツをつけたりサドル調整をしたり、何かと必要です。
- ◎カギ
- お高いものですので、カギがないとコンビニに入るのも安心できません。自転車単体のロックだと持ち上げて持っていかれる可能性もあるので、木やフェンスなどに引っ掛けられる長いチェーンロックがオススメです。
- ◎ライト
- 道交法上で必須です。夜に田んぼ道など真っ暗な道を走ることが多いのなら大きくて明るいライトがいいです。そうでもないなら、単3電池1本くらいで済むライトでいいでしょう。
- ◎ヘルメット
- ロードバイクはスピードが出ます。死にたくないなら買うべきです。
- ○自転車スタンド
- スタンドがついていないので、壁に立てかけるか専用スタンドを買いましょう
- ○サイクルコンピューター
- 安いものでも速度・距離・タイムがわかるのは楽しい。距離を走る人ほど楽しみが増します。街乗りだとそうでもないかな。
- △メンテナンスオイルとクリーナー
- ガッツリメンテして自転車のピカピカ度を楽しみたい人にはいるかと。面倒な場合はお店でお金を払ってメンテしてもらうという手も。
- △ズボンの裾止め
- ジーパンなど普通の長ズボンで乗る場合は、チェーンでズボンが汚れるので必須。反射板がついてるタイプが安全面も増してよいかな。
レースに出るにあたって必要なものリスト
まとめ
- ロードバイクを買おうと思うなら、自転車本体(n万)+2〜3万はなんだかんだ必要
- レースに出る場合の必須な物は少ないけど、あればあるほど楽しめる。
- mzpさんがおっしゃられた名言「せっかくのレース、やりたいことをやる」
- 自転車楽しい(^ω^ 三 ^ω^)
俺がgithubを使うにあたってgitを理解しようとした話2
追記:
bleisさんによると「HEADはなんらかの参照を指すもので、コミットそのもを指すものではない」との指摘をいただきました。
図ではコミットを指していますが正しくはコミットのポインタを指します。
ただし、図の修正がめんどい*1のでご了承ください。
追記その2:
すばらしい図解をされているサイトを発見したので掲載させていただきます。コミットとコミットのポインタとHEADの位置などが参考になるだけでなく、各コマンドについてを図でひじょうにわかりやすく説明してくれています。
図解 Git
git話2回目。
hgを使っていた経験からpullやpushなど基本の意味はわかる。
しかしgitを使っていると概念の違いや謎のワードがたくさん出てくる。
今日はそれについても書き留めとく。
gitのポインタ
gitはコミットのポインタとして親コミットを指している。
よって図のように、各コミットの表す矢印はコミットの時系列と逆向きになる。*2
図はA→B→Cと変更していき、途中のBからbranchを作った状態。
HEADって何
今、手元のファイルがどこのコミットにいるのかを示す。
例えば上図だとCのポイントが現在のgitの状態。
もちろんそこから変更点があれば`git status`や`git diff`で確認できる。
HEAD^とかHEAD~って何者
HEADからコミットのポインタをいくつか辿った状態。
HEADはHEADポインタが指すそのもの。
HEAD^やHEAD~はHEADからポインタを1個辿ったもの。
HEAD^^は2個辿ったもの。。。。以下続く。
例えば上図の状態で`git checkout HEAD^`を行うと下図のような状態にHEADが移動し、ファイルを古い状態に戻すことができる。
masterって何
branchの1つでメインブランチに付けられる名前。
ブランチ名なのでcheckoutやpush・pullなどで指定ができる。
たとえばmasterブランチだけをとあるGithubレポジトリにpushしたければ、以下のようなコマンドになる。
$ git push git@github.com:hoge/fuga.git master
branchって何
枝分かれ。
途中で違った変更を行いたいときに支流として存在する変更点。
`git branch
`git branch`で現存のブランチの一覧を確認できる。
`git branch -d
もちろん、`git chekcout
例えば`git checkout branch_name`をすると、下図のようにHEADが移動する。
まとめ
- git checkout
で特定のブランチへ - git branch
- ブランチの一覧表示
でブランチの作成 - -d
でブランチの削除
- HEADは現在の状態を指すポインタ
- この程度のことすらわからないgit力に絶望した!!
俺がgithubを使うにあたってgitを理解しようとした話1
最近githubを使う機会が多いです。
まったくコードを書かなかった俺にとっては天から矢がふるレベルの珍しさ。
そこでこのシリーズでは、gitやGithubを使うにあたってのtipsをメモしていこうと思います。
問題点:pushしたcommitとGithubアカウントが関連付けされない
画像のようにGithub上でGithubアカウントの画像が表示されればOKです。
最初はなぜかこの関連付けがされずに、commit時の名前の名無し画像が出るだけでした。
解決法
Githubはアカウントとの関連付けを、Githubアカウント登録メールアドレスとcommitメールアドレスで行っているようです。
この2つを同じメールアドレスに設定しましょう。
.gitconfigへの設定
下記コマンドを叩くか、~/.gitconfigを編集し[user]を追記します。
この方法では全gitコマンドへ影響します。
レポジトリごとに設定を変えたい場合は--globalオプションを外したり。
$ git config --global user.email hoge@gmail.com
[user] email = hoge@gmail.com
Thanks
- @mzp
- @bleis
*1:何度もProfileのPublic Email Addressを編集してはまっていたバカがこちらの日記の主になります
金沢旅行に行ってきました
@athos0220が写真を撮りにどこか行きたいと言い出したので、@athos0220、@mzp、@momocusと金沢旅行に行ってきました。
2泊3日の楽しい旅行でした。
1日目
レンタカーを借りて近江町市場
よんたの1年ぶり運転で移動。
駐車やら怪しくて他メンバーがヒヤヒヤしてました。
市場ではコロッケや海鮮丼を食べました。
夜のおつまみも購入。
予想以上に外人が多くて驚きました。
金沢も観光スポット化してるのかー。
- mzpは電源のあるカフェに行きましょうと言ってたけど、却下しました。
2日目
3日目
まとめ
- 石川県の海の幸はうますぎる
- 金沢周辺、運転は荒い人多かったけど車の絶対数が少なくて運転しやすい
- 久しぶりに運転したけど事故なく旅行を終えれてよかった
- mzpの進捗よかったそうです