virtualenvで入れたモジュールをjedi.vimが補完する方法
方法と言っても、よく分からないままにやっていたら出来たくらいの内容をメモしておくだけですが…
結論から言えば…
- virtualenvwrapperを入れてしまうこと
- vim-virtualenvをvimにインストールする
- ちなみに、僕はguiなMacVimを使ってます
- NeoBundleでよしなにしよう
virtualenvwrapperに頼らずに、virtualenvだけで運用したいと思ったりもしたんですが、結局のところwrapperの方をサッサと入れてしまうのが正解でした。むしろvim-virtualenvがwrapperをインストールしてあることを前提に動いている気がします。
上のリンクのとおりにvirtualenvwrapperをインストールしたならば、~/.virtualenvsに仮想環境が作成されていくと思います。で、vim-virtualenvは、デフォルトでこのディレクトリを見に行ってくれるので、特に設定は必要ありませんでした。
vim-virtualenvをインストールしたら、
:VirtualEnvList
とすれば、vim-virtualenvの見ているディレクトリ下に存在する仮想環境が一覧で表示されます。
また、
:VirtualEnvActivate hogehoge
で任意の仮想環境を有効化できます。有効化した仮想環境内のモジュールは、その後jedi.vimで保管できるというわけですね。
ちなみにtabで保管できるので、別にlistで出す必要は特にない気もします。ガンガンtabキー押しましょう。
ステキ感溢れますね。
それでは
Macbook Pro Retina 15inch (Mid 2014)買った
Mid2014って表記で合ってるよね?よく分かんねー。
これまでメインで使ってきた15inchなMacbook Pro (Mid 2010)がそろそろ限界を迎えつつあって、バッテリーは持たないしHDDにアクセスがある度にレインボーカーソルが回りまくるといった状況だった。*1
買い換えるにはなんとなく良いタイミングの気もしたので、Retinaな15inchに乗り換えることにした。AppleStoreに行ったら学割も効いてそれなりに安くなりました。それなりにはね。
USキーボードが欲しい場合には自動的にAppleStore一択になりますな。家電量販店で吊るしのモデルでUSってのはほとんどないみたいですし(いちおうヨドバシでも確認した)
で、「やっぱ最新機種ははえーなースゲーなー」とか「Retina Pero Pero」とか感想はいろいろあるんだけど、ほどほどにして、買ってからやったことのメモ。
なにはともあれ、クリーンインストール
多分ぼくが神経質すぎるかつ物好きなだけだけど、とりあえずクリーンインストールした。旧ProのほうでUSBにインストールディスクを作っておいて、そこから。買ったままだと、使いもしないiWorkのアプリとか旧iLifeなアプリとかがガッツリ入ってて残念な気持ちになるので…(普通に消せよって話)
Command+Rを押しながら起動して、ディスクユーティリティでMacなディスクを空っぽにしてからOSXを再インストールするだけの簡単なお仕事です。 気分も爽やかですね。
もろもろのアプリの設定
System Preferences系
- システムの言語は英語
- TrackpadでTap to Clickをオン
- Three finger DragとLook upは両方オフ(BetterTouchToolsと競合するので)
- AccessibilityからMouse&Trackpadに行って、Optionからドラッグロックをオンにする
Homebrew経由系
Cask系
$ brew install caskroom/cask/brew-cask
zshの設定
黙ってoh-my-zshを入れる それ以上は分からん
### Exports ### export LANG=ja_JP.UTF-8 export PYTHONPATH=/Users/hoge/usr/local/lib/python2.7/site-packages export EDITOR=/Applications/MacVim.app/Contents/MacOS/Vim export PATH="$PATH:$HOME/bin" #自作コマンド ### Oh My Zsh Configuration ### # Path to your oh-my-zsh installation. export ZSH=$HOME/.oh-my-zsh ZSH_THEME="ys" ENABLE_CORRECTION="true" plugins=(git) source $ZSH/oh-my-zsh.sh DISABLE_UPDATE_PROMPT=true #shut up and update ### Alias ### #alias vi='env LANG=ja_JP.UTF-8 /Applications/MacVim.app/Contents/MacOS/Vim "$@"' #alias vim='env LANG=ja_JP.UTF-8 /Applications/MacVim.app/Contents/MacOS/Vim "$@"' alias mvim="reattach-to-user-namespace mvim --remote-tab-silent " #reattach~しないとtmuxからの起動でコピペが効かずにブチ切れる羽目になる alias vim="reattach-to-user-namespace mvim --remote-tab-silent " alias vi="reattach-to-user-namespace mvim --remote-tab-silent " alias py='python' alias ipy='ipython' alias ssh='nocorrect ssh' alias -g L='| less' alias -g H='| head' alias -g T='| tail' ###Plugin settings ### #cdr - cd history autoload -Uz add-zsh-hook autoload -Uz chpwd_recent_dirs cdr add-zsh-hook chpwd chpwd_recent_dirs ### Some random settings ### #PythonでPATHを通す設定 よくわからん # 重複パスを登録しない typeset -U path cdpath fpath manpath # sudo用のpathを設定 typeset -xT SUDO_PATH sudo_path typeset -U sudo_path sudo_path=({/usr/local,/usr,}/sbin(N-/)) path=(~/bin(N-/) /usr/local/bin(N-/) ${path}) #save zsh history HISTFILE=~/.zsh_history HISTSIZE=100000 SAVEHIST=100000 #notify zsh via notification-center source ~/.zsh/zsh-notify/notify.plugin.zsh export SYS_NOTIFIER="/usr/local/bin/terminal-notifier" #zsh-completions if [ -e /usr/local/share/zsh-completions ]; then fpath=(/usr/local/share/zsh-completions(N-/) $fpath) fi
Vimの設定
macvim-kaoriya - MacVim KaoriYa - Google Project Hostingから落とす!
.vimrcは以下
set nocompatible filetype off "--------------------------- " Start Neobundle Settings. "--------------------------- " bundleで管理するディレクトリを指定 set runtimepath+=~/.vim/bundle/neobundle.vim/ " Required: call neobundle#begin(expand('~/.vim/bundle/')) " neobundle自体をneobundleで管理 NeoBundleFetch 'Shougo/neobundle.vim' "NeoBundle 'scrooloose/nerdtree' NeoBundle 'itchyny/lightline.vim' NeoBundle 'jeffreyiacono/vim-colors-wombat' NeoBundle 'nathanaelkane/vim-indent-guides' " vim-indent-guides let g:indent_guides_enable_on_vim_startup=1 let g:indent_guides_guide_size=1 NeoBundle 'Shougo/unite.vim' " 入力モードで開始する "let g:unite_enable_start_insert=1 " バッファ一覧 nnoremap <silent> ,ub :<C-u>Unite buffer<CR> " ファイル一覧 nnoremap <silent> ,uf :<C-u>UniteWithBufferDir -buffer-name=files file<CR> " レジスタ一u nnoremap <silent> ,ur :<C-u>Unite -buffer-name=register register<CR> " 最近使用したファイル一覧 nnoremap <silent> ,um :<C-u>Unite file_mru<CR> " 常用セット nnoremap <silent> ,uu :<C-u>Unite buffer file_mru<CR> " 全部乗せ nnoremap <silent> ,uo :<C-u>Unite bookmark<CR> let g:unite_source_history_yank_enable = 1 nnoremap <silent> ,uy :<C-u>Unite history/yank<CR> " ウィンドウを分割して開く au FileType unite nnoremap <silent> <buffer> <expr> <C-j> unite#do_action('split') au FileType unite inoremap <silent> <buffer> <expr> <C-j> unite#do_action('split') " ウィンドウを縦に分割して開く au FileType unite nnoremap <silent> <buffer> <expr> <C-l> unite#do_action('vsplit') au FileType unite inoremap <silent> <buffer> <expr> <C-l> unite#do_action('vsplit') " ESCキーを2回押すと終了する au FileType unite nnoremap <silent> <buffer> <ESC><ESC> :q<CR> au FileType unite inoremap <silent> <buffer> <ESC><ESC> <ESC>:q<CR> NeoBundle 'Shougo/neomru.vim' NeoBundle 'Shougo/vimfiler' "Settings for vimfiler "vimfilerをデフォルトのファイラーとして使う let g:vimfiler_as_default_explorer = 1 "現在開いているバッファのディレクトリを開く nnoremap <silent> <Leader>fe :<C-u>VimFilerBufferDir -quit<CR> "現在開いているバッファをIDE風に開く nnoremap <silent> <Leader>fi :<C-u>VimFilerBufferDir -split -simple -winwidth=35 -no-quit<CR> "Safe Modeは要らんですよ let g:vimfiler_safe_mode_by_default = 0 NeoBundle 'davidhalter/jedi-vim' "docstringは表示しない autocmd FileType python setlocal completeopt-=preview NeoBundle 'vim-scripts/YankRing.vim' let g:yankring_history_dir = '~/Documents' NeoBundle 'scrooloose/syntastic' "文法確認 よくない NeoBundle 'mhinz/vim-startify' let g:startify_bookmarks = [ \ '~/.vimrc', \ '~/.gvimrc', \ '~/.zshrc', \ ] NeoBundle 'tyru/caw.vim.git' nmap <C-K> <Plug>(caw:i:toggle) vmap <C-K> <Plug>(caw:i:toggle) call neobundle#end() " Required: filetype plugin indent on " 未インストールのプラグインがある場合、インストールするかどうかを尋ねてくれるようにする設定 " 毎回聞かれると邪魔な場合もあるので、この設定は任意。 NeoBundleCheck "------------------------- " End Neobundle Settings. "------------------------- "------------------------- "Start Lightline.vim settings "------------------------- set laststatus=2 set t_Co=256 let g:lightline = { \ 'colorscheme': 'wombat', \ 'component': { \ 'readonly': '%{&readonly?"⭤":""}', \ }, \ 'separator': { 'left': '⮀', 'right': '⮂' }, \ 'subseparator': { 'left': '⮁', 'right': '⮃' } \ } "-------------------------- "End Lightline.vim settings "-------------------------- "-------------------------- "Start Vim settings "-------------------------- syntax on set encoding=utf8 set fileencoding=utf-8 "スクロールするときに下が見えるようにする set scrolloff =5 " .swapファイルを作らない set noswapfile " バックアップファイルを作らない set nowritebackup " バックアップをしない set nobackup " バックスペースで各種消せるようにする set backspace=indent,eol,start " ビープ音を消す set vb t_vb= set novisualbell " OSのクリップボードを使う set clipboard+=unnamed set clipboard=unnamed set clipboard+=autoselect " 不可視文字を表示 set list " 行番号を表示 set number " 右下に表示される行・列の番号を表示する set ruler " compatibleオプションをオフにする set nocompatible " 移動コマンドを使ったとき、行頭に移動しない set nostartofline " 対応括弧に<と>のペアを追加 set matchpairs& matchpairs+=<:> " 対応括弧をハイライト表示する set showmatch " 対応括弧の表示秒数を3秒にする set matchtime=3 " ウィンドウの幅より長い行は折り返され、次の行に続けて表示される set wrap " 入力されているテキストの最大幅を無効にする set textwidth=0 " 不可視文字を表示 set listchars=tab:»-,trail:-,extends:»,precedes:«,nbsp:%,eol:↲ " インデントをshiftwidthの倍数に丸める set shiftround " 補完の際の大文字小文字の区別しない set infercase " 小文字の検索でも大文字も見つかるようにする set ignorecase " ただし大文字も含めた検索の場合はその通りに検索する set smartcase " インクリメンタルサーチを行う set incsearch " 検索結果をハイライト表示 set hlsearch " コマンド、検索パターンを10000個まで履歴に残す set history=10000 " マウスモード有効 set mouse=a " コマンドを画面最下部に表示する set showcmd " 新しく開く代わりにすでに開いてあるバッファを開く set switchbuf=useopen " バッファを閉じる代わりに隠す set hidden " 0埋めの文字でCtrl+aする際に10進数も認識させる set nf= " 画面に表示されるタブ幅 set tabstop=4 " タブをスペース展開 set expandtab " インデント時のスペース数 set shiftwidth=4 " タブが押された場合にtabstopでなく、shiftwidthの数だけインデントする set smarttab " 自動インデント set autoindent "-------------------------- "End vim settings "-------------------------- "-------------------------- "KEY BINDINGS "-------------------------- " 入力モード中に素早くjjと入力した場合はESCとみなす inoremap jj <Esc> " ESCを二回押すことでハイライトを消す nmap <silent> <Esc><Esc> :nohlsearch<CR> " TABにて対応ペアにジャンプ nnoremap <Tab> % vnoremap <Tab> % " 表示行単位で上下移動するように nnoremap j gj nnoremap k gk nnoremap <Down> gj nnoremap <Up> gk " 逆に普通の行単位で移動したい時のために逆の map も設定しておく nnoremap gj j nnoremap gk k " Ctrl + hjkl でウィンドウ間を移動 nnoremap <C-h> <C-w>h nnoremap <C-j> <C-w>j nnoremap <C-k> <C-w>k nnoremap <C-l> <C-w>l "インサートモードでも移動 inoremap <c-j> <down> inoremap <c-k> <up> inoremap <c-h> <left> inoremap <c-l> <right> "-------------------------- "SETTINGS FOR PYTHON "-------------------------- autocmd FileType python setl autoindent autocmd FileType python setl smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class autocmd FileType python setl tabstop=8 expandtab shiftwidth=4 softtabstop=4 autocmd BufNewFile *.py 0r $HOME/.vim/template/python.txt "-------------------------- "SETTINGS FOR PYTHON ENDS HERE "--------------------------
コピペの産物ともいう
以上がんばると
すごくかっこいい
まあ大体こんな感じ。
ドイツでVodafoneのデータSIMカードを使ってみた感想
所要で3週間ほどドイツに行ったのだけど、その時にVodafoneのデータSIMカードを使う機会があった。
事前に少々調べてから行ったのだけど、T-MobileのTriple-Xtraがオススメとのことだった。どうやらT-Mobileがドイツではシェアが一番らしくて、エリア的にも日本のdocomoに該当するらしい。
ただこのプラン、データ通信に加えて通話とかSMSのプランも一緒になっているということで、データ通信だけできればいい僕にとっては微妙だなーという感じであった。
実際に現地に着いてから色んなショップを回った限りでは、VodafoneのWebsSessionsというプランが一番良い感じであったので、契約することにした。
Vodafone Websessions: Prepaid Internet - mobil mit Laptop und Tablet surfen
VodafoneのWebSessionsがオススメの理由
- 純粋にデータ通信のみのプランで、わかりやすい
- 200MB、1GB、3GB、5GBなど用途に合わせて様々なデータ容量が選べる
- Normal、Micro、Nanoのサイズが揃っているので、SIMカッターなどが不要
- 有効期間は一月と、短期の滞在には十分。
- スーパー等で買うMVNOのSIMと違って、店員さんがAPN等含めて全ての設定をやってくれる
僕はVodafoneの直営店に直接行って契約した。その際、滞在先のホテルの住所が必要だったので注意。
Vodafoneの電波自体は可もなく不可もなく…と言った感じ。町中では3Gレベルの高速通信ができるけど(ほとんど不満なく使える速さ)、電車内や高速道路などではほとんど電波を掴まなかった。まあ、日本でも田舎ではそんな感じだと思いますが。
ちなみに、もしも容量を使いきってしまった場合は、SIMに紐つけられた番号にチャージが可能で(iTunesカード的なシステム)、そのチャージからまた容量を買うことができる。チャージ自体は、直営店でもできるし、キオスクやガソリンスタンドでも可能(ドイツ語がわからないなら直営店に行くのがオススメ)
参考までに、使った端末はauのLGL22(isai)のSIMロックを解除したもの。挿したら使えたので、周波数帯とかの難しい話はよく分かりません。
あと、ドイツマジオススメなのでみんな行くべき。
「幸福な生活」読んだ
最後のページにオチの一行だけを持ってくる構成は面白かった。
ただ、オチが読めてしまったり、オチ自体がしっくりときていない作品が多かった印象。
良かったのは「母の記憶」と「夜の訪問者」だろうか。
プリズンブレイクを観終わった感想
プリズンブレイクをシーズン1~4まで全部観終わった。
以下、感想とツッコミを箇条書きで書いておく。ネタバレ。
- アブルッチ殺すの早すぎ。悪役キャラを早く葬ったせいでシーズン2はティーバッグぐらいしか見どころがなくなった。
- シーズン2以降、マイケルがサラサラうるさい。冷静沈着キャラがサラのせいで台無しになってる感。あとスキュラ集める任務中なのに避妊もしないとかバカなの?
- なんで最後マイケル殺すの?なんやかんやあって自由を手に入れて幸せに余生を過ごした設定じゃだめなの?脳腫瘍で殺すんだったらなんで手術やら術中の回想シーン入れたの?
- ベロニカのことを全部忘れてソフィアに速攻で惚れ込んじゃうリンクさん…
- 肺を打たれてるのに病院にも連れて行ってもらえずあちこち引きずり回されるリンクさん かわいそう そして不死身
- あれだけパムパム言っておきながら最終的にラングと付き合うマホーンは何考えてるの?
- クリスティーナさんはマイケルを生かすのか殺すのかハッキリさせてください
- クリスティーナが最後に自分で銃を握って突入してくるシーンはギャグかと思いました。直前に爆風に巻き込まれてるはずなのにピンピンしてるし、そもそも自分が突入する必要ないでしょ?
- 最終話で唐突にFBIがゴチャゴチャ介入してくるのが萎えた 引っ込んでろ
- 銃を構える→電話がかかってくる→銃を下ろす展開が多すぎ 早く打っちまえよな
- 将軍が盗聴を気にしてる設定が消し飛んでいる。最終的に屋外でも気にせず喚き散らすただのクソジジイ化していた。
- ベリックが唐突に良いキャラになりすぎ。お前は映画版ジャイアンかよ。でもカッコイイ死に様だったと思います。多分全キャラの内で一番。
- グレッチェンはどこに行ったんですかね?
- 必死の思いで助けたウィスラーさんを何故アッサリ殺すのか
- スキュラのコピーぐらいさっさと作れよ
- カードの番人が6人…引き伸ばし乙
- 最終的に全員を免責にした機関はなんだったの?
もう疲れた。寝る。
シーズン1が神クラスに面白かったのでダラダラとシーズン4まで観てしまった。今ではシーズン2までで終わらせておけば超名作だったのではないかと思っている。
オンラインストレージのSugarSyncが全面有料化することについて
SugarSync Transitions to Paid-Only Service Model
…ということで、オンラインストレージ界隈では割と古参なイメージのあるSugarSyncがフリーミアムモデルを辞めて、Paid-Onlyなサービスに移行するらしい。
4~5年前はまだSkyDriveも(今のような形では)存在してなくて、Googleドライブも無かった。Dropbox、ZumoDrive、そしてSugarSyncとかのサービスを比べてあーだこーだ言っていた気がする。ZumoDriveが今年の五月に死に、SugarSyncが有料化したことで、当時と同じように無料サービスを提供しているのはDropboxだけになってしまった…。オンラインストレージ界隈の栄枯盛衰の流れは本当に激しいなあと感じる。
現在のところ存在するオンラインストレージサービスには、大きく分けて二種類あると思う。
1をやっているのはSkyDrive、Googleドライブ、そして(使ったこと無いけど)Copyとかだ。1みたいなサービスの多くは、追加容量がもらえる紹介システムを採用してネズミ講的にユーザーを増やしていくことが多い。
そして2をやっているのがDropboxだ。Dropboxは初期容量が(確か)2GBとかなり小さいのだけど、APIを整備してデベロッパーが利用しやすくしている。あと、ファイルの共有もかなり簡単に済むようになってる。
SugarSyncはそれなりの容量を無料ユーザーに開放していたことから、1の方向性を目指したのではないかと思う。確かに、当時はまだ競合サービスも少なかったわけだし、判断としては間違ってなかっただろう。
だけど時がたち、MicrosoftがSkyDrive、GoogleがGoogleドライブの提供を始めてしまった。彼らのような大手に同じことをやられたら、全く勝負にならないのは見えている。サーバーリソースも桁違いだし、そもそもの知名度からして差がつきすぎている。
そんな事情もあって、SugarSyncビジネスユーザー向けの全面有料化に踏み切ったのではないだろうか。
ちなみに、CopyってサービスもいずれSugarSyncと同じような運命を辿るのではないかと勝手に思っている。さて、どうなるだろうか。
スマホ版ドラクエ1クリアした
クリアしたのでちょっと感想書いてみる。
巷では操作性がクソだともっぱらの評判だけど、確かにかなり操作し辛いと思った。十字パッドについては正直慣れの占めるウェイトが大きいと思うのでなんとも言えない。だけど、半歩のシステムにだけは最後まで慣れることが出来なかった。ストーリーを通して半歩の移動が必要な箇所が全くないせいで、半歩自体がただのイライラの原因になってしまっているし…。
ゲーム自体の方は、初期レベルからスライムが一撃で倒せたりと、プレイがサクサクになるような調整がされていたように感じた。その一方で、サクサク進んだ結果、橋を渡った先でサクッと強くなったモンスターにぶっ殺される事案が発生したりもした。
また、仲間がたくさん居るドラクエのノリで進めた結果、主人公がアッサリ死んで城に戻されることも多々あった。例えば、仲間が四人の時の体力回復のタイミングで戦闘していると、勇者一人はすぐに死んでしまったり。ドラクエ3以降しかやったことない僕には正直新鮮だった。まあ、そういう新鮮さが、必ずしも面白さと等価だった訳ではないけどね。城からダンジョンまで歩くのめんどくさいんだよ!!!!ルーラが城まで帰るだけの呪文とかふざけてんのか!!!!
あとはりゅうおうの鬼畜っぷりね。
りゅうおうに挑んだら、開幕ラリホーのあと五発くらい殴られて死んだ どう考えても理不尽だろこれ
— にとざえもん (@nitoliam) 2013, 12月 2
ラリホーは絶許
— にとざえもん (@nitoliam) 2013, 12月 2
あとはお約束画像を貼っておこうかなー。