c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

Vimの全てを最新に保つ (VAC2014)

Vim Advent Calendar 2014の四日目です。昨日はVimにrevコマンドを実装してみたでした。明日は217さんです。

いま一番もとめてゐるのは縱書き[縦書キ]ですが、Vimを最新に更新します。

Vimソースコードを更新する

Mercurialで公式のリポジトリから落としてゐるとおもひます (落としてください)。 ~/dev/vim に落としてあるとします。

cd ~/dev/vim
hg pull -u

以上です。

Vimコンパイルする

Debian (Ubuntu) でVimを、機能アリアリでbuildする http://c4se.hatenablog.com/entry/2014/09/21/181104に書いてあります。以上です。

これらを自動でやると、

cd ~/dev/vim
hg pull -u
cd src
CC=clang ./configure --with-features=huge --disable-darwin --enable-gui=gnome2 --enable-xim --enable-tclinterp --enable-mzschemeinterp --enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --with-luajit --enable-fail-if-missing
make -j4
sudo make install

となります。

Vimのpluginを更新する

NeoBundleで管理してゐるとします。Vundleにも応用できます。pathogen.vimvim-flavorやVAMを使うてゐる方は我ん張ってください。
NeoBundleは:NeoBundleUpdateでNeoBundle下のpluginを全て更新できます。これをbashから実行できればよろしい。また、.gvimrcで管理してゐるものもあるので、GVimを立ち上げて実行したい。また、更新が終わるのを検知したいので、GVimをフォアグラウンドで実行したい。これは以下で実行できます。

vim -g -f -c "silent exe 'NeoBundleUpdate | q'" &> /dev/null

GVimを立ち上げ、且つフォアグラウンドで立ち上げ、silent exe 'NeoBundleUpdate | q'Vim Scriptとしてとして実行します。exeコマンドは文字列をコマンドとして実行します。NeoBundleUpdate | qは、NeoBundle下のpluginを更新した後、Vimを終了します。NeoBundleUpdateの出力に手動で対応しなくても済ませる爲[為]にsilentで実行します。

自動でVimの全てを最新に保つ

以上を合はせて自動でやります。繰り返しますがVimソースコードは~/dev/vimに有ることとします。適宜書き換へてください。

function update-vim() {
  local cwd=$(pwd)
  if test "$NO_SSH" != "1"; then
    cd ~/dev/vim
    hg pull -u
    cd src
    CC=clang ./configure --with-features=huge --disable-darwin --enable-gui=gnome2 --enable-xim --enable-tclinterp --enable-mzschemeinterp --enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --with-luajit --enable-fail-if-missing
    make -j4
    sudo make install
  fi
  if test "$NO_SSH" != "1"; then
    vim -g -f -c "silent exe 'NeoBundleUpdate | q'" &> /dev/null
  fi
  cd $cwd
}

以上です。これをもっと大きな、システム全てを最新に保つ以下のコマンドのなかで呼び出してゐます。

function update-all() {
  sudo apt update
  sudo aptitude safe-upgrade -y
  sudo apt-get autoremove
  sudo apt-get autoclean
  if test "$NO_SSH" != "1"; then
    anyenv update
  fi
  sudo gem update
  sudo npm -g update &> /dev/null
  sudo pip-review --auto
  sudo composer self-update
  anyenv exec rehash
  update-vim
  sudo updatedb
}

因みにサーバーではなくラップトップPCです。