Re: vim ヤンクとクリップボードまわり
誰かに見てもらえてるって嬉しい
こちらの方に過去記事リンク貼っていただいた!!
baqamore.hatenablog.com
過去記事はこちら。
tokixy56.hatenablog.com
リンク貼ってもらったからには、自分でもいろいろ検証すべきだなと考え、動作確認してみたら、確かにダメだった…
問題の動作はこうだ。
某makefile
LD_PATH = "firmware/loader" OS_PATH = "firmware/os" MAKECMD = "make" ... # ----- bootloader make ----- .PHONY: loader loader : cd $(LD_PATH); make # ----- operating system make ----- .PHONY: os os : cd $(OS_PATH); make ...
上記のmakefileなどがあったとして、コメント部分以外のmakeをgmakeに変えたい時とかよくやるのは、
- MAKECMD = "gmake"に書き換え
- gmake上で yw して単語をコピー
- / で書き換える内容(make)を検索
- n で書き換える単語へ移動
- コメント部分のmakeは通過するのでもう一回 n
- vw して単語を選択
- p で書き換え
- n で書き換える単語へ移動
- コメント部分のmakeは通過するのでもう一回 n
- vw して単語を選択
- p で書き換え
- 繰り返す
というのをよくやる。
この場合、ボクの過去記事の設定では、末尾の単語を書き換えようとするとid:wooweezooweeさんの言及するように前後が入れ替わるような具合で動作する。 上記の場合だと、
某makefile置換後
# makeの前にあったスペースがgmakeの後ろに動く cd $(LD_PATH);gmake
これは、ノーマルモードだとカーソル位置が文字と文字の間にあるのではなく、文字の上にあるため、末尾を切り取った際にカーソルが後ろにずれる、ことが原因で起こる。 この説明だとものすごくわかりにくので、元のvnoremapをコメントアウトして、すべて手動で動作確認してみるとわかりやすい。
そこで、ボクの提案する苦肉の解決策は下記だ。
vimrc
" ビジュアルモード時の置換貼り付け vnoremap <silent> p ""c<C-r>+<ESC> " ビジュアルモード時の置換書き換え vnoremap <silent> c ""c
選択範囲をcで切り取り、インサートモードに入り、<c-r>でペーストしてインサートモードを抜ける…。 ちょっとクリーンな動作じゃないけど目的の動作は果たしてくれるから、まぁ良しとしよう…
また、これだと複数行をペーストするときにインデントが崩れまくる。
vim ペースト 崩れる
とかで検索するとめっちゃ出る。 これを回避するには、
vimrc(インデント崩れ対応)
" ビジュアルモード時の置換貼り付け vnoremap <silent> p <esc>:set paste<cr>gv""c<C-r>+<ESC>:set nopaste<cr>
どんだけやねんーぷ、となるがこれで複数行ペースト時も崩れないだろう。
DragonFlyBSDが気になって仕方がない
全然関係ない話だが、DragonFlyBSDが気になって仕方がない。
あとjail。
仮想化じゃないくてLinuxバイナリがそのまま動くからパフォーマンスは最高らしい。
よし、頑張ってノートPCにインストールして、泣きを見ようかと思う。