VSCode single to double quote การแทนที่อัตโนมัติ


111

เมื่อฉันรันFormat Documentคำสั่งบนไฟล์ Vue Component.vue VSCode แทนที่สตริงที่ยกมาเดี่ยวทั้งหมดด้วยสตริงที่ยกมาคู่

ในกรณีเฉพาะของฉันกฎนี้ขัดแย้งกับการกำหนดค่า lint ของ electron-vue ที่ต้องใช้ singlequote

ฉันไม่ได้ติดตั้งส่วนขยายที่สวยกว่านี้ (ไม่มีprettier.singleQuoteในการตั้งค่าของฉัน)

จะปรับแต่ง VSCode เพื่อหลีกเลี่ยงสิ่งนี้ได้อย่างไร?



ที่เกี่ยวข้อง - stackoverflow.com/a/64749368/984471
Manohar Reddy Poreddy

คำตอบ:


142

ฉันไม่ได้prettierติดตั้งส่วนขยาย แต่หลังจากอ่านคำตอบที่เป็นไปได้ที่ซ้ำกันฉันได้เพิ่มตั้งแต่ต้นในการตั้งค่าผู้ใช้ของฉัน ( UserSetting.json, Ctrl +, ทางลัด):

"prettier.singleQuote": true

ส่วนคำเตือนสีเขียว ( Unknown configuration setting) ไม่มีการแทนที่เครื่องหมายคำพูดเดี่ยวอีกต่อไป

ฉันสงสัยว่ามองไม่เห็นส่วนขยายที่สวยกว่า แต่ฝังอยู่ในส่วนขยายVetur


2
สิ่งนี้ไม่ได้ผลสำหรับฉัน ฉันต้องใช้vetur.format.defaultFormatterOptionsแทน ดูhttps://vuejs.github.io/vetur/formatting.html#settings
user1620220

หลังจากเปิดการค้นหาด่วนให้พิมพ์ "> การตั้งค่าผู้ใช้" แล้วคลิก "ค่ากำหนด: เปิดการตั้งค่าผู้ใช้" ในช่องค้นหาของค่ากำหนดของคุณพิมพ์ "prettier.singleQuote" แล้วคลิกช่องทำเครื่องหมายสำหรับใบเสนอราคาเดียวที่สวยกว่า
Kody

7
สิ่งนี้ไม่ได้ผลสำหรับฉันquote_type = singleใน[*.myDesiredFileExtension]ส่วนภายใน.editorconfigไฟล์เป็นวิธีแก้ปัญหา
เหงา

85

เช่นเดียวกับผู้ชาย (@ user2982122) ที่กล่าวถึง แต่แทนที่จะเป็นFileไปที่Code -> Preferences -> Settings จากนั้นมองหาQuoteเลือกPrettierแล้วเลือกทั้งสองช่อง

ใส่คำอธิบายภาพที่นี่ ใส่คำอธิบายภาพที่นี่


1
คุณต้องโหลดการตั้งค่าเหล่านี้ซ้ำเพื่อให้มีผลหรือไม่ ฉันตรวจสอบทั้งคู่แล้ว แต่เมื่อฉันบันทึกไฟล์. jsx ของฉันเครื่องหมายคำพูดคู่จะไม่เปลี่ยนเป็น single
J Woodchuck

นั่นเป็นเรื่องแปลกฉันใช้เวอร์ชันนี้: รุ่น 1.14 build 1.14.0-17740
mustapha mekhatria

60

สำหรับโครงการที่ใช้.editorconfigไฟล์โดยค่าเริ่มต้น ฟอร์แมตเตอร์จะละเว้นกฎในการตั้งค่าและใช้กฎใน.editorconfigจากนั้นคุณสามารถ:

  • ลบ .editorconfigไฟล์และใช้การตั้งค่า VSCode ของคุณ
  • เพิ่มquote_type = singleลงใน.editorconfigไฟล์เกี่ยวกับประเภทไฟล์ของคุณ นอกจากนี้คุณยังสามารถตั้งquote_typeค่าให้กับหรือdoubleauto

1
ฉันทำสิ่งนี้แล้วและไม่ได้ผลไม่ว่าฉันจะติดตั้ง editorconfig ทั่วโลกหรือพยายามฟ้อง editorconfig สำหรับ VS Code :(
acarlstein

ขอบคุณแอป Angular ของฉันใช้.editorconfigโดยค่าเริ่มต้น (ไม่รู้ว่า) และโซลูชันของคุณแก้ไขปัญหาของฉัน
benshabatnoam

โปรดพิจารณา: คุณไม่สามารถลบได้.editorconfigหากเป็นโครงการเวอร์ชันทั่วไป
Lonely

38

ดูเหมือนว่าจะเป็นจุดบกพร่องสำหรับปัญหานี้: Prettier Bug

วิธีแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉัน สิ่งเดียวที่ได้ผลคือการเพิ่มบรรทัดของโค้ดนี้ใน package.json:

"prettier": {
    "singleQuote": true
  },

1
ไม่น่าเชื่อธันวาคม 2020 นี่ก็ยังเป็นสิ่งเดียวที่เหมาะกับฉันเช่นกัน
Andrey Popov



12

วิธีแก้ไขที่ถูกต้อง:

ฉันเพิ่มไฟล์. prettierrc.js ในโปรเจ็กต์หลักของฉันและเขียน

module.exports = {
    singleQuote: true
  };

ฉันลองแล้ว แต่มันเกิดข้อผิดพลาด: "ESLint: Failed to load config" defaults / configurations / eslint "to expand from" ที่ดีที่สุดคือเพิ่มสิ่งนี้ใน package.json เฉลย
Avjol Sakaj

คุณใส่ไฟล์. prettierrc.js ในรูทของโปรเจ็กต์หรือไม่
Omar Hasan

9

สำหรับมือใหม่อย่างฉัน:

จากแถบนำทางเมนูที่ด้านบน: เลือกไฟล์ -> การตั้งค่า -> การตั้งค่า ในกล่องข้อความค้นหาพิมพ์ใบเสนอราคาในรายการที่กรองแล้วที่ปรากฏด้านล่างมองหาไอคอนรูปเฟืองและถัดจากนั้น - "Prettier" คลิกที่ช่องทำเครื่องหมายเพื่อเปิดใช้งาน "Prettier: Single Quote"


8

ติดตั้งส่วนขยายที่สวยกว่าและวางโค้ดด้านล่างในsettings.jsonไฟล์VSCode ของคุณ

 "prettier.useEditorConfig": false,
 "prettier.singleQuote": true

ซึ่งจะไม่สนใจ.editorconfigการตั้งค่าไฟล์ของคุณ


6

ตามที่ระบุไว้โดย @attdona ส่วนขยายของ Vetur รวมถึงสวยกว่า

ในขณะที่คุณสามารถเปลี่ยนการตั้งค่าที่สวยกว่าได้ตามคำตอบที่ยอมรับคุณยังสามารถเปลี่ยนฟอร์แมตเตอร์สำหรับพื้นที่เฉพาะของส่วนประกอบ vue

ตัวอย่างเช่นที่นี่ฉันได้ตั้งค่า Vetur ให้ใช้ตัวจัดรูปแบบ vscode-typescript เนื่องจากใช้เครื่องหมายคำพูดเดี่ยวโดยค่าเริ่มต้น:

การตั้งค่า vscode vetur


6

ฉันใช้ typescript สำหรับฉันมันได้รับการแก้ไขแล้วด้วยการตรวจสอบแฟล็ก "การรวม Tslint" ภายใต้การตั้งค่าที่สวยกว่า (ในการตั้งค่า vscode):

การตั้งค่า vscode เพื่อให้สวยขึ้นแก้ไขปัญหาการจัดรูปแบบอัตโนมัติแบบ double quote


github.com/microsoft/vscode/issues/21424#issuecomment-282524286 - นี่คือเวลา / ที่ที่เข้าสู่ VSCode
แซม

6

ฉันมีปัญหาเดียวกันใน vscode เพียงสร้างไฟล์. prettierrcในไดเร็กทอรีรากของคุณและเพิ่ม json ต่อไปนี้ สำหรับคำพูดเดียวเพิ่ม:

{
  "singleQuote": true
}

สำหรับคำพูดคู่เพิ่ม:

  {
      "singleQuote": false
  }

6

ลองใช้วิธีแก้ปัญหาเหล่านี้

  1. ในไฟล์ vscode settings.json ให้เพิ่มรายการนี้ "prettier.singleQuote": true
  2. ใน vscode ถ้าคุณมี.editorconfigไฟล์ให้เพิ่มบรรทัดนี้ใต้สัญลักษณ์ root [*]quote_type = single
  3. ใน vscode ถ้าคุณมี.prettierrcไฟล์ให้เพิ่มบรรทัดนี้
{
    "singleQuote": true,
    "vetur.format.defaultFormatterOptions": {
        "prettier": {
            "singleQuote": true
        }
    }
}

1
ตัวเลือกที่สองทำงานที่น่าเสียดายที่คำตอบอื่น ๆ ในหน้านี้ไม่ได้ทำงาน
โม

6

มีเพียงวิธีแก้ปัญหาที่เหมาะกับฉัน: และสำหรับโครงการเชิงมุมเท่านั้น:

เพียงเข้าไปในไฟล์ ".editorconfig" ของโปรเจ็กต์แล้ววาง "quote_type = single" หวังว่ามันจะเหมาะกับคุณเช่นกัน


ฉันต้องการโซลูชันนี้โดยเฉพาะสำหรับโครงการเชิงมุมเช่นกัน chnages อื่น ๆ ทั้งหมดเพื่อการตั้งค่าที่สวยงามกว่านั้นไม่ทำงาน
J King

4

ฉันเพิ่มไฟล์ที่เรียกว่า.prettierrcในโฟลเดอร์โครงการของฉัน เนื้อหาไฟล์:

{
    "singleQuote": true,
    "vetur.format.defaultFormatterOptions": {
        "prettier": {
            "singleQuote": true
        }
    }
}




1

ใช้งานได้สำหรับฉันในการตรวจสอบใบเสนอราคาเดียวใน Prettier เช่นกัน tslint.autoFixOnSave เป็นจริง

ใส่คำอธิบายภาพที่นี่

ใส่คำอธิบายภาพที่นี่


1
quote_type = single

เพิ่มสิ่งนี้ภายใน. editorconfig

# EditorConfig is awesome: https://EditorConfig.org

# top-most EditorConfig file
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = false
quote_type = single

0

สำหรับฉันทั้งสองตัวเลือกแก้ไขปัญหาได้:

  1. โดยเพิ่มภายใน. prettierrc - "singleQuote": true

  2. หรือเพิ่มสิ่งต่อไปนี้ใน package.json -> "prettier": {"singleQuote": true}

แม้ว่าฉันจะพยายามเพิ่ม.prettierrc.jsและติดตามแล้วก็ตาม

module.exports = {singleQuote: true};

สิ่งนี้ไม่ได้ผล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.