You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
本記事は Vim Advent Calendar 2012 の169日目です。 168日目は@cohamaさんによる、tig なんて目じゃない! Git のログ系 Vim プラグイン gitv & gitv をGit 統合インターフェース化する最強の設定でした。 Vimにはundo(redo)機能があります。エディタとしては当たり前ですね。 回数は無制限です。ここまで聞くと高機能だと感じる方もいるかもしれません。 が、Vimは更にundo履歴をツリー状に管理することができます。標準で。 undo履歴のツリー管理機能を標準で持つエディタを他に聞いたことありませんし、 実際なかなか無いでしょう。 こうして標準搭載されていながらも、なぜかあまり噂を聞かない(私だけ?)この機能について 今回調べてみましたので、触れていこうかと思います。 undo-branches(undo-tree) アンドゥツ
詳しくは:h undo-treeを見てもらうとしてここでは概要だけ。 windowsのメモ帳を除く一般的なエディタは複数のアンドゥ/リドゥ履歴を持っています。A→B→C→Dと編集して今Dの状態だとすると、ここからCtrl+Z(vimだとu)でCへ、もう一度Ctrl+ZでBへ、さらにAへと履歴をさかのぼれます。またAに戻ったあとCtrl+Y(vimだと<C-r>)を入力するとBへ、続いてCへ、Dへと遷移できます。ここでDからCにアンドゥで戻って全然関係ない入力をするとEができ、A→B→C→Eという履歴になります。こうなるとDへは移動できなくなります。 vimはこの一般的な編集履歴に加えて時間軸での履歴を持っています。A→B→C...ではなく最初→2秒後→5秒後→32秒後→...というように、変更があった時刻ごと覚えている感じです。わかりにくくいえばgit logとgit reflogの違いで
今更ながら、一時期 gnu-emacs-sources で話題になっていた undo-tree.el を導入してみました。 undo の履歴を木構造としてもって、それを辿る事ができる elisp です。かなり便利です。 ダウンロード git リポジトリから undo-tree.el を取得します。 git clone http://www.dr-qubit.org/git/undo-tree.git undo-treeundo-tree.el が取得できるだけなので、時間は全然かかりません。 設定 undo-tree.el を load-path の通った場所に置き、以下の設定をするだけで完了です。 (require 'undo-tree) (global-undo-tree-mode) 使う 普通に undo (C-/ や C-_) をして、C-g を押した後に undo をして red
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く