Làm cách nào để tạo Mã VS để coi các phần mở rộng tệp khác là ngôn ngữ nhất định?


332

Hoặc có cách nào để chuyển ngôn ngữ của tệp hiện tại sang sử dụng tính năng tô sáng cú pháp không?

Ví dụ: *.jsxthực sự sử dụng JavaScript nhưng Mã VS không nhận ra nó.

Câu trả lời:


499

Trong Visual Studio Code , bạn có thể thêm các liên kết tệp liên tục để làm nổi bật ngôn ngữ vào settings.jsontệp của mình như thế này:

// Place your settings in this file to overwrite the default settings
{
  "some_setting": custom_value,
  ...

  "files.associations": {
    "*.thor": "ruby",
    "*.jsx": "javascript",
    "Jenkinsfile*": "groovy"
  }
}

Bạn có thể sử dụng Ctrl+ Shift+ pvà sau đó gõ settings JSON. Chọn tùy chọn: Mở Cài đặt (JSON) để mở settings.json.

Các Files: Associationstính năng lần đầu tiên được giới thiệu trong Visual Studio Mã phiên bản 1.0 (tháng năm 2016). Kiểm tra các mẫu ký tự đại diện có sẵn trong ghi chú phát hành và các chuỗi ngôn ngữ đã biết trong tài liệu.


6
Giá trị cho liên kết cần phải là ID của ngôn ngữ / plugin, không phải tên. Ví dụ: plugin VBScript tôi đã cài đặt, ID là vbs. "* .vms": "vbs" có tiện ích mở rộng tùy chỉnh để liên kết chính xác.
Matt Merrill

Chỉ cần đối mặt với một vấn đề tương tự. Nếu việc thêm liên kết tệp dường như không hoạt động, hãy đảm bảo bạn không .editorconfigđóng tệp hoặc căn chỉnh các cấu hình giữa VSCode và .editorconfigsau đó sẽ được ưu tiên
RecuencoJones

Bạn cũng có thể đặt các cài đặt này trong một ${projectdir}/.vscode/settings.jsontệp cụ thể của dự án .
Jason

108

Giữ phím Ctrl + Shift + P (hoặc cmd trên máy Mac), chọn "Thay đổi chế độ ngôn ngữ" và ở đó.

Nhưng tôi vẫn không thể tìm ra cách tạo các tệp VS Code được nhận dạng với phần mở rộng cụ thể như một số ngôn ngữ nhất định.


3
Nó xuất hiện một lối tắt trực tiếp đến Change Language Mode; Alt+K, M
Stafford Williams

Cmd+K, Mcho Mac.
GreeKatrina

Điều này là rất có thể. Xem câu trả lời của tôi dưới đây: stackoverflow.com/a/51228725/3307796
JoelAZ

69

Cách dễ nhất tôi đã tìm thấy cho một liên kết toàn cầu chỉ đơn giản là ctrl + km (hoặc ctrl + shift + p và nhập "thay đổi chế độ ngôn ngữ") với một tệp thuộc loại bạn đang liên kết mở.

Trong các lựa chọn đầu tiên sẽ là "Định cấu hình Hiệp hội tệp cho 'x'" (bất kỳ loại tệp nào - xem hình ảnh được đính kèm) Việc chọn này làm cho liên kết kiểu tệp vĩnh viễn

nhập mô tả hình ảnh ở đây

Điều này có thể đã thay đổi (có thể đã làm) kể từ câu hỏi ban đầu và câu trả lời được chấp nhận (và tôi không biết khi nào nó thay đổi) nhưng nó dễ dàng hơn nhiều so với các bước chỉnh sửa thủ công trong câu trả lời được chấp nhận và một số câu trả lời khác, và hoàn toàn tránh được để muss với ID có thể không rõ ràng.


2
Cảm ơn - điều này đã làm việc cho tôi. Không rõ khi chỉnh sửa thủ công settings.jsontệp ID mở rộng nên là gì, nhưng phương pháp này đã sắp xếp nó!
ccbunney

1
Bạn được chào đón @ccbunney, rất vui vì điều đó có ích. Đó chính xác là cùng một vấn đề tôi gặp phải - và tôi chưa bao giờ tìm ra ID tiện ích mở rộng mà tôi cần, lol. Dù sao, tôi rất vui khi tìm thấy giải pháp này cho chính mình và thật tuyệt khi nó giúp được những người khác! : D
JoelAZ

32

ví dụ:

// .vscode/settings.json in workspace

{
  "files.associations": {
    "*Container.js": "javascriptreact",
    "**/components/*/*.js": "javascriptreact",
    "**/config/routes.js": "javascriptreact"
  }
}

1
Đẹp. Điều này rất hữu ích nếu bạn có cùng một phần mở rộng, nhưng các trình phân tích ngôn ngữ khác nhau dựa trên đường dẫn. Ví dụ: bạn có thể có yml để xử lý các đường dẫn Concference trong một thư mục và các tệp Ansible trong một thư mục khác.
Christian Maslen

Tôi sẽ nâng cấp điều này hai lần nếu tôi có thể. Đã cố gắng duy trì cú pháp cho các bố cục Nanoc và các phần của tôi với phần mở rộng .html, điều này đã giải quyết nó: "**/layouts/**/*.html": "erb"- đáng chú ý là trình đơn thả xuống "chế độ ngôn ngữ" VSCode hiển thị tên thực của cú pháp tô sáng trong ngoặc, ví dụ:Ruby ERB (erb)
Dave Everitt


12

Điều này, ví dụ, sẽ làm cho các tệp kết thúc .variables.overridesđược xử lý giống như bất kỳ tệp LESS nào khác. Về mặt tô màu mã, về định dạng (tự động). Xác định trong cài đặt người dùng hoặc cài đặt dự án, như bạn muốn.

(UI ngữ nghĩa sử dụng các tiện ích mở rộng kỳ lạ này, trong trường hợp bạn thắc mắc)



8

Làm theo các bước trên https://code.visualstudio.com/docs/customization/colorizer#_common-questions hoạt động tốt với tôi:

Để mở rộng bộ tạo màu hiện có, bạn sẽ tạo một gói.j.j đơn giản trong một thư mục mới trong .vscode / extend và cung cấp thuộc tính extensionDependencies chỉ định tùy chỉnh mà bạn muốn thêm vào. Trong ví dụ dưới đây, một phần mở rộng .mmd được thêm vào bộ đánh dấu màu. Lưu ý rằng không chỉ tên phần mở rộng phải phù hợp với tùy chỉnh mà cả id ngôn ngữ cũng phải phù hợp với id ngôn ngữ của bộ tô màu bạn đang mở rộng.

{
    "name": "MyMarkdown",
    "version": "0.0.1",
    "engines": {
        "vscode": "0.10.x"
    },
    "publisher": "none",
    "extensionDependencies": [
        "markdown"
    ],
    "contributes": {
        "languages": [{
            "id": "markdown",
            "aliases": ["mmd"],
            "extensions": [".mmd"]
        }]
    }
}

5

Tôi đã theo một cách tiếp cận khác để giải quyết khá nhiều vấn đề tương tự, trong trường hợp của tôi, tôi đã tạo một tiện ích mở rộng mới có thêm hỗ trợ cú pháp PHP làm nổi bật các tệp dành riêng cho Drupal (như .module và .inc): https: // github. com / mastazi / VS-code-drupal

Như bạn có thể thấy trong mã, tôi đã tạo một phần mở rộng mới thay vì sửa đổi phần mở rộng PHP hiện có. Rõ ràng tôi tuyên bố một sự phụ thuộc vào phần mở rộng PHP trong phần mở rộng Drupal.

Ưu điểm của việc làm theo cách này là nếu có bản cập nhật cho phần mở rộng PHP, hỗ trợ tùy chỉnh của tôi cho Drupal sẽ không bị mất trong quá trình cập nhật.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.