Home > Vim script
Vim script Archive
Hack #126: クリップボードを利用する
- 2010-02-21 (日)
- Vim Hacks | Vim script
問題1
ふつうのテキストエディタであれば クリップボードにあるテキストがペーストされ、 コピーしたテキストはクリップボードに保存されます。
しかしVimではコピー/ペーストされるテキストは レジスタと呼ばれるVim内部の領域から読み書きされるため、 そのようにはなっていません。
クリップボードに対してコピー/ペーストを行なうにはどうすればよいのでしょうか。
解決方法1
Vimには
クリップボードを表す仮想的なレジスタ"*があるため、
コピー/ペーストする際にそのレジスタを使用するよう指定します。
例えばクリップボードへ1行分のテキストをコピーする場合は
以下のコマンドを入力します:
"*Y
クリップボードからテキストをペーストする場合は 以下のコマンドを入力します:
"*p
問題2
Vimからクリップボードにアクセスする方法は分かりました。
しかし毎回"*を指定しなければならず、入力が面倒です。
Vim内でテキストのコピー/ペーストを行なう場合に、
何も指定しなくても自動的にクリップボードを利用するようにできないでしょうか。
解決方法2
以下のコマンドを実行します:
:set clipboard=unnamed
この設定を行なうと、 特にレジスタを指定せずにコピー/ペーストを行なった場合は クリップボードを利用するようになります。
また、xtermなどのX Window System下のアプリケーションでは 選択されたテキストが自動的にクリップボードへコピーされます。 VimのVisual modeでも同様の挙動にしたい場合は以下のコマンドを実行します。
:set clipboard=autoselect
もし両方の挙動が必要な場合は以下のように値をコンマ(,)区切りで指定します:
:set clipboard=unnamed,autoselect
問題3
基本的にGUI版のVimでしかクリップボードに関する機能は利用できません。 つまり、諸事情で端末エミュレータ内でVimを利用している場合は クリップボード関連の機能は使えません。
幸いなことに、
一部の環境ではクリップボードにアクセスするためのコマンドがあります。
例えばMac OS Xの場合はpbcopy/pbpasteでクリップボードの読み書きができるため、
:read !pbpasteなどとすればクリップボードの内容を取り込むことが
できます。
しかしこのようなコマンドは入力が煩雑ですし、
何よりd/p/yのような
Vim本来の操作と比べると不便です。
どうにかして"*と同様の操作性を実現できないでしょうか。
解決方法3
fakeclipを使います。
このプラグインをインストールすると
Cygwin、Mac OS X、X Window Systemの非GUI版Vimでも
"*Yや
"*pなどの操作ができるようになります
(バージョン0.2.6現在)。
解説
Q. なぜ"*Yのようなまどろっこしい操作になっているのですか?
A. 祖先のviが生まれた頃にクリップボードなんてものはなかったからです。
Q. なぜ:set clipboard=unnamedがデフォルトでないのですか?
A. Vimのデフォルト設定は可能な限りviライクだからです。 そして祖先のviが生まれた頃にクリップボードなんてものはなかったからです。
参考資料
kana- Comments: 0
- Trackbacks: 0
Hack #100: vimrcにパスワード等を記述しなくてもよくする
- 2009-11-09 (月)
- Vim Hacks | Vim script
問題
blogger.vim などの Plugin を利用する場合、 .vimrc にパスワード等の設定を記述する必要があります。 GitHub や Vimrcbox に .vimrc を公開している場合、そのままでは利用することができません。
解決
pitconfig.vim もしくは rbpit.vim を利用することで .vimrc に直接記述することなくパスワード等を設定することが可能です。
準備
pitconfig.vim を利用する場合は Perl インターフェイス付きの、 rbpit.vim を利用する場合は Ruby インターフェイス付きの Vim を準備してください。手元の Vim がこれらのインターフェイス付きでない場合は、ソースからコンパイルする必要があります。コンパイル方法については本 Hack の範囲を超えるので省略します。
また pitconfig.vim なら Config::Pit を CPAN から、 rbpit.vim なら pit を Rubygems からインストールします。
Plugin のインストール
pitconfig.vim または rbpit.vim を Plugin Directory へコピーしてください。 Plugin Directory については :h add-global-plugin を参照してください。
pitconfig.vim と rbpit.vim の違いは Perl インターフェイスを利用するか Ruby インターフェイスを利用するかの違いのみで、動作は同一です。1
設定
設定は Config::Pit の ppit コマンドや pit の pit コマンドから設定することが可能です。デフォルトのプロファイル名は vimrc ですが、変更することも可能です。
pit set vimrc
設定はYAMLとして記述します。例として blogger.vim の設定方法を記述します。
--- blogger_blogid = 7772225564702673313 blogger_email = blogger.vim@gmail.com blogger_pass = bloggervimvim
また、 Vim の Command Mode から以下の要領で設定を行うこともできます。例として blogger.vim の設定方法を記述します。
:let g:blogger_blogid = 7772225564702673313 :let g:blogger_email = "blogger.vim@gmail.com" :let g:blogger_pass = "bloggervimvim" :PitAdd g:blogger_blogid g:blogger_email g:blogger_pass :PitSave
デフォルトプロファイル名の設定
デフォルトでのプロファイル名は vimrc になっていますが、 g:pitconfig_default でデフォルトのプロファイル名を変更することが可能です。
コマンド
:PitLoad (プロファイル名)
プロファイル名に保存された設定をロードします。
:PitReload
デフォルトプロファイルをリロードします。
:PitAdd (変数名)
引数で指定した変数を :PitSave で保存する対象に設定します。変数名は複数指定可能です。
:PitDel (変数名)
引数で指定した変数を :PitSave で保存する対象から外します。変数名は複数指定可能です。
:PitSave (プロファイル名)
引数で指定したプロファイル名を使用して設定を保存します。引数なしで実行した場合はデフォルトプロファイルに保存します。
注意
MacVimを利用している場合、 pit は Mac OSX 標準の Rubygems (/usr/bin/gem) を利用してインストールする必要があります。 MacPorts を利用して ruby 及び rb-rubygems をインストールしていたとしても、使われるのは Mac OSX 標準の Rubygems になります。
from_kyushu-
元々 rbpit.vim 自体が pitconfig.vim が動作しなかったという理由で、Perl 部分を Ruby で書き直したものです。 ↩
- Comments: 0
- Trackbacks: 0
Hack #77: 縦に揃える
- 2009-09-24 (木)
- Vim script
問題
Vimで表を記述するとき、整形のため自分でスペースを追加する必要があるシーンがあります。
また、yaccやHaskellなど一部の言語では|などの記号を区切りとしてソースコードを縦に美しく揃える必要がある場合があります。
解決 — Align.vim
Align.vimをインストールし、さらに.vimrcに以下を記述します。
let g:Align_xstrlen=3
この設定は日本語など幅広文字に対応するためです。
以後、:[range]Align {separators}で指定した範囲を縦に整形することができます。
具体例
[range]を指定する方法は様々ありますが、例としてVisualモードで選択した範囲を対象として|という文字を区切り文字にして縦に整形してみましょう。

まずは範囲を選択。Vしてjjjと移動していき、

ここで:を打鍵すると:'<,'>まで勝手に入力されるので、続いてそのままAlign |と入力、

<Enter>で確定すると、

ばっちりできました。
議論
先ほど紹介した:[range]Align以外に様々なインタフェースが提供されています。詳しくは:h alignを参照ください。
なお、2009年9月24日現在の最新版のAlign.vim version 35では、:[range]Alignを実行するとカーソルが全く異なる場所に飛ばされてしまうというバグがあります。
しかも、<C-o>で元の場所に戻ることができません。
最もてっとりばやい解決方法は、uでAlign操作を取り消した上で元の位置に戻り、そのまま<C-r>で再実行することです。この場合なぜかカーソルは移動しません。
参考
:h align- Align.vim http://www.vim.org/scripts/script.php?script_id=294
- Comments: 0
- Trackbacks: 0
Vimpressのご紹介
- 2008-10-09 (木)
- Vim script
Vim-users.jpはWordPressを用いているのですが、このWordPressに投稿するvim scriptがありましたのでご紹介します。
Vimpress – Manage wordpress blog posts from Vim : vim online
インストール
vimpress.tar.gz を取得して展開したものを.vimディレクトリに保存してください。
また、このvim scriptはPythonを使用して書かれており、標準添付でないxmlrpclibというライブラリを使用しています。別途インストールを行ってください。
使用方法
.vim/plugin/blog.vimを開き、Settingsセクション内に以下の内容を入力して保存します。
- blog_username: ユーザーID
- blog_password: ユーザーパスワード
- blog_url: http://vim-users.jp/xmlrpc.php
コマンドは以下になります。
- 新規作成: :BlogNew
- エントリ一覧: :BlogList
- エントリ編集: :BlogOpen id
- エントリ投稿: :BlogSend
- Comments: 0
- Trackbacks: 0
ホーム > Vim script
- Search
- Feeds
- Links

