出しちゃいます。
/dotfiles/vim/mattn-vimrc - CodeRepos::Share - Trac正直デカイです。
/dotfiles/vim/mattn-gvimrc - CodeRepos::Share - Trac
もう随分昔からあるvimrcなので使ってない機能もあれば、忘れてしまったノウハウもいっぱい...
あまり参考にならないかもしれませんが、どうぞ。
mattn the vimmer!
追記
マルチプラットフォーム用です。
/dotfiles/vim/mattn-vimrc - CodeRepos::Share - Trac正直デカイです。
/dotfiles/vim/mattn-gvimrc - CodeRepos::Share - Trac
別のサーバへファイルを送信します。--remote-silent [+{cmd}] {file} ...
+{cmd}により開く際にコマンドを併用出来ます。
--remote と同等ですが、エラー等が発生してもメッセージ出力されません。--remote-wait [+{cmd}] {file} ...
--remote と同等ですが、送信したvimが終了するまで待機します。--remote-wait-silent [+{cmd}] {file} ...
vimで編集した結果をどこかに送るシェルスクリプト等では使えるかもしれません。
--remote-wait と同等ですが、エラー等が発生してもメッセージ出力されません。--remote-tab [+{cmd}] {file} ...
--remote と似ていますが、指定されたファイルを全て別タブで開きます。--remote-tab-silent [+{cmd}] {file} ...
--remote-tab と同等ですが、エラー等が発生してもメッセージ出力されません。--remote-tab-wait [+{cmd}] {file} ...
--remote-tab と同等ですが、送信したvimが終了するまで待機します。--remote-tab-wait-silent [+{cmd}] {file} ...
--remote-tab-wait と同等ですが、エラー等が発生してもメッセージ出力されません。--servername {name}
リモートサーバを名称で指定します。リモートサーバ一覧を取得するには --serverlist を使用します。--remote-send {keys}
リモートサーバにキーを送ります。基本的にnormalコマンドで与える引数と同等です。--remote-expr {expr}
リモートサーバに式を送り、その結果を出力します。--serverlist
リモートサーバ一覧を出力します。
{server}に対して{string}という式を評価して貰います。remote_foreground({server})
:echo remote_expr("gvim", "2+2")と書くと4が表示されます。
{server}をフォアグラウンドにします。
remote_expr({server}, "foreground()")
と同等の機能ですね。
等がありますので、vimを起動しなくても色々な事が出来ます。
package Plagger::Plugin::Publish::Vim;
use strict;
use base qw( Plagger::Plugin );
our $VERSION = '0.01';
use Encode;
sub register {
my($self, $context) = @_;
$context->register_hook(
$self,
'plugin.init' => \&initialize,
'publish.entry' => \&add_entry,
);
}
sub initialize {
my($self,$context) = @_;
$self->{vim} = $self->conf->{vim};
$self->{vim} = "vim" if (!$self->{vim});
$self->{server} = $self->conf->{server};
if (!$self->{server}) {
open(IN, "vim --serverlist|");
$self->{server} = <IN>;
close(IN);
chomp $self->{server};
}
open(IN, sprintf("%s --servername %s --remote-expr \"&encoding\"|",
$self->{vim}, $self->{server}));
$self->{encoding} = <IN>;
print $self->{encoding}."\n";
close(IN);
my $command = sprintf("%s --servername %s --remote-send \"<C-\\\><C-N>:new<CR>i\"",
$self->{vim}, $self->{server});
system($command);
}
sub add_entry {
my($self, $context, $args) = @_;
$context->log(info => $self->{server});
my $command = sprintf("%s --servername %s --remote-send \"%s\n\t%s\n<C-W>\"",
$self->{vim}, $self->{server},
encode($self->{encoding} || 'utf8', $args->{entry}->{title}),
encode($self->{encoding} || 'utf8', $args->{entry}->{link}),
);
system($command);
}
1;
で、YAMLはこんな感じ
global:
assets_path: /home/user/plagger/assets
timezone: Asia/Tokyo
log:
level: info
plugins:
- module: Subscription::Config
config:
feed:
- http://b.hatena.ne.jp/t/vim?mode=rss
- module: Filter::BreakEntriesToFeeds
config:
use_entry_title: 1
- module: Publish::Vim
config:
#vim: vim7
#server: GVIM1
実行結果は
# vim /usr/include
等と実行すると、vimがファイラとして起動します。同様にコマンドラインから
:e /usr/include
と実行しても同じ結果になります。コマンド単体としてもExploreとして起動出来ます。
:e ftp://ftp.vim.org/pub/vim/
Enter username: anonymous
Enter Password: *********
でフォルダ閲覧出来ます。(*********はanonymous)
" ============================================================================
" Netrw Directory Listing (netrw v109)
" ftp://ftp.vim.org/pub/vim/
" Sorted by name
" Sort sequence: [\/]$,\.h$,\.c$,\.cpp$,\.[a-np-z]$,*,\.info$,\.swp$,\.o$\.obj
" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:exec
" ============================================================================
../
./
MIRRORS
README
amiga
atari
be
beanie.gif
doc
extra
faq.html
farsi
green_ball.gif
index.html
ftp://ftp.vim.org/pub/vim/ [RO] 1,1 2%
また、Exploreではファイル名にカーソルを合わせて「x」をタイプすると拡張子に合わせてアプリケーションが起動します。
let g:netrw_browsex_viewer='-'
" エディタであるvimから秀丸起動して、何やってんだか...
function! NFH_txt(file)
" netrwFileHandlers.vimの不具合回避?
let f = substitute(a:file, '^\([A-Z]\)COLON', '\1:', '')
exe "silent !start c:/progra~1/hidemaru/hidemaru.exe \"".f."\""
return 1
endfunction
let g:netrw_browsex_viewer = 'open'
とvimrcに設定しておけば、Exploreから「x」をタイプする事でファイル種別に応じたアプリケーションが起動出来るかと思います。
:NetrwSettings
とすれば、設定画面が表示されますので、色々カスタマイズして見ると面白いかもしれませんね。このブログを応援する