Sublime Text打造轻量级.Net开发环境

有时候我们需要编写一些小的代码片段时,在Visual Studio中创建一个工程就显得有点杀鸡用牛刀的感觉了,所有说对于一个程序员来说一款轻巧的代码编辑器还是很有必要的。原来我用的主要的Notepad++,直到发现了Sublime Text 2之后,这是一款非常优秀的编辑器,用ST2写代码有种非常流畅的感觉,就像是原来刚使用Chrome浏览器的时候(不过现在已经越来越笨重了),ST2是收费软件,但是可以无限试用的,现在已经出了ST3了,不过还是测试版。同时ST2具有很强的扩展性,有很多的插件可供使用。ST2支持多种编程语言,不过对C#的支持不是太好,想要作为一款C#代码编辑器还需要自己手动改造一番。

1.格式化代码
ST2其实自带了代码格式化的功能,不过没有提供相应的快捷键,选中需要格式化的区域之后,使用方式如下:

Sublime Text打造轻量级.Net开发环境_第1张图片

在这里我们可以自己定义快捷键,在菜单栏中打开 Perferences ——> Key Bindings-User,输入:
{"keys": ["ctrl+shift+r"], "command": "reindent" , "args": {"single_line": false}}

2.配置C#编译器
ST2支持对编译器的调用,但没有对C#编译器提供内置支持,需要我们自行进行配置。
新建编译器选项
选择菜单栏中的 Tools ——> Build System ——> New Build System ,输入:
1 {2 "cmd": ["csc", "$file"],3 "file_regex": "^(...?):([0-9]):?([0-9]*)",4 "selector": "source.cs",5 "encoding": "cp936"6 }

另存为ST2程序目录的 Packages/User 文件夹下面,文件名为: C#.sublime-build ,如下:

Sublime Text打造轻量级.Net开发环境_第2张图片

编辑好C#代码文件后,输入 Ctrl + B ,编译代码,如下:
Sublime Text打造轻量级.Net开发环境_第3张图片

编译后直接运行程序
如果我们需要不仅仅只是编译程序,还需要直接运行程序并且获取控制台的输出结果,我们还需要对上面的配置进行改造。
1.创建RunCSharp.bat文件
在C#编译器所在目录(32机器下在: C:\Windows\Microsoft.NET\Framework 目录下,有各版本的C#编译器)下创建一个 RunCSharp.bat 文件,内容如下:
1 @ECHO OFF 2 cd %~dp1 3 ECHO Compiling %~nx1....... 4 IF EXIST %~n1.exe ( 5 DEL %~n1.exe 6 ) 7 csc %~nx1 8 IF EXIST %~n1.exe ( 9 ECHO -----------OUTPUT-----------10 start %~n111 )

2.修改C#.sublime-build文件
要实现编译器后运行的效果我们需要修改前面创建的build文件,修改后内容如下:
1 {2 "cmd": ["RunCSharp.bat", "$file"],3 "file_regex": "^(...?):([0-9]):?([0-9]*)",4 "selector": "source.cs",5 "encoding": "cp936"6 }

3.编译并运行程序
和前面一样,编写好代码后,键入Ctrl + B编译运行,在输出栏中查看控制台输入结果:

Sublime Text打造轻量级.Net开发环境_第4张图片

3.为C#代码添加注释功能
C#中的注释快捷键是无效的,这是因为 Packages文件夹 中缺少了定义注释行为的文件。打开Packages,在C#文件夹中添加一个名为: Comments.tmPreferences 文件,输入如下内容:
View Code 1 2 3 4 5 name 6 Comments 7 scope 8 source.cs 9 settings10 11 shellVariables12 13 14 name15 TM_COMMENT_START16 value17 // 18 19 20 name21 TM_COMMENT_START_222 value23 / 24 25 26 name27 TM_COMMENT_END_228 value29 /30 31 32 33 uuid34 FBA964F9-2013-44D1-A5FD-AE8AB3FF895435 36

添加注释文件后,就可以为C#代码添加注释了,可以使用菜单,也可以使用相应的快捷键,如下:

Sublime Text打造轻量级.Net开发环境_第5张图片

4.添加C#关键字
编程语言的关键字在ST2中是高亮显示的,对于ST2我们需要自己定义一下关键字,例如:virtual,var等,这时我们需要修改Packages文件夹中的C#文件夹的C#.tmLanguage文件,修改后文件的内容如下:
View Code 1 2 3 4 5 fileTypes 6 7 cs 8 9 foldingStartMarker 10 \s*/*|(?![ {]*?//|[{] ?/*(?!.?*/. ?{)).?{\s ($|//|/*(?!.?*/. \S)) 11 foldingStopMarker 12 ^\s*/|^\s } 13 keyEquivalent 14 ^~C 15 name 16 C# 17 patterns 18 19 20 begin 21 /// 22 captures 23 24 0 25 26 name 27 punctuation.definition.comment.source.cs 28 29 30 end 31 $\n? 32 name 33 comment.block.documentation.source.cs 34 patterns 35 36 37 begin 38 ( 39 captures 40 41 1 42 43 name 44 punctuation.definition.tag.source.cs 45 46 2 47 48 name 49 entity.name.tag.namespace.source.cs 50 51 3 52 53 name 54 entity.name.tag.source.cs 55 56 4 57 58 name 59 punctuation.separator.namespace.source.cs 60 61 5 62 63 name 64 entity.name.tag.localname.source.cs 65 66 67 end 68 (/?>) 69 name 70 keyword.other.documentation.source.cs 71 patterns 72 73 74 captures 75 76 1 77 78 name 79 entity.other.attribute-name.namespace.source.cs 80 81 2 82 83 name 84 entity.other.attribute-name.source.cs 85 86 3 87 88 name 89 punctuation.separator.namespace.source.cs 90 91 4 92 93 name 94 entity.other.attribute-name.localname.source.cs 95 96 97 match 98 (?:([-_a-zA-Z0-9]+)((:)))?([_a-zA-Z-]+)= 99 100 101 include102 #doubleQuotedString103 104 105 include106 #singleQuotedString107 108 109 110 111 112 113 include114 #comments115 116 117 begin118 (?x)^\s119 ((?:\b(?:new|public|protected|internal|private|abstract|sealed|static)\b\s) )120 (class)\s+121 ([A-Za-z_]\w+)\b122 captures123 124 1125 126 name127 storage.modifier.source.cs128 129 2130 131 name132 storage.type.source.cs133 134 3135 136 name137 entity.name.type.class.source.cs138 139 140 end141 {142 name143 meta.definition.class.source.cs144 patterns145 146 147 include148 #classInheritance149 150 151 152 156 238 239 match240 \b(true|false|null|this|base)\b241 name242 constant.language.source.cs243 244 245 match246 \b((0(x|X)[0-9a-fA-F])|(([0-9]+.?[0-9] )|(.[0-9]+))((e|E)(+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\b247 name248 constant.numeric.source.cs249 250 251 match252 \b(if|else|while|for|foreach|do|return|continue|break|switch|case|default|goto|throw|try|catch|finally|lock|yield)\b253 name254 keyword.control.source.cs255 256 257 match258 \b(new|is|checked|unchecked|typeof|sizeof|override|in|out|ref|readonly|params|stackalloc|as)\b259 name260 keyword.operator.source.cs261 262 263 match264 \b(event|delegate|explicit|implicit|in|set|get)\b265 name266 keyword.other.source.cs267 268 269 match270 \b(internal|public|protected|private|static|const|new|sealed|abstract|virtual|override|extern|unsafe|readonly|volatile|operator)\b271 name272 storage.modifier.source.cs273 274 275 include276 #doubleQuotedStringLiteral277 278 279 include280 #doubleQuotedString281 282 283 include284 #singleQuotedString285 286 287 captures288 289 1290 291 name292 keyword.other.using.source.cs293 294 2295 296 name297 entity.name.type.package.source.cs298 299 300 match301 ^\s(using)\s+([^ ;] );302 name303 meta.keyword.using.source.cs304 305 306 include307 #builtinTypes308 309 310 captures311 312 1313 314 name315 keyword.other.namespace.source.cs316 317 2318 319 name320 entity.name.type.namespace.source.cs321 322 323 match324 ^\s(namespace)\s+([^ ]+)(?:\s {)?$325 name326 meta.keyword.namespace.source.cs327 328 329 captures330 331 2332 333 name334 keyword.control.import.source.cs335 336 337 match338 ^(#)\s(if|else|elif|endif|define|undef|warning|error|line|region|endregion)\b339 name340 meta.preprocessor.source.cs341 342 343 repository344 345 builtinTypes346 347 patterns348 349 350 match351 \b(bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|class|struct|enum|interface|var|from|where|select|group|into|orderby|join|let|ascending|descending|on|by)\b352 name353 storage.type.source.cs354 355 356 357 classInheritance358 359 patterns360 361 362 begin363 :364 end365 (?={)366 patterns367 368 369 captures370 371 1372 373 name374 storage.type.source.cs375 376 377 match378 \s ,?([A-Za-z_]\w)\b379 380 381 382 383 384 comments385 386 patterns387 388 389 begin390 /*391 captures392 393 0394 395 name396 punctuation.definition.comment.source.cs397 398 399 end400 */\n?401 name402 comment.block.source.cs403 404 405 captures406 407 1408 409 name410 punctuation.definition.comment.source.cs411 412 413 match414 (//). $\n?415 name416 comment.line.double-slash.source.cs417 418 419 420 doubleQuotedString421 422 begin423 "424 beginCaptures425 426 0427 428 name429 punctuation.definition.string.begin.source.cs430 431 432 end433 "434 endCaptures435 436 0437 438 name439 punctuation.definition.string.end.source.cs440 441 442 name443 string.quoted.double.source.cs444 patterns445 446 447 match448 \.449 name450 constant.character.escape.source.cs451 452 453 454 doubleQuotedStringLiteral455 456 captures457 458 0459 460 name461 punctuation.definition.string.begin.source.cs462 463 464 match465 @"([^"]|"")"466 name467 string.quoted.double.literal.source.cs468 469 singleQuotedString470 471 begin472 '473 beginCaptures474 475 0476 477 name478 punctuation.definition.string.begin.source.cs479 480 481 end482 '483 endCaptures484 485 0486 487 name488 punctuation.definition.string.end.source.cs489 490 491 name492 string.quoted.single.xml493 patterns494 495 496 match497 \.498 name499 constant.character.escape.source.cs500 501 502 503 statementRemainder504 505 patterns506 507 508 begin509 (510 end511 (?=))512 name513 meta.definition.param-list.source.cs514 patterns515 516 517 include518 #builtinTypes519 520 521 522 523 524 525 scopeName526 source.cs527 uuid528 1BA75B32-707C-11D9-A928-000D93589AF6529 530

5.添加新的代码片段
对于一些常用的代码片段,我们不需要每次都手动输入一遍,可以将它们配置问代码片段,减少手动代码输入量,效果类似于Visual Studio的智能提示,如下:
例如输入fore时,会出现foreach的提示:


选择后,输入回车键,出现foreach语句的结构:
Sublime Text打造轻量级.Net开发环境_第6张图片

添加新的代码片段只需要在Packages中的C#文件夹中增加以 .sublime-snippet 为后缀的文件,内容如下:
--插入的内容 S.C.G--快捷键 source.cs--源码匹配 System.Collections.Generic--说明

6.修改字体大小

Sublime Text打造轻量级.Net开发环境_第7张图片

配置文件下载 : ** C#.zip **( **将所有文件复制Packages文件夹下的C#文件夹即可,配置文件包括常用的代码片段,注释配置,和关键字的定义。)******

小彩蛋:

对于snippet手动配置去实现C#代码编写时的AutoComplete小伙伴们还是比较唏嘘的,故在此推荐一个插件---C# Snippet 可以满足大家的方便需求。

你可能感兴趣的:(Sublime Text打造轻量级.Net开发环境)