2012の151日目の記事になります。今日は自分があまり使っていなかったマーク機能を改善した話をしたいと思います。マーク機能とはvimにはマーク機能というものがあります。ソース中の行に対して見えない印をつけ、すぐに特定の場所に飛ぶことが出来る機能です。操作方法を以下に書きます。mzでaからzのアルファベットに対応する行を記憶して'aもしくは`aで記憶した行に移動することが出来ます。使いこなせればとても便利な機能なのですが、いくつかの問題があってほとんど死に機能となっている方もいるのではないでしょうか。問題点マーク機能には次の問題があるように思います。記憶した行をどのアルファベットに割り当てたかを覚えていないといけない現在どのアルファベットを割り当てているのかを覚えていないといけないマークの情報は:marksコマンドを使うことで確認することが出来ますが、情報が少なく直感的ではありません。行に設定されているマークを視覚化するプラギンもありますが、結局その行が見える範囲にないとマークがわからないので自分には合っていないように思います。なんとかしてマーク機能を便利に活用する方法はないでしょうか。解決1vimには超有能なイケメンヘルプさんが居るので何かいいものが無いか聞いてみたところ、このような記述を発見しました。個先の小文字のマークがある行の最初の非空白文字へ移動します。個先の小文字のマークへ移動します。個前の小文字のマークがある行の最初の非空白文字へ移動します。個前の小文字のマークへ移動します。ありません}これは便利。上記のキーマップを使うことで直前、直後のマークに移動できるため記憶した行をどのアルファベットに割り当てたかを覚えていないといけないを解決することが出来そうです。設定しているマークの数が多い場合は思い通りの位置に飛ぶのが面倒になりますが、一つのバッファに対してそこまでマークを酷使することもないのでまぁ問題ないでしょう。マーク毎に入力するキーマップを変えなくていいというのも良い感じです。解決2現在どのアルファベットを割り当てているのかを覚えていないといけない新しくマークを付けたい場合にまだ使ってないアルファベットがどれなのかを知らないとマークを上書きしてしまう可能性があります。これについては下記のスクリプトを用意しました。g:markrement_char[b:markrement_pos]endfunctionmを押すことで現在位置に対して自動的にアルファベットを割り振ってくれるようになりました。アルファベットを使い切った場合は先頭に戻ってループします。別の問題が出て来ましたのでそれの対策を。ヘルプには以下のように書かれていました。まではマークのあるファイルがバッファリストに存在する限り覚えておかれます。ファイルをバッファリストから削除するとそのファイルに関するマーク一は全て失われます。マークを含んでいる行を削除するとそのマークは消されます。自分の環境が特別なのかバッファを閉じてvimを再起動してもマーク情報は残ったままでした。前回のマーク情報が残っているのはうざったいので消したいと思います。カレントバッファのマーク情報を全て消すためには:delmarks!とすればいいので、バッファを開いた時点で削除するように自動コマンドを書きます。delmarks!これでOK。endifを設定している場合はdelmarks!の前に書くよう気をつけてください。最終的に使いやすさ等を考慮して自分のマーク設定は最終的に以下のようになりました。分かりやすいKey-mappingsを定義するを参考にしています。}}}これで快適マーク生活を送れるようになったでしょうかね。これで様子を見たいと思います。マークを使ってないなーという人は参考にしてみてください。»プロフィールid:saihoooooooo無限次元のベクトル場の中で特定点におけるあるベクトルとの内積を他の誰よりも大きくするために日夜頑張っています。v3自作プラグインの基礎ゼルダの伝説BotWのRTAが俺を惹きつけてやまないErgoDox買ったったった(そしてハウツーConfigurator)リンクはてなブログをはじめよう!saihooooooooさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。