読者です 読者をやめる 読者になる 読者になる

ひとときのコーヒーブレイク

JavaとRubyを書く人が、そのときのモチベーションで話題を綴っていきます。

Vimに関する会話記録。

Vim プラギン

まず私から...

と質問しました。

暗黒美夢王さんの答えは、

これは衝撃でした。Vim8.0にはdenite.vimが導入できるようです...

暗黒美夢王さんの公式アナウンスを待ちたいですね。

私は、uniteをとても気に入っているので、こうつぶやいてました。

質問が来ました(暗黒美夢王さんから)

こういうやりとりがありました。

denite.vimにuniteが置き換えられる日が近いですね。

Vimのプラギンが変わっていくのをみれる時代にいて光栄だと想いませんか?

はてなブログに移行して、800記事。

800記事 キリ番

想えば、はてなダイアリーから移行して、はてなブログを書き始めて(両方併せて)、この記事で800記事。

よく、環境構築の話が尽きなかったなとしみじみ、さらに話題を変えて、仕事の話、雑感、ITにまつわらない話まで、いろいろ書いてきた。

読んでくれるのはどうも、誰も書いていないようなRuby/Tk話や、最近はVimとNeoVimの話がアクセスが多い。

Rubyの話もしているけど、ほかのライターの人は、RubyPythonなどと比較した話や、今なら型変換の話などをよく見かける。

書いてみたいのが、書籍を読んでの内容に関する考察、しかし著作権も絡んでいるので範囲が難しい。

これからもなんとなく、記事を更新していく。

今後は節約志向で、他にサイトを持つなりするために、

はてなブログの有料版を使っているが、広告ありの無料版に移行していくかもしれない...

それくらいを書いてきたし、ライティングをしてきた。

記事数は、記事を公開するボタンまたは記事を更新するボタンで確認している...

現在のBMI指数

BMI 測定

過去に、BMIRuby/Tkで作成した記事を作成していた

blog.takkii.org

いつからFixnum or Bignumとエラーメッセージが流れず、小数点が表示されるようになったのか、うろ覚え。

zinbeiでCLIを作ったときは、BMIが小数点表示できず、機能追加をしなかったような...

しかし、私のBMI指数は上がっているので、気をつけたい。

#coding: sjis

class Bmi
    def tested

        weight = 102 # 体重入力
        height = 1.75 # 身長入力

        result = weight / (height * height) # 計算結果
        result.round # 出力と四捨五入
        
    case result.round
    
    when 10..17
        puts "やせてますね"
    
    when 18..24
        puts "標準です"
    
    when 25..29
        puts "肥満度[1]です"
    
    when 30..34
        puts "肥満度[2]です"
    
    when 35..39
        puts "肥満度[3]です"
    
    when 40..50
        puts "肥満度[4]です"
    
    end
    end
end

Bmi.new.tested

1行コード、; (セミコロン)で区切りました。

class Bmi ; def tested ; weight = 102 ; height = 1.75 ; result = weight / (height * height) ; case result.round ; when 10..17 ; puts "やせてますね" ; when 18..24 ; puts "標準です" ; when 25..29 ; puts "肥満度[1]です" ; when 30..39 ; puts "肥満度[2]です" ; when 35..39 ; puts "肥満度[3]です" ; when 40..50 ; puts "肥満度[4]です" ; end ; end ; end ; Bmi.new.tested

実行結果

肥満度[2]です

RubyKaigi2016(初日 9/8 )に一般参加してきました

RubyKaigi2016 初日 日帰り

f:id:emerald00:20160909140111g:plain

f:id:emerald00:20160909140112g:plain

北陸からRubyistで付箋を貼っている人がいないのがなんだか残念だったので、ペタりとTwitterアカウントを書いて残してきました。

お土産のTシャツを妻に渡したら、こんな風に使ってもらえることになりました。

サンダーバード大阪行きを京都で降りて、京都から地下鉄烏丸線で国際会議場駅で降りてあとは本館まで歩く→帰りは逆順路を辿る...ことで今回のRubyKaigiは日帰りできた。

Schedule - RubyKaigi 2016

Room Dで講演していた13:30~

Welcome to haconiwa - the (m)Ruby on Container
Uchio KONDO @udzura

Main Roomで講演していた14:20~

A proposal of new concurrency model for Ruby 3
Koichi Sasada @ko1

2講演を視聴して、午後休憩でそそくさと帰路につき、お土産を購入して帰りました。

自由配布していた、ステッカーは、Surfaceに思い出として貼りました。

英語のスピーチが多く、国際化しているRuby会議の印象があったので、ニュアンスのとらえどころで笑えたり...

ユーモアのある話しぶりが記憶に残っています。日本語と英語を混ぜていたり...

前よりもっとRubyを好むようになりRuby3が登場する日を心待ちにしています。

購入した書籍

dRubyによる分散・Webプログラミング

dRubyによる分散・Webプログラミング

.vimrcの正しいあり方を考察する

Vim .vimrc

設定を詰めるというのはどういう行為か。

まとめてくれる、頼れる人がいるというのはいいコミュニティですね。

まとめられたら参考にしたい。

.vimrcを複数別で管理するのが主流なのだという結論で、

これから.vimrcなどの設定ファイルをVimに与えていく。

追記 : コード量を減らす、そして処理を減らしてVim Scriptの読み込みを最小限にするべきなのか...

deinでVimのプラギン管理。

Vim dein 移行

環境

Windows10

kaoriya Vim 64bit (7.4.1944)

NeoBundleからdeinに移行することを思い当たって、1からVim環境を作り治した。(もちろん、NeoBundleに戻れるようにバックアップをとって→しかしもう必要ない)

※ $はコマンドに含めない

$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh

$ sh ./installer.sh

installer.shというファイルが実行したディレクトリに追加される。さぁ、deinを始めよう。

みているとdein/bin/にinstaller.shが存在するから消してもいいと判断した。rm -rf installer.shでファイルを消した(慎重に熟考)。

.vimrcにはこうやって書いている。.cacheにまとめるのが通例らしいが私は.vimにまとめた→フォルダを乱雑にしたくないため。

.vimrcファイルには、dein.tomlとdein_lazy.tomlを読み込むようにしている。

さらに足りない部分は、.gvimrcに追加している。

※$HOME→ユーザディレクトリ(例 C:\Users\ユーザ名)

・.vimrc → $HOME/

・.gvimrc → $HOME/

・dein.toml → mkdir $HOME/.vim/rc → $HOME/.vim/rc/dein.toml(保存場所)

・dein_lazy.toml → $HOME.vim/rc/dein_lazy.toml(保存場所)

つまり、4つの設定ファイルを使ってVimを支えるよう設定。

指摘があったので、修正しました。

① .vimrc

if &compatible
  set nocompatible
endif

" reset augroup
augroup MyAutoCmd
  autocmd!
augroup END

" dein settings {{{

let s:cache_home = empty($XDG_CACHE_HOME) ? expand('~/.vim') : $XDG_CACHE_HOME
let s:dein_dir = s:cache_home . '/dein'
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
if !isdirectory(s:dein_repo_dir)
  call system('git clone https://github.com/Shougo/dein.vim ' . shellescape(s:dein_repo_dir))
endif
let &runtimepath = s:dein_repo_dir .",". &runtimepath

if dein#load_state(s:dein_dir)

  let g:rc_dir    = expand('~/.vim/rc')
  let s:toml      = g:rc_dir . '/dein.toml'
  let s:lazy_toml = g:rc_dir . '/dein_lazy.toml'
  call dein#load_toml(s:toml,      {'lazy': 0})
  call dein#load_toml(s:lazy_toml, {'lazy': 1})
  
  call dein#begin(s:dein_dir)
  cd $HOME/Documents
  call dein#add('scrooloose/nerdtree')
  autocmd VimEnter * execute 'NERDTree'
  
  call dein#end()
  call dein#save_state()
  
if dein#check_install()
  call dein#install()
endif

endif

let g:precious_enable_switch_CursorMoved = { '*': 0, 'help': 1 }
autocmd MyAutoCmd InsertEnter * :PreciousSwitch
autocmd MyAutoCmd InsertLeave * :PreciousReset

"-------------------------------------------------------------------------------
" neocomplete
"-------------------------------------------------------------------------------
let g:acp_enableAtStartup = 0
let g:neocomplete#enable_at_startup = 1
let g:neocomplete#sources#omni#input_patterns = {
\   "ruby" : '[^. *\t]\.\w*\|\h\w*::',
\ }

let g:neocomplete#keyword_patterns = {}
let g:neocomplete#keyword_patterns['gosh-repl'] = "[[:alpha:]+*/@$_=.!?-][[:alnum:]+*/@$_:=.!?-]*"
vmap <CR> <Plug>(gosh_repl_send_block)

" Use neocomplete.vim
let g:neocomplete#sources#omni#input_patterns = {
\   "ruby" : '[^. *\t]\.\w*\|\h\w*::',
\}

" Set async completion.
let g:monster#completion#rcodetools#backend = "async_rct_complete"

" With neocomplete.vim
let g:neocomplete#sources#omni#input_patterns = {
\   "ruby" : '[^. *\t]\.\w*\|\h\w*::',
\}

" With deoplete.nvim
let g:monster#completion#rcodetools#backend = "async_rct_complete"
let g:deoplete#sources#omni#input_patterns = {
\   "ruby" : '[^. *\t]\.\w*\|\h\w*::',
\}

call dein#clear_state()

② dein.toml

[[plugins]]
repo = 'Shougo/dein.vim'

[[plugins]]
repo = 'Shougo/vimproc.vim'
hook_post_update = '''
  if dein#util#_is_windows()
    let cmd = 'tools\\update-dll-mingw'
  elseif dein#util#_is_cygwin()
    let cmd = 'make -f make_cygwin.mak'
  elseif executable('gmake')
    let cmd = 'gmake'
  else
    let cmd = 'make'
  endif
  let g:dein#plugin.build = cmd
'''

[[plugins]]
repo = 'delphinus35/typescript-vim'
rev  = 'colorize-template-strings'

[[plugins]]
repo = 'elzr/vim-json'
if   = '''! has('kaoriya')'''

[[plugins]]
repo    = 'vim-airline/vim-airline'
depends = ['vim-airline-themes']

[[plugins]]
repo = 'vim-airline/vim-airline-themes'

[[plugins]]
repo = 'osyo-manga/vim-precious'
depends = ['context_filetype.vim']

[[plugins]]
repo = 'Shougo/context_filetype.vim'

[[plugins]] # toml syntax
repo = 'cespare/vim-toml'
on_ft = 'toml'

[[plugins]] # カラースキーマ
repo = 'w0ng/vim-hybrid'
hook_add = '''
  set background=dark
  au MyAutoCmd VimEnter * nested colorscheme hybrid
'''

[[plugins]]
repo = 'scrooloose/syntastic.git'

[[plugins]]
repo = 'astashov/vim-ruby-debugger'

[[plugins]]
repo = 'thinca/vim-ref'

③ dein_lazy.toml

[[plugins]]
repo  = 'Quramy/tsuquyomi'
on_ft = ['typescript']

[[plugins]]
repo = 'Shougo/neocomplete.vim'
on_i = 1

[[plugins]]
repo = 'Shougo/deoplete.nvim'
if = 'has("nvim")'
on_i = 1

[[plugins]]
repo = 'davidhalter/jedi-vim'
on_ft = 'python'

[[plugins]]
repo   = 'Shougo/unite.vim'
depends = 'neomru.vim'

[[plugins]]
repo      = 'Shougo/neomru.vim'
on_source = ['unite.vim']
on_path = '.*'

[[plugins]]
repo = 'jiangmiao/auto-pairs'
on_i = 1

[[plugins]]
repo = 'Shougo/neoyank.vim'
on_path = '.*'
on_i = 1

[[plugins]]
repo      = 'thinca/vim-prettyprint'
on_cmd    = ['PP', 'PrettyPrint']

[[plugins]]
repo   = 'thinca/vim-fontzoom'
on_cmd = ['Fontzoom']
on_map = ['<Plug>(fontzoom-']
gui    = 1

[[plugins]]
repo = 'Shougo/neosnippet.vim'
depends = ['neosnippet-snippets']
on_i = 1
on_ft = ['snippet']

[[plugins]]
repo = 'Shougo/neosnippet-snippets'

[[plugins]]
repo = 'osyo-manga/vim-monster'

[[plugins]]
repo = 'Shougo/vimshell'
rev = '3787e5'

[[plugins]]
repo = 'croaker/mustang-vim'

[[plugins]]
repo = 'thinca/vim-quickrun'

[[plugins]]
repo = 'ervandew/supertab'

[[plugins]]
description = 'F# support for Vim'
repo = 'fsharp/vim-fsharp'
lazy = 1
on_ft = 'fsharp'
build = 'make fsautocomplete'

[[plugins]]
repo = 'tyru/open-browser.vim'
on_map = ['<Plug>(openbrowser-smart-search)']

④ .gvimrc

set guioptions-=T

set lines=90

set columns=150

set splitbelow

set nobackup

set noundofile

set noswapfile

syntax enable
set number

set background=dark

set splitbelow

set wildmenu

set wildmode=list:full 

autocmd GUIEnter * set transparency=210

vimproc.vimについて

vimproc_win64.dll not found.

もし、こんなVimで入力補完時に流れるエラーメッセージがあったら、

コマンドプロンプトを起動しvimproc.vim/に移動、

make -f make_mingw64.mak

を実行すると、/libにvimproc_win64.dllができているはずでこれを、.vim/dein/.dein/libにコピーするとエラーは言わなくなる。.vimのところは人によっては.cacheかもしれない。

ざっくばらんに書いていったが、deinに変更はできている。NeoVimではなくVimのdeinプラグイン管理記事。

参考になれば、私の時間も無駄にならない。

追記 : たまには、コーヒーブレイクでもしませんか。

ダウンロード先

github.com

追記 : この場で例にしているソースは、ユーザ定義補完がうまく動作していません。どうやらスニペットが強く動いているようです。ダウンロード先のファイルで、RSenseとvim-monsterに対応しているソースを公開しています。どちらを利用しているかによりますが、環境にあった例をみて、設定ファイルを作成していくのがよろしいかと更新しました。どうぞ、ご覧くださいませ。※美夢王さんが、Twitterでよく話に付き合ってくれたので、記事として公開しようと試みた行動結果です。人の思いを無駄にせず、いいとこ取りをしていけば、すばらしいVimまたはNeoVimに会えるのではないかと期待してます。ぼくがつくりあげた最強のVim、ほんとうにできるかもしれませんね...それだけのプラギンがVimには開発者がいてそろっているのが素晴らしいところ。

UNIX環境としてのCentOSという選択肢。

仮想環境 CentOS

msys2でRailsをしていると、よくわからない範囲で盛大にgemがエラーを起こしてインストールできないことに直面する。ある人には特殊な環境と言われる、dockerを検討するように言われる、経験とかどうでもいいが、Windowsは茨の道だ。そこで、vagrantがあるvirtualboxという選択肢、そのさきにCentOS7がある。このとき、CentOSのアップグレードは、バックアップをとってからの新規インストール推奨しているので、5や6からだと新しく入れ直すほかない。内部のアプリが古いため、Rubyなどでも最新版がrbenvで入らないことを確認している。ぜひ、7を検討すべきだ。

20GBの容量で、固定、に設定していて、ライブラリやアプリを入れると容量が足りないとメッセージが流れるようになって、可変で容量を増やす設定をしようとしていたら、マネージャープログラムの実行にはコマンドラインを作成したvdiの引き継ぎには、GUI環境を使うことになったが、コマンドラインですべて終わるようにならないものかと、気持ちが悪かった、がちゃんと、引き継ぎができてよかった。これで心置きなく、開発ができる。

VScodeに期待していて、Atomエディタをだいぶ前に、エディタとしての選択肢から外していたのだが、ブログをみていたりすると、かなり使えるようになっているようだったので、再インストールした。さっそく使っているが、便利になっている。sublime textと2手に分かれそうだが、開発のエディタはいろいろあったほうが用途によるので、転ばぬ先の杖になる。1つのエディタで、すべてをこなすようなそんな状態ではなんだか、せっかくの機会を逃しているようでさみしい。

もうすぐ、RubyKaigi2016、参加してきたい。

Copyright © 2007-2016 Takayuki Kamiyama. All Rights Reserved.