環境構築・零

環境構築のその先へ

vimconf2019の登壇者に選ばれず自粛していました。

Neovimビルド後、

Tabnineと漆黒の翼をdeopleteで使っている例

f:id:emerald00:20190821151142p:plain
deopleteとTabnine

visual studio 2019
cmake 3.15.2

cmake-3.15.2-win64-x64.msiをダウンロード&インストール。

Download | CMake

git clone https://github.com/neovim/neovim.git
cd neovim
mkdir .deps
cd .deps
cmake -G "Visual Studio 16 2019" ..\third-party -DCMAKE_BUILD_TYPE=Release
cmake --build .

cd ..
mkdir build
cd build
cmake -G "Visual Studio 16 2019" ..\ -DCMAKE_BUILD_TYPE=Release

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe" nvim.sln

visualstudio2019側でReleaseとしてビルドする。

※ プロジェクト / ソリューション上でビルドを実行、

Permission Errorが出るときは管理者権限を付ける。

could-not-find-any-instance-of-visual-studioはC++がインストールされていないためです。

stackoverflow.com

起動時のメッセージ箇所にshareフォルダを解凍して配置

github.com

または、

C:\Program Files (x86)\nvim\share\nvim\runtime を作成します。

クローンしたNeovimフォルダ内 (neovim/runtime)

runtimeフォルダの中身を作成先にすべてコピーアンドペースト。

dein.toml

[[plugins]]
repo = 'tbodt/deoplete-tabnine'
build = 'powershell.exe .\install.ps1'
on_ft = 'ruby,go,perl,python'
on_event = ['InsertEnter']
depends = ['deoplete.nvim']

コード内

TabNine::sem

TabNine::config

直接書く

semで動作します。
configでブラウザが開きます。

これでTabnineがしっかり動きます。

Vim側で機械学習と深層学習を手にしましょう。

PowerShellでビルドできない理由

PowerShellでスクリプトを実行するとセキュリティエラーになるときの対策 – 山本隆の開発日誌

雑談

私はVimに寄付してきたし、VimのTシャツを買ってきているほどVimを愛していました。Vimconf2019で登壇することを挑戦だと想っていたし、Vimの話題をブログに書いたり、プラギン開発が自分のためだけではないことを知っていました。しかし、rejectされたときに、私は活動のすべてを全否定されたように想いました。チケットなどもらってもうれしくはないし、それよりかサンクコストから逃れるために自分にかけていた条件、先のみえないものに投資することを諦めようと想いました。やはり何者にはなれないという現実。挑戦は単なる宣伝だったのかと、少し残念です。またいつか、Vimに関して現実が受け入れられるようになったらTwitterのプロフィールにでも書くかな。Vimアドベントカレンダーに投稿するのも控えます。Vimのコミュニティとは短い期間でしたが、ありがとうございました。お世話になりました。

設定ファイルまとめ

github.com

起動時にメッセージがでることがあります。

the neovim process has crashed

neovim\.deps\usr\bin内

lua51.dll
msgpackc.dll
uv.dll

3点をneovim/build/binに移動すると解決します。

ISSUEには書かれていないので、試してみましょう。

Rubyシェル芸人

#!/usr/bin/env ruby
# vim: filetype=ruby

def sa
   di = Random.rand(4)
    case di
      when 2 then
        print ""
      when 1 then
        print ""
      when 0 then
        print ""
      else
        print ""
    end
end

sa
sa
sa
sa
print ""
sa
sa

#シェル芸

先頭に付与

#!/usr/bin/env ruby
# vim: filetype=ruby

末尾に付与

#シェル芸

Rubyでシェル芸を披露したのでシェル芸人名乗ってみます。

Deniteの最新に対する所感

github.com

環境

・Vim8.1+Python3+mrkn256(カラースキーマ)

qiita.com

.vimrc

autocmd FileType denite call s:denite_my_settings()
function! s:denite_my_settings() abort
  nnoremap <silent><buffer><expr> <CR>
  \ denite#do_map('do_action')
  nnoremap <silent><buffer><expr> d
  \ denite#do_map('do_action', 'delete')
  nnoremap <silent><buffer><expr> p
  \ denite#do_map('do_action', 'preview')
  nnoremap <silent><buffer><expr> q
  \ denite#do_map('quit')
  nnoremap <silent><buffer><expr> i
  \ denite#do_map('open_filter_buffer')
  nnoremap <silent><buffer><expr> <Space>
  \ denite#do_map('toggle_select').'j'
endfunction

autocmd FileType denite-filter call s:denite_filter_my_setting()
function! s:denite_filter_my_setting() abort
  inoremap <silent><buffer><expr> <BS>    denite#do_map('move_up_path')
  inoremap <silent><buffer><expr> <C-c>   denite#do_map('quit')
  nnoremap <silent><buffer><expr> <C-c>   denite#do_map('quit')
endfunction

使い方

:Denite file/rec buffer

i (インサートモード)→検索したい文字列(ウインドウが増える)→補完リストが表示される→選択→バッファに移動→表示したいファイルを選択→ファイルへ移動

まだまだカスタムオプションがあるので改良は出来そう。シンプルで、いい感じなのはみた感じ明らか。

※ こういう操作もある。docには可能性が書かれている。

体験談。短め。

きっかけを作り、転職活動をしようと転職サイトを探した。Findy、プロシード、Green。なかでGreenに力を入れて、とりあえず最初にきた求人に応募して面談をしてみた。Wantedlyよりも好感触で実際、もしかしたらPHPを書くかもしれないと夢をみたほどだった。ニコニコ仮面め。C社は、役員会議で採用、不採用を決めるらしい。終始相手のペースで、こちらからどのような結果か打診をしても、判断はあちら側のような形で、時間を大幅にロストした。就活で必要なのはスピード。自分から攻撃的に進んで、積極性をみせないと進まない。渋る場合が多い。Greenを結局は、退会した。履歴書が悪かったわけじゃないと言われたので経歴をDisられることはなかった。面接時に、採用する気もなく相手を圧迫する行為というのはなるべくやめてほしい。相手も真剣にきているのだから。ハロワもそうだけど、だいたい決まることが少ない。IT系は年齢、年齢を積み重ねることでしか得られない資格もありながら、結局は経験。30代後半40代近いと転職活動はつらいものだ。

ビルド式

自前ビルド版

gist.github.com

使っているオプションにはメッセージを入れている。

Vim8.1の自前ビルド版。

興味がある人は参考に。

[deoplete] deoplete requires vim-hug-neovim-rpc plugin in Vim.

Vim(pythonx):ModuleNotFoundError: No module named 'neovim'

※Vimが連携するはずのpython3と繋がっていない。
pip3 install neovim, pip3 install pynvimが認識されていない原因がある。
Vimから:echo exepath('python3')で繋がっている先を確認後対処。



error: invalid command 'bdist_wheel'

※ wheelライブラリが入っていないので入れます。

pip install wheel



E370: ライブラリ libpython3.7m.a をロードできませんでした

pythonを使ったあとにpy3は使えません

Python3の接続先が間違っているため、ビルドオプションを見直す必要があります。
再ビルドするときは、レポジトリをクローンし直すのもいいかもしれません。

※ どれもVimとPython3、pip3でpynvimがきちんと接続されて
認識できるように環境構築されれば発生しません。
そうならない理由を開発者の方に
質問するまえに考えてみるのも一つの手です。

2次元配列のソートをRubyで書いてみた。

gist.github.com

課題は上記の通り、実装時にCSVを配列に型変換をしてメソッドチェーン、array型にしてメソッドチェーン、CSVに整形という形にしました。カラムを縦列で読み込めればまた方法は違うだろうし、テーブルとして取得したならさらに結果に近いものを書けたと思いつつ。uniqを使うと重複を消せると言うけども、これ2次元配列なんだよね。sliceで指定して削除も多様性がないと思いつつ。ただ、重複した配列はソートすると最後に1番目が並ぶ法則を見つけたのも事実。やりようによってはというやつ。やっていることは「1番目をソートして、重複している2番目を消す」です。

よき課題でした。

自作のプログラムで令和対応してみた。

新年号に対応することに失敗するのはポンコツぐらいですね。

ただ、私のは限定的なので更新要素はあります。

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