ラベル Vim の投稿を表示しています。 すべての投稿を表示
ラベル Vim の投稿を表示しています。 すべての投稿を表示

2015/03/28

google-ime-skkをWindowsのサービスに登録してeskk.vimで使う

google-ime-skkをeskk.vimで利用するようにした際のメモ。


google-ime-skkを動かすにはRubyが必要です。
私がインストールしたRubyは下記サイトから取得したRuby 1.9.3-p551です。
http://rubyinstaller.org/downloads/

最初は上記のサイトにあるRuby 2.2.1を使用したのですが、サービスの起動がいくらやってもうまくできませんでした。
発生したエラーは下記「(5)余談」の通りです。

Ruby 1.9.3-p551に変えてみたところあっさりとうまくいきました。


google-ime-skkをサービスに登録する際には下記のサイトを参考にしました。
google-ime-skkのWindowsサービス化 - 海色日報
Rubyのスクリプトをサービスとして常駐させる答えを知りたい | 答えを知りたい


(1)Ruby 1.9.3-p551のインストール
http://rubyinstaller.org/downloads/からRuby 1.9.3-p551をダウンロードしてインストールします。
途中、「Rubyの実行ファイルへ環境変数PATHを設定する」と「.rbと.rbwファイルをRubyに関連付ける」のチェックボックスをオンにしました。


以下ではコマンドプロンプトは管理者として実行しています。


(2)google-ime-skkのインストール
コマンドプロンプトから下記のコマンドを実行します。
C:\WINDOWS\syste>gem install google-ime-skk



(3)google-ime-skkをWindowsのサービスとして登録する
コマンドプロンプトから下記のコマンドを実行します。
C:\WINDOWS\system32>gem install win32-service

次の内容のRubyスクリプトを作成します。
私はC:\Users\xxx\Documents\Apps\google-ime-skk.rbを作成しました。
#!C:/Ruby193/bin/ruby.exe -Ku
#
# This file was generated by RubyGems.
#
# The application 'google-ime-skk' is installed as part of a gem, and
# this file is here to facilitate running it.
#

require 'rubygems'
require 'win32/daemon'
include Win32

class Daemon
  def service_main
 version = ">= 0"

 gem 'google-ime-skk', version
 load Gem.bin_path('google-ime-skk', 'google-ime-skk', version)
  end

  def service_stop
    exit!
  end
end

Daemon.mainloop

コマンドプロンプトから下記のコマンドを実行してサービスに登録し実行します。
実行した後STATEがRUNNINGになっていることを確認します。
C:\WINDOWS\system32>sc create google-ime-skk 
    binPath="C:\Ruby193\bin\ruby.exe 
    C: \Users\xxx\Documents\Apps\google-ime-skk.rb" type=own start=auto
(実際は1行)
C:\WINDOWS\system32>sc start google-ime-skk

SERVICE_NAME: google-ime-skk
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 2  START_PENDING
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x7d0
        PID                : 3864
        FLAGS              :
C:\WINDOWS\system32>sc query google-ime-skk

SERVICE_NAME: google-ime-skk
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0



(4)eskk.vimでgoogle-ime-skkを利用する
vimrcに下記の内容を記述しました。
 let g:eskk#enable_completion = 1
 let g:eskk#server = {
 \   'host': 'localhost',
 \   'port': 55100,
 \   'type': 'notfound',
 \}


(5)余談
ちなみにRuby 2.2.1だと下記のようなエラーになりました。
C:\WINDOWS\system32>sc create google-ime-skk 
   binPath="C:\Ruby22-x64\bin\ruby.exe
   C:\Users\xxx\Documents\Apps\google-ime-skk.rb" type=own start=auto
(実際は1行)

[SC] CreateService SUCCESS

C:\WINDOWS\system32>sc start google-ime-skk
[SC] StartService FAILED 1053:

そのサービスは指定時間内に開始要求または制御要求に応答しませんでした。

試しに直接スクリプトを実行すると下記のようなエラーになりました。
C:\WINDOWS\system32>ruby.exe C:\Users\xxx\Documents\Apps\google-ime-skk.rb

C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- ffi_c (LoadError)
 from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
 from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/ffi-1.9.8-x64-mingw32/lib/ffi.rb:18:in `rescue in '
 from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/ffi-1.9.8-x64-mingw32/lib/ffi.rb:3:in `'
 from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
 from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
 from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/win32-service-0.8.6/lib/win32/windows/helper.rb:1:in `'
 from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
 from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
 from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/win32-service-0.8.6/lib/win32/daemon.rb:1:in `'
 from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in `require'
 from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in `rescue in require'
 from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:39:in `require'
 from C:/Users/xxx/Documents/Apps/google-ime-skk.rb:10:in `



なお、うちのCygwin環境ではVimをLANG=C /usr/local/bin/vimというようにLANGをja_JP.UTF-8から変えないとうまく漢字変換できません。large_dictionaryで設定した辞書ファイルをうまく読み込めていない感じです。

2015/03/27

CygwinにVimをインストールした際のconfigureオプション

忘れないようにメモ。

CygwinにVimをインストールした際のconfigureオプション。

$ ./configure --disable-darwin --disable-selinux 
--enable-multibyte --enable-luainterp --with-lua-prefix=/usr 
--enable-fail-if-missing
実際は一行

2015/03/24

Cygwinでvimproc.vimがmakeできない?

Cygwinでvimproc.vimのmakeをしたのですが、下記のようなエラーになってしまいmake出来ませんでした。

xxx@SALLY ~/.vim/bundle/vimproc.vim
$ make -f make_cygwin.mak
gcc -O2 -W -Wall -Wno-unused -Wno-unused-parameter -use=gnu99 -shared 
-o autoload/vimproc_cygwin.dll autoload/proc.c -lutil
autoload/proc.c:17:19: fatal error: dlfcn.h: No such file or directory
compilation terminated.
make: *** [autoload/vimproc_cygwin.dll] Error 1


すごく単純なミスで、Cygwinにmakeもgccもインストールされておらず、どうやらMinGWのmakeとgccを呼んでいたようです。
Cygwinにmakeとgccをインストールしたところ、無事にmakeが完了しました。

xxx@SALLY ~/.vim/bundle/vimproc.vim
$ /usr/bin/make -f make_cygwin.mak
gcc -O2 -W -Wall -Wno-unused -Wno-unused-parameter -use=gnu99 -shared 
-o autoload/vimproc_cygwin.dll autoload/proc.c -lutil

xxx@SALLY ~/.vim/bundle/vimproc.vim
$ ls autoload/vimproc_cygwin.dll
autoload/vimproc_cygwin.dll

Windowsのopen-browser.vimで開くブラウザをChromeにする

色々試していたら出来たってレベルですが…。

うちのWindows8.1はデフォルトブラウザはIEなのですが、VIMのopen-browser.vimで開くブラウザはChromeにしたかったので色々試しました。

vimrcに下記を記述しました。

" ------------------------------------------------
"  for open-browser.vim
" ------------------------------------------------
let g:netrw_nogx = 1
nmap gx (openbrowser-smart-search)
vmap gx (openbrowser-smart-search)

if has('win32') || has('win64')
 let g:openbrowser_browser_commands = [
 \   {
 \       "name": "C:\\Program\ Files\ (x86)\\Google\\Chrome\\Application\\chrome.exe",
 \       "args": ["{browser}", "{uri}"]
 \   }
 \ ]
endif
" ------------------------------------------------

2008/11/21

vim-bloggerの設定

OpenBSD/Zaurus で vim-bloggerというプラグインを使うことにしました。

こちらにダウンロード先へのリンクがあるのですが、私が見た時はリンク先のサーバに繋がらなかったので、Googleソースコード検索から取得しました。

$HOME/.vim/ 以下に vim-blogger を展開し、さらに $HOME/.vim/plugin/creds.vim を作成して次のように記述しました。
let g:Blog_URI = "http://hanagurotanuki.blogspot.com"
let g:Gmail_Account = "GMail アドレス"
let g:Gmail_Password = "GMail パスワード"
let g:Blog_Use_Markdown = 0


使用してみると UnicodeEncodeError というエラーが出ました。
そこで/usr/local/lib/python2.5/site-packages/sitecustomize.pyを作成し、次のように記述しました。
import sys
sys.setdefaultencoding('utf-8')



vim 起動後 :Blog で vim-blogger 起動します。
その後 :BlogIndex 等のコマンドが使えるようになります。

vim-bloggerで投稿

vim-bloggerというvimのplugin (script?) をみつけました。
vim から Google Blogger に直接記事を新規作成することも出来ますし、編集することも出来ます。

上記のサイトからたどれるダウンロード先がつながらなかったので、Google ソースコード検索からいただいてきました。

最近になって XML-RPC というものを(今更ながら)知り、vim で使える weblog クライアントを探してました。

Biglobeのブログの方もWindows Live Writerとやらで出来るらしいのですが、vim のプラグインで投稿出来るものが見つかりません。
vimblog.vimをBiglobeのブログで使用出来るように API を修正するといいとこまで行くのですが、文字コードがらみらしいエラーが出て投稿出来ませんでした。
javaがらみのようなので、多分 Biglobe のブログの投稿先の Tomcat が返しているエラーメッセージなのかなと思うのですが…。
力不足です。

この投稿記事は vim-blogger で作成しています。
投稿出来るかな?

2008/02/23

vimの設定 (2008/02/23)

OpenBSDの2chブラウザにChaliceというvimのプラグインを使ってみることにしました。
2008/02/23時点での.vimrcは以下のとおり。
" 他のviとの共通設定を読み込む
source ~/.exrc

filetype plugin on

" c-]でタグジャンプしたらc-[で戻る
nmap :pop

" エンコーディングの設定
" Chaliceで文字化けしないようにしたつもり
set encoding=euc-jp
set fileencodings=cp932,euc-jp,utf-8
set termencoding=euc-jp

" allow backspacing over everything in insert mode
" set backspace=indent,eol,start
" if &t_Co > 2 || has("gui_running")
" syntax on
" set hlsearch
" endif
"
hi linenr term=bold ctermfg=darkblue

" --------------------------------------
" for Chalice

" URLを外部ブラウザ(dillo)で起動
let chalice_exbrowser = 'dillo %URL% &'

" URLを画像ビューア(qiv)で起動
let chalice_exbrowser_0 =
'wget -O /tmp/$USER.img %URL% ; qiv -n /tmp/$USER.img'

" let chalice_exbrowser_0 = 'wget -O /tmp/$USER.img %URL% ; qiv -n /tmp/$USER.img'
let chalice_exbrowser_0 = 'feh %URL% '



" URLを新しいscreenウィンドウ上のw3mで起動
let chalice_exbrowser_1 = 'screen -X screen w3m %URL% '

" プレビューは自動で閉じる
let chalice_previewflags = 'autoclose'

" Chalice起動時は栞を開く
let chalice_startupflags = 'bookmark'
" --------------------------------------

画像を画像ビューアで開く設定がこんなのしか思い浮かびませんでした。
ネット上の画像を直接開ければいいのだけど。

(20080310 追記)
fehというのにしてみました。
ネットワーク上のファイルを直接指定できます。
qiv程ではないですが軽いです。

2007/12/10

OpenBSD/Zaurus + vim

横になりながらOpenBSD/Zaurus(SL-C3000) + w3mで書いてます。
Zaurusって素晴らしい。

ゴロゴロしながらソースコード読むときに便利かと思い、vimを使ってみることにしました。

OpenBSD標準のviやnviも使うときのため、vi, nvi及びvim共通のオプションは$HOME/.exrcに記述し、vim固有のオプション(他のvi系ではエラーになるオプション)は$HOME/.vimrcに記述することにしました。

$HOME/.exrc
set tabstop=4
set showmatch
set autoindent
set number
set showmatch
set shiftwidth=4
set showmode
set tags=./tags

set tagsの設定はタグジャンプのための設定です。


$HOME/.vimrc
source ~/.exrc
nmap :pop
hi linenr term=bold ctermfg=darkblue
set encoding=euc-jp

1行目のsourceは.exrcの設定をvimでも有効にするためのものです。
(vimはデフォルトでは.vimrcが存在するときは.exrcは読み込まないらしい)

2行目nmapc-]でタグジャンプした後、元の位置にc-[で戻れるようにするためです。

3行目のhi linenrはvimでフォルトの行番号が黄色で見づらかったので変更しました。

4行目のset encodingが無いと全角文字の含まれる行の文字数が一行に表示可能な文字数を超えて折り返した場合に文字化けしたり、全角文字を一文字削除しようとした場合に文字化けしたりしました。
(多分全角文字の中の1バイトだけ残して折り返したり削除したりするため)


以前Plamo Linuxでnviをバリバリ使っていたときはそれほど設定を変更せずに使っていたのですが、自動で設定してくれていたのでしょうね。


あとはfile encodingの設定とかあるとは思いますが、困った時にするとします。

2007/08/09

vi検索結果のハイライト

ディストリビューションの環境によってはvi使用中に'/'や'?'で検索すると検索結果に色が付きます(ハイライトする)。
VIMの機能のようです。

私が昔Linuxを常用していた頃はvimではなくnviを使っていました。
検索結果に色を付ける機能がnviに無いのかそれとも設定していなかっただけなのかは分かりませんが、少なくとも私が使用している限りでは色は付きませんでした。


現在常用しているVine Linux 4.1は検索結果に色が付いてしまいます。
色が付くのはいいのですが、付いた後にそれを消す方法を知らなかったので、今更ながらちょっと調べてみました。

(a) ハイライトをvimを使用したまま消す場合
→ nohlsearch コマンドを使用する
:nohlsearch


(b) ハイライトしないようにする場合
→ $HOME/.vimrcに次の記述を追加して色が付く機能を無効化する
set nohlsearch



上記の(a)は面倒だし、(b)のように完全に無効化してしまうのも面白くありません。
そんなことを考えていたらこんな方法がありました。

(c)ESCキー連打でさりげなく色を消す
set hlsearch
nmap <Esc><Esc> :nohlsearch<CR><Esc>


付いた色(ハイライト)を消す方法を知らなかった時に何気なくESCキーを連打してくらいなので、この方法が一番すっきりします。