watari開発 – Advent201918 –

watari開発 – Advent201918 –

stage18: xvim導入

儚くも破れ去ってしまった開発環境整備。しかし、どうしても生のままのxcodeは使いづらくて、それだけで開発中の体力の持っていかれ方が違う。ということでなくなくxvimを入れよう。仕方ない。

xvim導入

https://github.com/XVimProject/XVim2#install

これに従ってやってみる。

署名する

xcode8以降からアップルのセキュリティ強化のためにpluginの仕組みが変わったらしい。で、十分なapiが提供されていないから、xvimからみると機能不足で正規のpluginとしては作れない。なので、xvimを入れるためには迂回して古いpluginのようにいれないといかん。

とのこと。

で、その方法がxcodeに自己署名して使う。とのこと

なのでまずは署名するところから。

https://github.com/XVimProject/XVim2/blob/master/SIGNING_Xcode.md#signing-xcode

に載っている。

  1. xcodeを閉じます
  2. キーチェーンアクセスを開きます
  3. 証明書を作成します
    file
  4. 名前はなんでもいいが、コード署名タイプで作成します
    file
    注意書きも載っていて、ここで作った証明書の期限が一年なので一年ごとに更新しないといけない。
  5. ターミナルを開いて
    sudo codesign -f -s XcodeSigner /Applications/Xcode.app
    ちょっと待つ
  6. xvimのrepositoryをcloneして
    git clone https://github.com/XVimProject/XVim2.git
  7. xcode-selectコマンドがちゃんとxcodeを向いてるか確認
    > xcode-select -p
    # /Applications/Xcode.app/Contents/Developer
  8. ここでbranchとリリースを確認してxvimをcheckout
    今のxcodeのバージョン
    file
    11.3 である。
    なのでmasterで良さそう。
  9. make
    cd XVim2
    make
    # ...
    # ** BUILD SUCCEEDED **
  10. ~/.xvimrc を作成
  11. xcodeを起動する
    file
    これを聞かれるので Load Bundle を選択
  12. Xcodeを開いてMenu > EditにXVimがあればOK
    file

xvimrcの設定

右も左も分からんけど何を設定するかな。漁るか。

https://github.com/XVimProject/XVim2/blob/master/Documents/FeatureList.md
ここに機能一覧があった。

https://qiita.com/MasahiroSakoda/items/6fd2c17493f4e6360b3b
searchやignorecaseなど。

https://github.com/ajh17/dotfiles/blob/master/.xvimrc
結構設定している方のやつ。

https://qiita.com/zebult/items/d2393526e73e01cdac94
ここにも載っている。

ある程度できそうだな。ということで設定

my .xvimrc

set incsearch
set hlsearch
set ignorecase
set smartcase
set expandtab
set clipboard=unnamed

" keymap settings
nnoremap s <Nop>
nnoremap sj <C-w>j
nnoremap sk <C-w>k
nnoremap sl <C-w>l
nnoremap sh <C-w>h
nnoremap sJ <C-w>J
nnoremap sK <C-w>K
nnoremap sL <C-w>L
nnoremap sH <C-w>H
nnoremap ss <C-w>s
nnoremap sv <C-w>v
nnoremap sx <C-w>q
nnoremap st :xcmenucmd Tab<CR>
nnoremap sn :xcmenucmd Show Next Tab<CR>
nnoremap sp :xcmenucmd Show Previous Tab<CR>

" comment out
nnoremap gcc :xcmenucmd Comment Selection<CR>
vnoremap gc  :xcmenucmd Comment Selection<CR>

" navigator
nmap <C-h> :xcmenucmd Open Quickly...<CR>
nmap <C-f> :xccmd showInFinder<CR>

" Toggle Toolbars
nmap <C-n><C-n> :xccmd toggleNavigatorsVisibility<CR>

nmap <C-n>1 :xcmenucmd Show Project Navigator<CR>
nmap <C-n>2 :xcmenucmd Show Source Control Navigator<CR>
nmap <C-n>3 :xcmenucmd Show Symbol Navigator<CR>
nmap <C-n>4 :xcmenucmd Show Find Navigator<CR>
nmap <C-n>5 :xcmenucmd Show Issue Navigator<CR>
nmap <C-n>6 :xcmenucmd Show Test Navigator<CR>
nmap <C-n>7 :xcmenucmd Show Debug Navigator<CR>
nmap <C-n>8 :xcmenucmd Show Breakpoint Navigator<CR>
nmap <C-n>9 :xcmenucmd Show Report Navigator<CR>

nmap <C-j><C-j> :xccmd toggleDebuggerVisibility<CR>

nmap <C-l><C-l> :xccmd toggleInspectorAreaVisibility<CR>
nmap <C-l>1 :xcmenucmd Show File Inspector<CR>
nmap <C-l>2 :xcmenucmd Show History Inspector<CR>
nmap <C-l>3 :xcmenucmd Show Quick Help Inspector<CR>

nmap <C-j>n :xccmd moveKeyboardFocusToNextArea<CR>
nmap <C-j>p :xccmd moveKeyboardFocusToPreviousArea<CR>

解説と動画

上の方にあるsetは好きなように設定。

s 系はtabの操作みたいにしてみた。
ヘルプに載っているように中で画面を切ることはできないので、AssitantViewへのjumpを sl とかで切り替えるように。

st あたりはTabの操作だ。 st で追加、 sn で次のタブ、 sp で前のタブ。これは今のvimでもそんな感じ。閉じるときは :q

次は gcc あたり。これはコメントアウト。Visual Modeのときは範囲のコメントアウトをtoggleしてくれる。

Ctrl + h は fuzzy searchみたいな。ファイルを適当に探す時に。
Ctrl + f は finderで開く。

あとはwindow内の表示切り替え。

Ctrl + nを二回押すと、左のwindowの表示/非表示を切り替える。Ctrl + n + 1,2,3,4,...
file
これを順番に切り替える。

Ctrl + j を二回で下部のDebug Areaの表示/非表示の切り替え。

Ctrl + l で右の情報パネルの表示/非表示の切り替え。これがそこらへんに落ちているやり方だと微妙にできなくて、

:xccmd toggleUtilitiesVisibility これは :xccmd toggleInspectorAreaVisibilityじゃないとダメだった。

動画

割といい感じじゃなかろうか。

次回は

機能実装に戻ろう!