出てこいっ 「.vimrc も mru としてリストに現れるように」
またやった...
「まさかこれはないだろう」が実はソレ,って言う.故,壮大に何一つ意味の無い無駄な廻り道.
今回のお話は Unite.vim の neomru.vim.
未来の自分の為に,何でこんな設定をしたのか,のメモ.
.vimrc も mru ファイルのアイテムとしてリストに揚がるようにしたい
こうなりますか ?
g:neomru#follow_links = 1
あまり自信無かったりもしますが,一応願った通りの振る舞いをしてくれています,ということで :-P
キッカケ
.vimrc を色々触っている時のこと.
:Unite file_mru
した時に*1,この .vimrc ファイルも mru ファイルとしてリストアップされるようになってほしいと考えました.
*1:実際はマップをしてますが
そのまま,ボコッと
これ分かった時,膝の力抜けましたよ.とはいえ,いつもの無知ゆえの話なのですが.
そんなこんなでちょっとした発見もあり,しかしながら「こんなことすら忘れるようになったら終わりだな」思いつつも,やっぱ信じられないので(笑,メモ.
今回は矩形ビジュアルモードでの切り貼りに関するお話.
先日こんな作業に出くわしました.感覚としてスプレッドシートでの作業をイメージして頂けると伝わり易いかもしれません.
例えば*1,こんな感じです.;
町域 赤堤 池尻 宇奈根 梅丘 大蔵 大原 岡本 奥沢 尾山台 郵便番号 市区町村 町域 156-0044 世田谷区 赤堤 アカツツミ 154-0001 世田谷区 池尻 イケジリ 157-0068 世田谷区 宇奈根 ウナネ 154-0022 世田谷区 梅丘 ウメガオカ 157-0074 世田谷区 大蔵 オオクラ 156-0041 世田谷区 大原 オオハラ 157-0076 世田谷区 岡本 オカモト 158-0083 世田谷区 奥沢 オクサワ 158-0086 世田谷区 尾山台 オヤマダイ
この上のブロックの先頭に,下の郵便番号列にあたるテキストを持って行きたい.
知らなかったのは貼り付け方.
てっきり,矩形ビジュアル挿入の要領で対象領域のすべての行の先頭文字を矩形選択して P
貼り付けかと思ったら,これは間違い.
正解は,挿入箇所左上端,上の例で言うと 1 行目の "町" のところにカーソルを置くだけ.その状態で p
で良いとな.
*1:日本郵便の郵便番号検索結果を使ってます.
えぇ... ただ置いていただくだけで結構です
言葉通り長くなりそうなので,まずここで tl;dr 的に.
今回の作業をもって,こんな設定を加えることにしました.;
xnoremap <expr> p 'pgv"'.v:register.'ygv<esc>'
見ての通り p
コマンド,つまり「貼り付け*1」の操作に関するものです.
選択した範囲へ貼り付け*2た時にやられちゃう,クリップボードの書き換えをしないようにしています.
とは言え実はこれ,見掛けだけの話で,書き換えと言う処理は行われていなかったりするのですが.
簡単に分解しますと.
step | key | description |
---|---|---|
1 | p | 選択した範囲へ貼り付け |
2 | gv | #1 で貼り付けた内容を選択 |
3 | "v:register y |
選択した範囲の内容をコピー |
4 | gv<esc> | 最後にもう一度範囲選択し解除 |
つまりやっていることは,"書き換えを回避させる" ではなく,何でもない,"再度クリップボードにコピー" して書き変えていないように見せている,と言うだけ.
ここで最終的に参考とした情報はこちら.;
» Vim: how to paste over without overwriting register
また上述参照先にもありますが,「v:register
ってイミフ」とか,「ごく一般的な使い方で十分」とかなら恐らく単純に,{rhs} で v:register
なくても良いのかも.;
xnoremap p pgvy
と言う事でして.今回は,今まであった「何となく」であったレジスタ registers というものが「なるほど」に変わった事もあって,その辺り含め以下にメモ.
*1:vim の世界では「プット」と呼ぶようです.この "p" と言うのは,一般的にあるような「貼り付け(ペースト) paste」の "p" ではなく,「プット put」の "p" なのかと,恐らくですが.
トントンってのがさ,つい.って話.(まーくだん変,じゃなく markdown 編)
markdown 形式での編集作業について.
ここで話題にしたいのは "改行" についてです.
<br>
に展開されるあれです.
行末に半角のスペースを 2 つ以上入れる,というあれ
皆さんは markdown 形式上での作業中,この作法に煩わしさを覚えることってありませんか?
自分はしばしばあります.と言いますか,しょっちゅう.
とりわけ,入力作業にスピードが求められるようなシーン.
こんな状況下となりますと,「行末にスペース 2 個入れて return」というどうってことない単純な手続きが,それこそ「いちいち...」になってしまうのです.
そのうち「忘れる → 気になる → タイプ作業自体が乱れる → 集中できなくなる → ぶっち切りで置いてかれる → 慌てる → (闇)」といった悪循環の華が開くわけです.
だったらいっそのこと作業中一切忘れて集中し,後でまとめて修正なり調整をすれば,とも考えるわけです,当然.でもこれも結局,後へしわ寄せしただけの話で,それなりの手間を要する.
とこんな過ちを経て以下のような Vim script を用意して凌ぐことにしました,と言うのがこの度のお話です.
括弧に囲まれた英字を大文字に,半角スペースはアンダースコアに
想像以上に手こずったのでメモ.
こんなデータがありまして.;
<First Line> <Second Line> <Third Line> <Forth Line var1> / <Forth Line var2> / <Forth Line var3> This is <Fifth Line> Copyright COMPANY INC. <Sixth Line>
こんなデータに対し以下のような作業をしなければならない場面に出くわしました.
やることは,
括弧に囲まれた中の文字列,その内容は半角英数字限定,をすべて大文字にし,かつ半角スペースは _
アンダースコアにする.
こんな感じになれば良しと.;
<FIRST_LINE> <SECOND_LINE> <THIRD_LINE> <FORTH_LINE_VAR1> / <FORTH_LINE_VAR2> / <FORTH_LINE_VAR3> This is <FIFTH_LINE> Copyright COMPANY INC. <SIXTH_LINE>
結果やったこととは,手続きを 2 つに分け,このような感じに.
まず括弧内の半角英字を全て大文字にし.;
:%s/<.\{-}>/\U&/g
でもって,括弧内にある半角スペースにアンダースコア "_
" を埋める.
:%s/<\(\u\+\s\)\+.\{-}>/\=substitute(submatch(0)," ","_","g")/g
一応それなりにイメージ通りの結果になってくれたのですが,絶対もっとスマートな方法があるはず,とは思っています.
今の自分はこれが精一杯の様子.
もしこれを見て,「いやいやそんな面倒なことやらなくても,ホラ...」的なことございましたら,是非々々ご教示をば.