ハイパーマッスルエンジニア

Vim、ShellScriptについてよく書く

M1MacBook、VimのquickrunでC#の実行環境を整える

f:id:rasukarusan:20210523222217p:plain

知人がC#をやり始めて、教えてくれと言われたのでとりあえず開発環境を整えてみた。

環境

  • M1 MacBookAir
  • Neovim >= 0.5

brew install monoができない

arm版だとダメ的な問題でエラーが出てインストールできないので、Visual Studioから引っ張ってくるやり方でいく。

1. Visual Studio for Macをインストール

https://visualstudio.microsoft.com/ja/vs/mac/

実際にVisual Studioを使うわけではない。インストールするとc#のコンパイルに必要なmcsと、実行に必要なmonoのbinが手に入る。

2. aliasを貼る

c#のコンパイルのためにmcs、実行のためのmonoのaliasを貼る

ln -s /Library/Frameworks/Mono.framework/Versions/Current/bin/mcs /usr/local/bin
ln -s /Library/Frameworks/Mono.framework/Versions/Current/bin/mono /usr/local/bin

3. コンパイルして実行してみる

Sample.cs

using System;

namespace sample
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello!");
        }
    }

}

コンパイル&実行

# コンパイル
mcs Sample.cs
# Sample.exeが生成される

# 実行
mono Sample.exe
# Hello!

コンパイルと実行を一括でやってくれる関数を作っておくと便利

.zshrc

# c#ファイル(.cs)をコンパイルして実行
# ln -s /Library/Frameworks/Mono.framework/Versions/Current/bin/mono /usr/local/bin
# ln -s /Library/Frameworks/Mono.framework/Versions/Current/bin/mcs /usr/local/bin
# をあらかじめ実行していること
alias ms='_mcs_and_mono'
_mcs_and_mono() {
  local fileName=${1/\.*/}
  mcs $1
  mono ${fileName}.exe
}

使い方

ms Sample.cs
# Hello!

4. Vimのquickrunで実行する

mcs, monoのaliasを貼った時点で、特になんの設定もなくquickrunで.csファイルの実行ができるようになっているはず。

f:id:rasukarusan:20210523221433g:plain
quickrunでc#のファイルを実行

一応quickrunの設定を載せておく

let g:quickrun_config={
  \'_': {
  \  'split': ''
  \},
\}
set splitbelow
" \rで保存して実行、画面分割を下に出す
nnoremap \r :cclose<CR>:write<CR>:QuickRun -mode n<CR>
xnoremap \r :<C-U>cclose<CR>:write<CR>gv:QuickRun -mode v<CR>