Teratermのアノ挙動をvimに!

この記事はVim Advent Calendar 2012の61日目の記事です。
60日目は@KSuzukiiiさんの「はじめての unite source(unite-tig)」でした。

最近仕事で使うWindowsでもgvim(kaoriyaさん版)を使用しだしたのですが、コピペまわりで四苦八苦したのでそのあたりの事を書きます。

Windows gvimでのコピペ事情

Windowsのgvimですが、Windows標準の<C-c><C-v>でのコピペが初期設定ではできません。

これを実現するにはsource $VIMRUNTIME/mswin.vimを書いてvimrcで有効にすればできるようになります!が、行選択ビジュアルモード<S-v>時に<C-f><C-b>で画面移動すると選択が外れるバグがあります。

これが結構使う動作のため、泣く泣く無効化させてクリップボードの貼り付けは右クリックから行なっていました。

ある日気づいた!

gvimで右クリックするといくつかのメニューが出てきますが、クリップボードからの貼り付けにしか使用していない事に気づきました。唐突ですが皆さんはsshクライアントは何を使用していますか?私はMacではTerminal.appでWindowsではTeratermを使っています。

このTeratermのデフォルト設定に以下の2つの機能があります。

  • 選択した文字列を自動でクリップボードに保存
  • 右クリックするとクリップボードの文字列を挿入

この2つの機能をなかなか気に入っていまして、右クリックを貼り付けにしか使用していないならTeratermのこの挙動をVimにも設定したところなかなか便利!

vimrcに追加!

まずは「選択すると自動でクリップボードに文字列を保存する」設定から。下記の設定でビジュアルモードで選択すると自動でクリップボードに保存されます。(+clipboardでコンパイルされたvimである必要があります)

" GUI
set guioptions+=a
" CUI
"set clipboard+=autoselect

次に「右クリックでクリップボードの文字列を挿入」ですが、ノーマルモードとインサートモードの両方でできるようにしました。こちらも*レジスタを利用するのでclipboardが有効なvimが必要です。

nnoremap <RightMouse> "*p
inoremap <RightMouse> <C-r><C-o>*

完成ッ!

上記の設定でTeraterm風のキーバインドのVimを得られました。エクセルやらでコピーして右クリックでVimに貼り付けッ!今のところこの設定で快適に作業できています。このカスタマイズ性の高さがVimの醍醐味ですね。

明日の62日目は2回目の@thincaさんです。楽しみです。

blogger.vimでvimからpost

install pandoc
  1. brew install haskell-platform
  2. cabal update
  3. cabal install cabal-install
  4. cabal install pandoc
install vim-plugins
  1. metarw.vim
  2. blogger.vim
install ruby 1.9.2+(blogger.vim required)
  1. brew install ruby
prefer brew and cabal commands
  1. sudo vim /etc/paths

先頭に/Users/r-plus/.cabal/bin, /usr/local/binを追加

config blogger.vim

自分のbloggerの設定と1.9.2+のRubyへのPATHを指定。


install blogger.vim required gems
  1. gem install nokogiri
  2. gem install net-https-wrapper
Post From Vim!

これでmarkdown形式で書いたバッファから:w blogger:createでBloggerに投稿されます。
が、なにやら自動で改行タグが入れられてしまったのでxmlを圧縮するパッチを書きました。https://github.com/r-plus/blogger.vim/commit/844e1cfc387c49e858daefbb943ab62dbfd4dbdd しかしこれだとpreタグの中の改行も削除してしまう。しょうがないので複数行のはgistにでもなげようかと思ったがscriptタグの閉じタグが内包表記になってしまう。なんとままならない事か。