環境:Windows10
自動整形用の書式設定、しかも個人の環境なのでグローバルに設定する事にしたよ。
VSCodeの設定、色々解決しないといけない問題が出るわ出るわ、まいっちんぐよ。
- C#フォーマットが思い通りにならない。
- Vimを入れると Ctrl+x 等のコピペが出来なくなる。
諸々解決していきましょう。
C#自動整形 (Shift+Alt+F)
使用してる物
Format On Save は切っておきます。(お好みで)
Roslyn を有効にする
Omnisharp: Enable Roslyn Analyzers
Enables support for roslyn analyzers, code fixes and rulesets.
Roslynは、素晴らしい物だ。
サイトの説明を読めば自信をもって有効にできるね。
突然困った事が発生した。以下のようなフォーマットにされてまった事。
var base = DynamicPiyoPiyo
.getHOGE(HOGE)
.HOGE()
.HOGE();
もうねパラメータの英語ドキュメントの説明分もなくてさ、どれを変えればいいか分かんなかったよね。
$HOME/.omnisharp/omnisharp.json
を作成したりして試した。
以下のどれかの項目だと思ったんだけど、違くて...
"NewLinesForBracesInTypes": true,
"NewLinesForBracesInMethods": true,
"NewLinesForBracesInProperties": true,
"NewLinesForBracesInAccessors": true,
"NewLinesForBracesInAnonymousMethods": true,
"NewLinesForBracesInControlBlocks": true,
"NewLinesForBracesInAnonymousTypes": true,
"NewLinesForBracesInObjectCollectionArrayInitializers": true,
"NewLinesForBracesInLambdaExpressionBody": true,
"NewLineForElse": true,
"NewLineForCatch": true,
"NewLineForFinally": true,
"NewLineForMembersInObjectInit": true,
"NewLineForMembersInAnonymousTypes": true,
"NewLineForClausesInQuery": true
それで結局どうしたかっていうと、
Extention C# のデフォルトで問題なかったです。
訳が分からないんだけど、何で最初のような改行されたのか、Prettierが機能してたのかもしれない。
一応 Prettier は settings.jsonから外しました。
ぐだぐだしてたら治ってしまったので実際の所どうなのかわからなかったけど。
settings.json
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[csharp]": {
"editor.defaultFormatter": "ms-dotnettools.csharp"
}
}
ここが怪しい。「EditorFormattingSettings」ってことは上記で試した omnisharp.json の設定反映されてなかったんじゃないのとも思うが。
Vim拡張の有効時も通常のショートカットが使いたい
インサートモードにしてもコピー、切り取り、貼り付けのショートカット(Ctrl+[c, x, p])ができなかった。
何故かってショートカットが重複してるから。
「Ctrl + a」も使えない。
こりゃ、winとvimキーバインドは両方どっちも使いたいよ?でもどっちを取る?
ここへきて、なるほど windows と vim の相性の悪さよ。
やっぱMacでいいんじゃないかって思えてきたよ。
Windowsにコマンドキーが無いのが悪い。
Windowsキーがあるじゃないか…
それなー
とりあえず以下
"vim.handleKeys": {~~で設定できるらしい
↓ 助かった!
突然のトラブル
- 拡張機能 C# フォーマットが出来ません
- Ans. 今回の場合フォルダ名を変更したことで solutionファイルが見つからなくなってた模様。C#ファイルをダブルクリックして開いた時にVSCode上に slnファイルを選択するドロップダウンメニューが出てきていたので選択したら正常に戻った。
- やったこと、設定の変更
- settings.jsonのeditor.defaultFormatter 部分を削除して再起動したり、Omnisharp:Enable Roslyn AnalがOFFになってたのでONにして再起動とか、
- Roslyn 実は不要?なのか分からなくなった。