本文两部分:
1.准备工具
用来编译运行kotlin代码,只看代码,可跳过此步。
1.1 下载JetBrains kotlin编译器
https://github.com/JetBrains/kotlin/releases
找到最新版本下载 :这里用的1.6.10
1.2 设置环境变量
1 export KOTLINC=~/android/kotlin/kotlinc 2 export KOTLIN_NATIVE=~/android/kotlin/kotlin-native-linux-x86_64-1.6.10 3 export PATH=$ANDROID:$PATH:$KOTLINC/bin:$KOTLIN_NATIVE/bin:.
source ~./profile
2.使用现成插件包
2.1 工具官网
https://github.com/vkostyukov/kotlin-sublime-package
2.2 安装过程
第1步 菜单选项
Preferences --> Paceage Control --> Install Package
第2步 搜索Kotlin 包
第3步 安装Kotlin包
选中Kotlin包,双击左键或者回车 安装:安装过程见左下状态栏:
2.3 编译和运行kotlin代码
a.配置编译系统
Tools --> Build System --> Kotlin(或者Automatic)
b.设置编译工具 (Ctrl + Shift + B )
b.编译运行 (Ctrl + B)
2.4 卸载Kotlin包
Preferences --> Paceage Control --> Remove Pacakge
选中Kotlin包,双击左键或者回车卸载。
3.手动配置
3.1 设置SublimeText3的系统构建工具
第1步 菜单选项
打开sublime text 3 : Tools --> Build System --> New Build System...
第2步 设置配置文件
1 { 2 "path" : "/usr/local/bin:$PATH", 3 "selector" : "source.Kotlin", 4 "file_regex": "^(.*):([0-9]+):([0-9]+): (?:error|warning):(.*)", 5 "cmd" : "kotlinc \"${file}\" -include-runtime -d ${file_base_name}.jar", 6 "variants": [{ 7 "cmd": "kotlinc \"${file}\" -include-runtime -d ${file_base_name}.jar", 8 "name": "Compile" 9 },{ 10 "cmd": "kotlinc \"${file}\" -include-runtime -d ${file_base_name}.jar || exit 1; java -jar ${file_base_name}.jar", 11 "name": "Compile + run" 12 },{ 13 "name": "Run", 14 "cmd": "java -jar ${file_base_name}.jar" 15 }], 16 "shell" : "true", 17 "windows" : { 18 "path" : "$PATH" 19 } 20 }
第3步 保存为 Kotlin1.6.10.sublime-build
默认保存在 ~/.config/sublime-text/Packages/User/ 目录下。
第4步 添加编译的菜单选项
如果第3步未成功,那么打开 ~/.config/sublime-text/Local/Session.sublime_session 文件
3.2 配置语法高亮样式
第1步 添加Kotlin语法文件
在 ~/.config/sublime-text/Packages/User/ 目录下新建 Kotlin1.6.10.tmLanguage 文件,内容如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 <plist version="1.0"> 4 <dict> 5 <key>fileTypes</key> 6 <array> 7 <string>kt</string> 8 <string>kts</string> 9 </array> 10 <key>name</key> 11 <string>Kotlin1.6.10</string> 12 <key>patterns</key> 13 <array> 14 <dict> 15 <key>include</key> 16 <string>#comments</string> 17 </dict> 18 <dict> 19 <key>captures</key> 20 <dict> 21 <key>1</key> 22 <dict> 23 <key>name</key> 24 <string>keyword.other.kotlin</string> 25 </dict> 26 <key>2</key> 27 <dict> 28 <key>name</key> 29 <string>entity.name.package.kotlin</string> 30 </dict> 31 </dict> 32 <key>match</key> 33 <string>^\s*(package)\b(?:\s*([^ ;$]+)\s*)?</string> 34 </dict> 35 <dict> 36 <key>include</key> 37 <string>#imports</string> 38 </dict> 39 <dict> 40 <key>include</key> 41 <string>#statements</string> 42 </dict> 43 </array> 44 <key>repository</key> 45 <dict> 46 <key>classes</key> 47 <dict> 48 <key>begin</key> 49 <string>(?<!::)(?=\b(?:companion|class|object|interface)\b)</string> 50 <key>end</key> 51 <string>(?=$|\})</string> 52 <key>patterns</key> 53 <array> 54 <dict> 55 <key>include</key> 56 <string>#comments</string> 57 </dict> 58 <dict> 59 <key>begin</key> 60 <string>\b(companion\s*)?(class|object|interface)\b</string> 61 <key>beginCaptures</key> 62 <dict> 63 <key>1</key> 64 <dict> 65 <key>name</key> 66 <string>storage.modifier.kotlin</string> 67 </dict> 68 <key>2</key> 69 <dict> 70 <key>name</key> 71 <string>storage.modifier.kotlin</string> 72 </dict> 73 </dict> 74 <key>end</key> 75 <string>(?=<|\{|\(|:|$)</string> 76 <key>patterns</key> 77 <array> 78 <dict> 79 <key>include</key> 80 <string>#comments</string> 81 </dict> 82 <dict> 83 <key>match</key> 84 <string>\w+</string> 85 <key>name</key> 86 <string>entity.name.type.class.kotlin</string> 87 </dict> 88 </array> 89 </dict> 90 <dict> 91 <key>begin</key> 92 <string><</string> 93 <key>end</key> 94 <string>></string> 95 <key>patterns</key> 96 <array> 97 <dict> 98 <key>include</key> 99 <string>#generics</string> 100 </dict> 101 </array> 102 </dict> 103 <dict> 104 <key>begin</key> 105 <string>\(</string> 106 <key>end</key> 107 <string>\)</string> 108 <key>patterns</key> 109 <array> 110 <dict> 111 <key>include</key> 112 <string>#parameters</string> 113 </dict> 114 </array> 115 </dict> 116 <dict> 117 <key>begin</key> 118 <string>(:)</string> 119 <key>beginCaptures</key> 120 <dict> 121 <key>1</key> 122 <dict> 123 <key>name</key> 124 <string>keyword.operator.declaration.kotlin</string> 125 </dict> 126 </dict> 127 <key>end</key> 128 <string>(?={|$)</string> 129 <key>patterns</key> 130 <array> 131 <dict> 132 <key>match</key> 133 <string>\w+</string> 134 <key>name</key> 135 <string>entity.other.inherited-class.kotlin</string> 136 </dict> 137 <dict> 138 <key>begin</key> 139 <string>\(</string> 140 <key>end</key> 141 <string>\)</string> 142 <key>patterns</key> 143 <array> 144 <dict> 145 <key>include</key> 146 <string>#expressions</string> 147 </dict> 148 </array> 149 </dict> 150 </array> 151 </dict> 152 <dict> 153 <key>begin</key> 154 <string>\{</string> 155 <key>end</key> 156 <string>\}</string> 157 <key>patterns</key> 158 <array> 159 <dict> 160 <key>include</key> 161 <string>#statements</string> 162 </dict> 163 </array> 164 </dict> 165 </array> 166 </dict> 167 <key>comments</key> 168 <dict> 169 <key>patterns</key> 170 <array> 171 <dict> 172 <key>begin</key> 173 <string>/\*</string> 174 <key>captures</key> 175 <dict> 176 <key>0</key> 177 <dict> 178 <key>name</key> 179 <string>punctuation.definition.comment.kotlin</string> 180 </dict> 181 </dict> 182 <key>end</key> 183 <string>\*/</string> 184 <key>name</key> 185 <string>comment.block.kotlin</string> 186 </dict> 187 <dict> 188 <key>captures</key> 189 <dict> 190 <key>1</key> 191 <dict> 192 <key>name</key> 193 <string>comment.line.double-slash.kotlin</string> 194 </dict> 195 <key>2</key> 196 <dict> 197 <key>name</key> 198 <string>punctuation.definition.comment.kotlin</string> 199 </dict> 200 </dict> 201 <key>match</key> 202 <string>\s*((//).*$\n?)</string> 203 </dict> 204 </array> 205 </dict> 206 <key>constants</key> 207 <dict> 208 <key>patterns</key> 209 <array> 210 <dict> 211 <key>match</key> 212 <string>\b(true|false|null|this|super)\b</string> 213 <key>name</key> 214 <string>constant.language.kotlin</string> 215 </dict> 216 <dict> 217 <key>match</key> 218 <string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)([LlFf])?\b</string> 219 <key>name</key> 220 <string>constant.numeric.kotlin</string> 221 </dict> 222 <dict> 223 <key>match</key> 224 <string>\b([A-Z][A-Z0-9_]+)\b</string> 225 <key>name</key> 226 <string>constant.other.kotlin</string> 227 </dict> 228 </array> 229 </dict> 230 <key>expressions</key> 231 <dict> 232 <key>patterns</key> 233 <array> 234 <dict> 235 <key>begin</key> 236 <string>\(</string> 237 <key>end</key> 238 <string>\)</string> 239 <key>patterns</key> 240 <array> 241 <dict> 242 <key>include</key> 243 <string>#expressions</string> 244 </dict> 245 </array> 246 </dict> 247 <dict> 248 <key>include</key> 249 <string>#types</string> 250 </dict> 251 <dict> 252 <key>include</key> 253 <string>#strings</string> 254 </dict> 255 <dict> 256 <key>include</key> 257 <string>#constants</string> 258 </dict> 259 <dict> 260 <key>include</key> 261 <string>#comments</string> 262 </dict> 263 <dict> 264 <key>include</key> 265 <string>#keywords</string> 266 </dict> 267 </array> 268 </dict> 269 <key>functions</key> 270 <dict> 271 <key>begin</key> 272 <string>(?=\s*\b(?:fun)\b)</string> 273 <key>end</key> 274 <string>(?=$|\})</string> 275 <key>patterns</key> 276 <array> 277 <dict> 278 <key>begin</key> 279 <string>\b(fun)\b</string> 280 <key>beginCaptures</key> 281 <dict> 282 <key>1</key> 283 <dict> 284 <key>name</key> 285 <string>keyword.other.kotlin</string> 286 </dict> 287 </dict> 288 <key>end</key> 289 <string>(?=\()</string> 290 <key>patterns</key> 291 <array> 292 <dict> 293 <key>begin</key> 294 <string><</string> 295 <key>end</key> 296 <string>></string> 297 <key>patterns</key> 298 <array> 299 <dict> 300 <key>include</key> 301 <string>#generics</string> 302 </dict> 303 </array> 304 </dict> 305 <dict> 306 <key>captures</key> 307 <dict> 308 <key>2</key> 309 <dict> 310 <key>name</key> 311 <string>entity.name.function.kotlin</string> 312 </dict> 313 </dict> 314 <key>match</key> 315 <string>([\.<\?>\w]+\.)?(\w+)</string> 316 </dict> 317 </array> 318 </dict> 319 <dict> 320 <key>begin</key> 321 <string>\(</string> 322 <key>end</key> 323 <string>\)</string> 324 <key>patterns</key> 325 <array> 326 <dict> 327 <key>include</key> 328 <string>#parameters</string> 329 </dict> 330 </array> 331 </dict> 332 <dict> 333 <key>begin</key> 334 <string>(:)</string> 335 <key>beginCaptures</key> 336 <dict> 337 <key>1</key> 338 <dict> 339 <key>name</key> 340 <string>keyword.operator.declaration.kotlin</string> 341 </dict> 342 </dict> 343 <key>end</key> 344 <string>(?={|=|$)</string> 345 <key>patterns</key> 346 <array> 347 <dict> 348 <key>include</key> 349 <string>#types</string> 350 </dict> 351 </array> 352 </dict> 353 <dict> 354 <key>begin</key> 355 <string>\{</string> 356 <key>end</key> 357 <string>(?=\})</string> 358 <key>patterns</key> 359 <array> 360 <dict> 361 <key>include</key> 362 <string>#statements</string> 363 </dict> 364 </array> 365 </dict> 366 <dict> 367 <key>begin</key> 368 <string>(=)</string> 369 <key>beginCaptures</key> 370 <dict> 371 <key>1</key> 372 <dict> 373 <key>name</key> 374 <string>keyword.operator.assignment.kotlin</string> 375 </dict> 376 </dict> 377 <key>end</key> 378 <string>(?=$)</string> 379 <key>patterns</key> 380 <array> 381 <dict> 382 <key>include</key> 383 <string>#expressions</string> 384 </dict> 385 </array> 386 </dict> 387 </array> 388 </dict> 389 <key>generics</key> 390 <dict> 391 <key>patterns</key> 392 <array> 393 <dict> 394 <key>begin</key> 395 <string>(:)</string> 396 <key>beginCaptures</key> 397 <dict> 398 <key>1</key> 399 <dict> 400 <key>name</key> 401 <string>keyword.operator.declaration.kotlin</string> 402 </dict> 403 </dict> 404 <key>end</key> 405 <string>(?=,|>)</string> 406 <key>patterns</key> 407 <array> 408 <dict> 409 <key>include</key> 410 <string>#types</string> 411 </dict> 412 </array> 413 </dict> 414 <dict> 415 <key>include</key> 416 <string>#keywords</string> 417 </dict> 418 <dict> 419 <key>match</key> 420 <string>\w+</string> 421 <key>name</key> 422 <string>storage.type.generic.kotlin</string> 423 </dict> 424 </array> 425 </dict> 426 <key>getters-and-setters</key> 427 <dict> 428 <key>patterns</key> 429 <array> 430 <dict> 431 <key>begin</key> 432 <string>\b(get)\b\s*\(\s*\)</string> 433 <key>beginCaptures</key> 434 <dict> 435 <key>1</key> 436 <dict> 437 <key>name</key> 438 <string>entity.name.function.kotlin</string> 439 </dict> 440 </dict> 441 <key>end</key> 442 <string>\}|(?=\bset\b)|$</string> 443 <key>patterns</key> 444 <array> 445 <dict> 446 <key>begin</key> 447 <string>(=)</string> 448 <key>beginCaptures</key> 449 <dict> 450 <key>1</key> 451 <dict> 452 <key>name</key> 453 <string>keyword.operator.assignment.kotlin</string> 454 </dict> 455 </dict> 456 <key>end</key> 457 <string>(?=$|\bset\b)</string> 458 <key>patterns</key> 459 <array> 460 <dict> 461 <key>include</key> 462 <string>#expressions</string> 463 </dict> 464 </array> 465 </dict> 466 <dict> 467 <key>begin</key> 468 <string>\{</string> 469 <key>end</key> 470 <string>\}</string> 471 <key>patterns</key> 472 <array> 473 <dict> 474 <key>include</key> 475 <string>#expressions</string> 476 </dict> 477 </array> 478 </dict> 479 </array> 480 </dict> 481 <dict> 482 <key>begin</key> 483 <string>\b(set)\b\s*(?=\()</string> 484 <key>beginCaptures</key> 485 <dict> 486 <key>1</key> 487 <dict> 488 <key>name</key> 489 <string>entity.name.function.kotlin</string> 490 </dict> 491 </dict> 492 <key>end</key> 493 <string>\}|(?=\bget\b)|$</string> 494 <key>patterns</key> 495 <array> 496 <dict> 497 <key>begin</key> 498 <string>\(</string> 499 <key>end</key> 500 <string>\)</string> 501 <key>patterns</key> 502 <array> 503 <dict> 504 <key>include</key> 505 <string>#parameters</string> 506 </dict> 507 </array> 508 </dict> 509 <dict> 510 <key>begin</key> 511 <string>(=)</string> 512 <key>beginCaptures</key> 513 <dict> 514 <key>1</key> 515 <dict> 516 <key>name</key> 517 <string>keyword.operator.assignment.kotlin</string> 518 </dict> 519 </dict> 520 <key>end</key> 521 <string>(?=$|\bset\b)</string> 522 <key>patterns</key> 523 <array> 524 <dict> 525 <key>include</key> 526 <string>#expressions</string> 527 </dict> 528 </array> 529 </dict> 530 <dict> 531 <key>begin</key> 532 <string>\{</string> 533 <key>end</key> 534 <string>\}</string> 535 <key>patterns</key> 536 <array> 537 <dict> 538 <key>include</key> 539 <string>#expressions</string> 540 </dict> 541 </array> 542 </dict> 543 </array> 544 </dict> 545 </array> 546 </dict> 547 <key>imports</key> 548 <dict> 549 <key>patterns</key> 550 <array> 551 <dict> 552 <key>captures</key> 553 <dict> 554 <key>1</key> 555 <dict> 556 <key>name</key> 557 <string>keyword.other.kotlin</string> 558 </dict> 559 <key>2</key> 560 <dict> 561 <key>name</key> 562 <string>keyword.other.kotlin</string> 563 </dict> 564 </dict> 565 <key>match</key> 566 <string>^\s*(import)\s+[^ $]+\s+(as)?</string> 567 </dict> 568 </array> 569 </dict> 570 <key>keywords</key> 571 <dict> 572 <key>patterns</key> 573 <array> 574 <dict> 575 <key>match</key> 576 <string>\b(var|val|public|private|protected|abstract|final|sealed|enum|open|attribute|annotation|override|inline|vararg|in|out|internal|data|tailrec|operator|infix|const|yield|typealias|typeof|reified|suspend)\b</string> 577 <key>name</key> 578 <string>storage.modifier.kotlin</string> 579 </dict> 580 <dict> 581 <key>match</key> 582 <string>\b(try|catch|finally|throw)\b</string> 583 <key>name</key> 584 <string>keyword.control.catch-exception.kotlin</string> 585 </dict> 586 <dict> 587 <key>match</key> 588 <string>\b(if|else|while|for|do|return|when|where|break|continue)\b</string> 589 <key>name</key> 590 <string>keyword.control.kotlin</string> 591 </dict> 592 <dict> 593 <key>match</key> 594 <string>\b(in|is|!in|!is|as|as\?|assert)\b</string> 595 <key>name</key> 596 <string>keyword.operator.kotlin</string> 597 </dict> 598 <dict> 599 <key>match</key> 600 <string>(==|!=|===|!==|<=|>=|<|>)</string> 601 <key>name</key> 602 <string>keyword.operator.comparison.kotlin</string> 603 </dict> 604 <dict> 605 <key>match</key> 606 <string>(=)</string> 607 <key>name</key> 608 <string>keyword.operator.assignment.kotlin</string> 609 </dict> 610 <dict> 611 <key>match</key> 612 <string>(::)</string> 613 <key>name</key> 614 <string>keyword.operator.kotlin</string> 615 </dict> 616 <dict> 617 <key>match</key> 618 <string>(:)</string> 619 <key>name</key> 620 <string>keyword.operator.declaration.kotlin</string> 621 </dict> 622 <dict> 623 <key>match</key> 624 <string>\b(by)\b</string> 625 <key>name</key> 626 <string>keyword.other.by.kotlin</string> 627 </dict> 628 <dict> 629 <key>match</key> 630 <string>(\?\.)</string> 631 <key>name</key> 632 <string>keyword.operator.safenav.kotlin</string> 633 </dict> 634 <dict> 635 <key>match</key> 636 <string>(\.)</string> 637 <key>name</key> 638 <string>keyword.operator.dot.kotlin</string> 639 </dict> 640 <dict> 641 <key>match</key> 642 <string>(\?:)</string> 643 <key>name</key> 644 <string>keyword.operator.elvis.kotlin</string> 645 </dict> 646 <dict> 647 <key>match</key> 648 <string>(\-\-|\+\+)</string> 649 <key>name</key> 650 <string>keyword.operator.increment-decrement.kotlin</string> 651 </dict> 652 <dict> 653 <key>match</key> 654 <string>(\+=|\-=|\*=|\/=)</string> 655 <key>name</key> 656 <string>keyword.operator.arithmetic.assign.kotlin</string> 657 </dict> 658 <dict> 659 <key>match</key> 660 <string>(\.\.)</string> 661 <key>name</key> 662 <string>keyword.operator.range.kotlin</string> 663 </dict> 664 <dict> 665 <key>match</key> 666 <string>(\-|\+|\*|\/|%)</string> 667 <key>name</key> 668 <string>keyword.operator.arithmetic.kotlin</string> 669 </dict> 670 <dict> 671 <key>match</key> 672 <string>(!|&&|\|\|)</string> 673 <key>name</key> 674 <string>keyword.operator.logical.kotlin</string> 675 </dict> 676 <dict> 677 <key>match</key> 678 <string>(;)</string> 679 <key>name</key> 680 <string>punctuation.terminator.kotlin</string> 681 </dict> 682 </array> 683 </dict> 684 <key>namespaces</key> 685 <dict> 686 <key>patterns</key> 687 <array> 688 <dict> 689 <key>match</key> 690 <string>\b(namespace)\b</string> 691 <key>name</key> 692 <string>keyword.other.kotlin</string> 693 </dict> 694 <dict> 695 <key>begin</key> 696 <string>\{</string> 697 <key>end</key> 698 <string>\}</string> 699 <key>patterns</key> 700 <array> 701 <dict> 702 <key>include</key> 703 <string>#statements</string> 704 </dict> 705 </array> 706 </dict> 707 </array> 708 </dict> 709 <key>parameters</key> 710 <dict> 711 <key>patterns</key> 712 <array> 713 <dict> 714 <key>begin</key> 715 <string>(:)</string> 716 <key>beginCaptures</key> 717 <dict> 718 <key>1</key> 719 <dict> 720 <key>name</key> 721 <string>keyword.operator.declaration.kotlin</string> 722 </dict> 723 </dict> 724 <key>end</key> 725 <string>(?=,|\)|=)</string> 726 <key>patterns</key> 727 <array> 728 <dict> 729 <key>include</key> 730 <string>#types</string> 731 </dict> 732 </array> 733 </dict> 734 <dict> 735 <key>begin</key> 736 <string>(=)</string> 737 <key>beginCaptures</key> 738 <dict> 739 <key>1</key> 740 <dict> 741 <key>name</key> 742 <string>keyword.operator.declaration.kotlin</string> 743 </dict> 744 </dict> 745 <key>end</key> 746 <string>(?=,|\))</string> 747 <key>patterns</key> 748 <array> 749 <dict> 750 <key>include</key> 751 <string>#expressions</string> 752 </dict> 753 </array> 754 </dict> 755 <dict> 756 <key>include</key> 757 <string>#keywords</string> 758 </dict> 759 <dict> 760 <key>match</key> 761 <string>\w+</string> 762 <key>name</key> 763 <string>variable.parameter.function.kotlin</string> 764 </dict> 765 </array> 766 </dict> 767 <key>statements</key> 768 <dict> 769 <key>patterns</key> 770 <array> 771 <dict> 772 <key>include</key> 773 <string>#namespaces</string> 774 </dict> 775 <dict> 776 <key>include</key> 777 <string>#typedefs</string> 778 </dict> 779 <dict> 780 <key>include</key> 781 <string>#classes</string> 782 </dict> 783 <dict> 784 <key>include</key> 785 <string>#functions</string> 786 </dict> 787 <dict> 788 <key>include</key> 789 <string>#variables</string> 790 </dict> 791 <dict> 792 <key>include</key> 793 <string>#getters-and-setters</string> 794 </dict> 795 <dict> 796 <key>include</key> 797 <string>#expressions</string> 798 </dict> 799 </array> 800 </dict> 801 <key>strings</key> 802 <dict> 803 <key>patterns</key> 804 <array> 805 <dict> 806 <key>begin</key> 807 <string>"""</string> 808 <key>beginCaptures</key> 809 <dict> 810 <key>0</key> 811 <dict> 812 <key>name</key> 813 <string>punctuation.definition.string.begin.kotlin</string> 814 </dict> 815 </dict> 816 <key>end</key> 817 <string>"""</string> 818 <key>endCaptures</key> 819 <dict> 820 <key>0</key> 821 <dict> 822 <key>name</key> 823 <string>punctuation.definition.string.end.kotlin</string> 824 </dict> 825 </dict> 826 <key>name</key> 827 <string>string.quoted.third.kotlin</string> 828 <key>patterns</key> 829 <array> 830 <dict> 831 <key>match</key> 832 <string>(\$\w+|\$\{[^\}]+\})</string> 833 <key>name</key> 834 <string>variable.parameter.template.kotlin</string> 835 </dict> 836 <dict> 837 <key>match</key> 838 <string>\\.</string> 839 <key>name</key> 840 <string>constant.character.escape.kotlin</string> 841 </dict> 842 </array> 843 </dict> 844 <dict> 845 <key>begin</key> 846 <string>"</string> 847 <key>beginCaptures</key> 848 <dict> 849 <key>0</key> 850 <dict> 851 <key>name</key> 852 <string>punctuation.definition.string.begin.kotlin</string> 853 </dict> 854 </dict> 855 <key>end</key> 856 <string>"</string> 857 <key>endCaptures</key> 858 <dict> 859 <key>0</key> 860 <dict> 861 <key>name</key> 862 <string>punctuation.definition.string.end.kotlin</string> 863 </dict> 864 </dict> 865 <key>name</key> 866 <string>string.quoted.double.kotlin</string> 867 <key>patterns</key> 868 <array> 869 <dict> 870 <key>match</key> 871 <string>(\$\w+|\$\{[^\}]+\})</string> 872 <key>name</key> 873 <string>variable.parameter.template.kotlin</string> 874 </dict> 875 <dict> 876 <key>match</key> 877 <string>\\.</string> 878 <key>name</key> 879 <string>constant.character.escape.kotlin</string> 880 </dict> 881 </array> 882 </dict> 883 <dict> 884 <key>begin</key> 885 <string>'</string> 886 <key>beginCaptures</key> 887 <dict> 888 <key>0</key> 889 <dict> 890 <key>name</key> 891 <string>punctuation.definition.string.begin.kotlin</string> 892 </dict> 893 </dict> 894 <key>end</key> 895 <string>'</string> 896 <key>endCaptures</key> 897 <dict> 898 <key>0</key> 899 <dict> 900 <key>name</key> 901 <string>punctuation.definition.string.end.kotlin</string> 902 </dict> 903 </dict> 904 <key>name</key> 905 <string>string.quoted.single.kotlin</string> 906 <key>patterns</key> 907 <array> 908 <dict> 909 <key>match</key> 910 <string>\\.</string> 911 <key>name</key> 912 <string>constant.character.escape.kotlin</string> 913 </dict> 914 </array> 915 </dict> 916 <dict> 917 <key>begin</key> 918 <string>`</string> 919 <key>beginCaptures</key> 920 <dict> 921 <key>0</key> 922 <dict> 923 <key>name</key> 924 <string>punctuation.definition.string.begin.kotlin</string> 925 </dict> 926 </dict> 927 <key>end</key> 928 <string>`</string> 929 <key>endCaptures</key> 930 <dict> 931 <key>0</key> 932 <dict> 933 <key>name</key> 934 <string>punctuation.definition.string.end.kotlin</string> 935 </dict> 936 </dict> 937 <key>name</key> 938 <string>string.quoted.single.kotlin</string> 939 </dict> 940 </array> 941 </dict> 942 <key>typedefs</key> 943 <dict> 944 <key>begin</key> 945 <string>(?=\s*(?:type))</string> 946 <key>end</key> 947 <string>(?=$)</string> 948 <key>patterns</key> 949 <array> 950 <dict> 951 <key>match</key> 952 <string>\b(type)\b</string> 953 <key>name</key> 954 <string>keyword.other.kotlin</string> 955 </dict> 956 <dict> 957 <key>begin</key> 958 <string><</string> 959 <key>end</key> 960 <string>></string> 961 <key>patterns</key> 962 <array> 963 <dict> 964 <key>include</key> 965 <string>#generics</string> 966 </dict> 967 </array> 968 </dict> 969 <dict> 970 <key>include</key> 971 <string>#expressions</string> 972 </dict> 973 </array> 974 </dict> 975 <key>types</key> 976 <dict> 977 <key>patterns</key> 978 <array> 979 <dict> 980 <key>match</key> 981 <string>\b(Nothing|Any|Unit|String|CharSequence|Int|Boolean|Char|Long|Double|Float|Short|Byte|dynamic)\b</string> 982 <key>name</key> 983 <string>storage.type.buildin.kotlin</string> 984 </dict> 985 <dict> 986 <key>match</key> 987 <string>\b(IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray)\b</string> 988 <key>name</key> 989 <string>storage.type.buildin.array.kotlin</string> 990 </dict> 991 <dict> 992 <key>begin</key> 993 <string>\b(Array|Collection|List|Map|Set|MutableList|MutableMap|MutableSet|Sequence)<\b</string> 994 <key>beginCaptures</key> 995 <dict> 996 <key>1</key> 997 <dict> 998 <key>name</key> 999 <string>storage.type.buildin.collection.kotlin</string> 1000 </dict> 1001 </dict> 1002 <key>end</key> 1003 <string>></string> 1004 <key>patterns</key> 1005 <array> 1006 <dict> 1007 <key>include</key> 1008 <string>#types</string> 1009 </dict> 1010 <dict> 1011 <key>include</key> 1012 <string>#keywords</string> 1013 </dict> 1014 </array> 1015 </dict> 1016 <dict> 1017 <key>begin</key> 1018 <string>\w+<</string> 1019 <key>end</key> 1020 <string>></string> 1021 <key>patterns</key> 1022 <array> 1023 <dict> 1024 <key>include</key> 1025 <string>#types</string> 1026 </dict> 1027 <dict> 1028 <key>include</key> 1029 <string>#keywords</string> 1030 </dict> 1031 </array> 1032 </dict> 1033 <dict> 1034 <key>begin</key> 1035 <string>\{</string> 1036 <key>end</key> 1037 <string>\}</string> 1038 <key>patterns</key> 1039 <array> 1040 <dict> 1041 <key>include</key> 1042 <string>#statements</string> 1043 </dict> 1044 </array> 1045 </dict> 1046 <dict> 1047 <key>begin</key> 1048 <string>\(</string> 1049 <key>end</key> 1050 <string>\)</string> 1051 <key>patterns</key> 1052 <array> 1053 <dict> 1054 <key>include</key> 1055 <string>#types</string> 1056 </dict> 1057 </array> 1058 </dict> 1059 <dict> 1060 <key>match</key> 1061 <string>(->)</string> 1062 <key>name</key> 1063 <string>keyword.operator.declaration.kotlin</string> 1064 </dict> 1065 </array> 1066 </dict> 1067 <key>variables</key> 1068 <dict> 1069 <key>begin</key> 1070 <string>(?=\s*\b(?:var|val)\b)</string> 1071 <key>end</key> 1072 <string>(?=:|=|(\b(by)\b)|$)</string> 1073 <key>patterns</key> 1074 <array> 1075 <dict> 1076 <key>begin</key> 1077 <string>\b(var|val)\b</string> 1078 <key>beginCaptures</key> 1079 <dict> 1080 <key>1</key> 1081 <dict> 1082 <key>name</key> 1083 <string>keyword.other.kotlin</string> 1084 </dict> 1085 </dict> 1086 <key>end</key> 1087 <string>(?=:|=|(\b(by)\b)|$)</string> 1088 <key>patterns</key> 1089 <array> 1090 <dict> 1091 <key>begin</key> 1092 <string><</string> 1093 <key>end</key> 1094 <string>></string> 1095 <key>patterns</key> 1096 <array> 1097 <dict> 1098 <key>include</key> 1099 <string>#generics</string> 1100 </dict> 1101 </array> 1102 </dict> 1103 <dict> 1104 <key>captures</key> 1105 <dict> 1106 <key>2</key> 1107 <dict> 1108 <key>name</key> 1109 <string>entity.name.variable.kotlin</string> 1110 </dict> 1111 </dict> 1112 <key>match</key> 1113 <string>([\.<\?>\w]+\.)?(\w+)</string> 1114 </dict> 1115 </array> 1116 </dict> 1117 <dict> 1118 <key>begin</key> 1119 <string>(:)</string> 1120 <key>beginCaptures</key> 1121 <dict> 1122 <key>1</key> 1123 <dict> 1124 <key>name</key> 1125 <string>keyword.operator.declaration.kotlin</string> 1126 </dict> 1127 </dict> 1128 <key>end</key> 1129 <string>(?==|$)</string> 1130 <key>patterns</key> 1131 <array> 1132 <dict> 1133 <key>include</key> 1134 <string>#types</string> 1135 </dict> 1136 <dict> 1137 <key>include</key> 1138 <string>#getters-and-setters</string> 1139 </dict> 1140 </array> 1141 </dict> 1142 <dict> 1143 <key>begin</key> 1144 <string>\b(by)\b</string> 1145 <key>beginCaptures</key> 1146 <dict> 1147 <key>1</key> 1148 <dict> 1149 <key>name</key> 1150 <string>keyword.other.kotlin</string> 1151 </dict> 1152 </dict> 1153 <key>end</key> 1154 <string>(?=$)</string> 1155 <key>patterns</key> 1156 <array> 1157 <dict> 1158 <key>include</key> 1159 <string>#expressions</string> 1160 </dict> 1161 </array> 1162 </dict> 1163 <dict> 1164 <key>begin</key> 1165 <string>(=)</string> 1166 <key>beginCaptures</key> 1167 <dict> 1168 <key>1</key> 1169 <dict> 1170 <key>name</key> 1171 <string>keyword.operator.assignment.kotlin</string> 1172 </dict> 1173 </dict> 1174 <key>end</key> 1175 <string>(?=$)</string> 1176 <key>patterns</key> 1177 <array> 1178 <dict> 1179 <key>include</key> 1180 <string>#expressions</string> 1181 </dict> 1182 <dict> 1183 <key>include</key> 1184 <string>#getters-and-setters</string> 1185 </dict> 1186 </array> 1187 </dict> 1188 </array> 1189 </dict> 1190 </dict> 1191 <key>scopeName</key> 1192 <string>source.Kotlin</string> 1193 <key>uuid</key> 1194 <string>d508c059-a938-4779-b2bc-ff43a5078907</string> 1195 </dict> 1196 </plist>
第2步 选择Kotlin语法
右下脚 --> 左键 --> 选择喜欢的高亮样式
3.3 编译运行kotlin代码
和 [ 2.3 编译和运行kotlin代码 ] 一样。