วิธีทำให้แท็บอักขระ 4 ช่องว่างแทน 8 ช่องว่างในนาโน?


152

เมื่อฉันกด TAB ในnanoเครื่องมือแก้ไขเคอร์เซอร์จะกระโดดด้วยช่องว่าง 8 ช่องดังนี้:

def square(x):
        return x * x
def cube(y):
        return y * y * y

ฉันจะตั้งค่าความกว้างแท็บหยุดเป็น 4 ช่องว่างเพื่อแสดงดังนี้:

def square(x):
    return x * x
def cube(y):
    return y * y * y

นาโนเป็นบรรณาธิการพื้นฐานที่น่ารัก มีโอกาสที่ดีที่มันไม่รองรับสิ่งนี้
millimoose

อืมไม่เพียง แต่ในนาโน แต่มันยังเยื้องด้วยช่องว่าง 8 เมื่อฉันใช้หลามล่ามในเทอร์มินัล
ซาตานล้มลง

2
คำตอบนี้มีไว้ใน SuperUser และควรปิดซ้ำซ้อน: superuser.com/questions/110421/tab-character-width-in-terminal
millimoose

6
@ millimoose การเปลี่ยนแท็บหยุดในเทอร์มินัลจะไม่ส่งผลกระทบต่อนาโน คำถามนี้ควรเกี่ยวกับนาโนหรือโดยเฉพาะเกี่ยวกับการตั้งค่าหยุดแท็บสำหรับ Python แต่ไม่เกี่ยวกับทั้งสองและไม่เกี่ยวกับการตั้งค่าแท็บหยุดโต้ตอบกับtabคำสั่งซึ่งไม่ส่งผลกระทบต่อโปรแกรมทั้งหมด
Chris หน้า

คำตอบ:


253

หากคุณใช้นาโนด้วยภาษาเช่นpython (ดังตัวอย่าง) คุณควรแปลงแท็บเป็นช่องว่างด้วย

แก้ไขไฟล์~ / .nanorcของคุณ(หรือสร้าง) และเพิ่ม:

set tabsize 4
set tabstospaces

หากคุณมีไฟล์พร้อมแท็บอยู่แล้วและต้องการแปลงเป็นช่องว่างฉันแนะนำexpandคำสั่ง (เชลล์):

expand -4 input.py > output.py

ฉันใช้เหรียญกษาปณ์และเมื่อฉันตั้ง tabsize จาก 8 เป็น 4 ใน / etc / nanorc และกลับไปที่ไฟล์ฉันยังได้รับ 8 ช่องว่างในแท็บฉันพยายามคัดลอกไฟล์ nanorc ไปที่ ~ / แต่นั่นใช้งานไม่ได้ปิดและเปิดเทอร์มินัลใหม่ แต่ฉันยังไม่สามารถรับ 4 ช่องว่างบนแท็บเว้นแต่ว่าฉันใช้ nano -T4 ขอบคุณ
อเล็กซ์

ตรวจสอบอีกครั้งว่าจะเริ่มต้น @ Alex ไฟล์ของคุณที่มีจุดไม่ได้.nanorc นี้จะต้องอยู่ในบ้านของคุณผู้ใช้ไดเรกทอรีคือnanorc /home/your-username/.nanorc
Sven Rojek

1
ขอบคุณฉันลงเอยด้วยการสร้าง. anorc อื่นที่แตกต่างจากใน / etc วางไว้ใน dir บ้านและที่ทำงาน นี่เป็นเพียง 3 บรรทัดที่ฉันรวมอยู่ใน. nanorc ใหม่สำหรับทุกคนที่สนใจ: ตั้งค่าตอนนี้ตั้งค่า tabsize 4 และตั้งค่า tabstospaces
Alex

5
/etc/nanorcถ้านี่เป็นของเล่นของคุณคุณสามารถทำให้การเปลี่ยนแปลงนี้ระบบที่มีความกว้างเพียงการแก้ไขไฟล์ทั่วโลก มีตัวเลือกอื่น ๆ ที่คุณสามารถเพลิดเพลินได้
fcm

สวัสดี @Alexey คำสั่ง Linux Shell นี้ทำงานได้กับทุกไฟล์ แต่ต้องแน่ใจว่าได้ระบุไฟล์เอาท์พุทอื่นมิฉะนั้นไฟล์ของคุณจะถูกทำให้ว่างเปล่า
Sven Rojek

91

ธงบรรทัดคำสั่ง

จากman nano:

-T cols (--tabsize=cols)
    Set the size (width) of a tab to cols columns.
    The value of cols must be greater than 0. The default value is 8.
-E (--tabstospaces)
    Convert typed tabs to spaces.

ตัวอย่างเช่นในการตั้งค่าขนาดแท็บเป็น 4 แทนที่แท็บด้วยช่องว่างและแก้ไขไฟล์ "foo.txt" คุณจะต้องรันคำสั่ง:

nano -ET4 foo.txt

ไฟล์กำหนดค่า

จากman nanorc:

set tabsize n
    Use a tab size of n columns. The value of n must be greater than 0.
    The default value is 8.
set/unset tabstospaces
    Convert typed tabs to spaces.

แก้ไข~/.nanorcไฟล์ของคุณ(สร้างมันหากไม่มี) และเพิ่มคำสั่งเหล่านั้นลงไป ตัวอย่างเช่น:

set tabsize 4
set tabstospaces

นาโนจะใช้การตั้งค่าเหล่านี้ตามค่าเริ่มต้นทุกครั้งที่เปิดตัว แต่การตั้งค่าสถานะบรรทัดคำสั่งจะแทนที่ค่าดังกล่าว


อืมมม ... ฉันไม่สามารถหาไฟล์. nanorc ใน ~ / directory
Fallen Satan

1
โอเคไม่เป็นไร. ฉันค้นหา nanorc ใน / etc directory ขอบคุณแม้ว่า
Fallan Satan

5
@ FallenSatan โดยทั่วไปคุณควรหลีกเลี่ยงการแก้ไข / etc / nanorc ยกเว้นว่าคุณจำเป็นต้องทำการปรับแต่งทั้งระบบ สร้าง ~ / .nanorc หากยังไม่มีอยู่และวางการปรับแต่งของคุณที่นั่น
Chris หน้า

1
โปรดทราบว่าในคำตอบข้างต้นคุณต้องเพิ่มบรรทัด "set tabsize 4" ไม่ใช่ "set tabspace 4"
Thomas N

1
sudo nano จะไม่ใช้ ~ / .nanorc ด้วยเหตุผลที่ชัดเจน ดังนั้นแฟล็กบรรทัดคำสั่งเป็นวิธีแก้ปัญหาที่ใช้งานได้จริงมากขึ้น
user608800

11

ใน nano 2.2.6 บรรทัดใน ~ / .nanorc เพื่อทำสิ่งนี้ดูเหมือนจะเป็น

set tabsize 4

การตั้งค่า tabspace ทำให้ฉันมีข้อผิดพลาด: 'ไม่ทราบสถานะ "tabspace"'


4

สำหรับผู้ดูในอนาคตมีบรรทัดในไฟล์ / etc / nanorc ของฉันใกล้กับบรรทัดที่ 153 ที่ระบุว่า "set tabsize 8" คำอาจต้อง tabsize แทน tabspace หลังจากที่ฉันแทนที่ 8 ด้วย 4 และไม่ใส่เครื่องหมายบรรทัดมันแก้ปัญหาของฉันได้



0

สำหรับใครก็ตามที่อาจสะดุดกับคำถามเก่านี้ ...

มีสิ่งหนึ่งที่ฉันคิดว่าต้องได้รับการแก้ไข

~/.nanorcถูกใช้เพื่อใช้การตั้งค่าเฉพาะของผู้ใช้กับ nano ดังนั้นหากคุณกำลังแก้ไขไฟล์ที่ต้องใช้sudo nanoสิทธิ์อนุญาตนี่จะไม่ทำงาน

เมื่อใช้sudoแฟ้มการกำหนดค่าผู้ใช้กำหนดเองของคุณจะไม่ถูกโหลดเมื่อเปิดโปรแกรมเป็นคุณไม่ได้ใช้โปรแกรมจากบัญชีของคุณเพื่อให้ไม่มีการเปลี่ยนแปลงการกำหนดค่าของคุณในการ~/.nanorcจะนำไปใช้

หากนี่คือสถานการณ์ที่คุณพบว่าคุณต้องการ (เรียกใช้sudo nano และใช้การตั้งค่าของคุณเอง) จากนั้นคุณมีสามตัวเลือก:

  • ใช้ธงบรรทัดคำสั่งเมื่อทำงาน sudo nano
  • แก้ไข/root/.nanorcไฟล์
  • แก้ไข/etc/nanorcไฟล์กำหนดค่าทั่วโลก

โปรดทราบว่า/etc/nanorcเป็นไฟล์กำหนดค่าส่วนกลางและจะมีผลกับผู้ใช้ทั้งหมดซึ่งอาจมีหรือไม่มีปัญหาขึ้นอยู่กับว่าคุณมีระบบผู้ใช้หลายคน

นอกจากนี้ผู้ใช้ config ไฟล์จะแทนที่หนึ่งทั่วโลกดังนั้นถ้าคุณมีการแก้ไข/etc/nanorcและ~/.nanorcมีการตั้งค่าที่แตกต่างกันเมื่อคุณเรียกnanoมันจะโหลดการตั้งค่าจาก~/.nanorcแต่ถ้าคุณทำงานแล้วมันจะโหลดการตั้งค่าจากsudo nano/etc/nanorc

กันไปสำหรับ/root/.nanorcสิ่งนี้จะแทนที่/etc/nanorcเมื่อทำงานsudo nano

ใช้ธงน่าจะเป็นตัวเลือกที่ดีที่สุดถ้าคุณมีจำนวนมากของตัวเลือก

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