การตั้งค่าปัจจุบันของฉันถือว่า 8 ช่องว่าง; ฉันจะกำหนดใหม่ได้อย่างไร
การตั้งค่าปัจจุบันของฉันถือว่า 8 ช่องว่าง; ฉันจะกำหนดใหม่ได้อย่างไร
คำตอบ:
ขึ้นอยู่กับว่าคุณหมายถึงอะไร คุณต้องการให้อักขระแท็บที่เกิดขึ้นจริงในไฟล์ของคุณปรากฏขึ้นมีความกว้าง 4 ช่องว่างหรือโดย "แท็บ" คุณหมายถึงการเยื้องหรือไม่ซึ่งสร้างขึ้นโดยการกดปุ่มแท็บซึ่งจะส่งผลให้ไฟล์มีอักขระ 4 ตัวสำหรับ แต่ละ "แท็บ" ที่คุณพิมพ์?
ทั้งนี้ขึ้นอยู่กับคำตอบของคุณอย่างใดอย่างหนึ่งต่อไปนี้ชุดการตั้งค่าควรจะทำงานสำหรับคุณ:
สำหรับอักขระแท็บที่ปรากฏทั้ง 4 ช่องว่าง :
set tabstop=4
หากคุณใช้อักขระแท็บจริงในซอร์สโค้ดของคุณคุณอาจต้องการการตั้งค่าเหล่านี้ (นี่คือค่าเริ่มต้นจริง ๆ แต่คุณอาจต้องการตั้งค่าแบบป้องกัน):
set softtabstop=0 noexpandtab
สุดท้ายหากคุณต้องการให้ย่อหน้าตรงกับแท็บเดียวคุณควรใช้:
set shiftwidth=4
สำหรับการเยื้องที่ประกอบด้วยอักขระเว้นวรรค 4 ตัวแต่ถูกป้อนด้วยปุ่มแท็บ:
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
เพื่อให้การตั้งค่าข้างต้นถาวรเพิ่มบรรทัดเหล่านี้เพื่อคุณvimrc
ในกรณีที่คุณจำเป็นต้องทำการปรับเปลี่ยนหรือต้องการที่จะเข้าใจว่าตัวเลือกเหล่านี้หมายถึงอะไรทั้งหมดนี่คือรายละเอียดของแต่ละตัวเลือกที่มีความหมาย:
tabstop
ความกว้างของแท็บฮาร์ดที่วัดใน "ช่องว่าง" - ความกว้าง (สูงสุด) ของอักขระแท็บจริงได้อย่างมีประสิทธิภาพ
shiftwidth
ขนาดของ "เยื้อง" นอกจากนี้ยังวัดในพื้นที่ดังนั้นหากเยื้องฐานรหัสของคุณด้วยอักขระแท็บแล้วคุณต้องการให้เท่ากับจำนวนครั้งอักขระแท็บ
shiftwidth
tabstop
นอกจากนี้ยังถูกใช้โดยสิ่งที่ต้องการ=
,>
และ<
คำสั่ง
softtabstop
การตั้งค่านี้เป็นค่าที่ไม่เป็นศูนย์นอกจาก
tabstop
จะทำให้คีย์แท็บ (ในโหมดแทรก) แทรกการรวมกันของช่องว่าง (และแท็บที่เป็นไปได้) เพื่อจำลองแท็บหยุดที่ความกว้างนี้
expandtab
การเปิดใช้งานนี้จะทำให้คีย์แท็บ (ในโหมดแทรก) แทรกช่องว่างแทนอักขระแท็บ สิ่งนี้ยังส่งผลต่อพฤติกรรมของ
retab
คำสั่งด้วย
smarttab
การเปิดใช้งานสิ่งนี้จะทำให้ปุ่มแท็บ (ในโหมดแทรก) แทรกช่องว่างหรือแท็บเพื่อไปที่ย่อหน้าถัดไปของแท็บถัดไปเมื่อเคอร์เซอร์อยู่ที่จุดเริ่มต้นของบรรทัด (เช่นอักขระก่อนหน้าเท่านั้นคือช่องว่าง)
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งเหล่านี้ดูเป็นกลุ่ม (เช่น):help 'optionname'
:help 'tabstop'
~/.vimrc
คือการตั้งค่ากลุ่มของผู้ใช้ คนส่วนใหญ่ออกจากการตั้งค่าระบบเพียงอย่างเดียวและเพียงแค่แก้ไขการตั้งค่าผู้ใช้ โปรดทราบว่า~/.vimrc
จะไม่มีอยู่จนกว่าคุณจะสร้างขึ้นในระบบส่วนใหญ่
set softtabstop=4
คุณสมบัติ! ฉันเบื่อที่จะลองอ่านโค้ดของคุณด้วยless
หรือแก้ไขอื่น ๆ ยกเว้นvim
เพียงเพื่อดูการเยื้องที่แปลกประหลาดเพราะคุณกำหนดแท็บใหม่ให้มีจำนวนช่องว่างโดยพลการ (แม้ว่าระบบที่เหลือจะคิดเป็นอย่างอื่น)! :-)
tabstop=8
สำหรับการเยื้องที่มีช่องว่าง4ช่อง ฉันไม่สามารถรับเหตุผลหลังจากอ่านคำอธิบายของการตั้งค่าต่างๆ คำตอบอีกข้อหนึ่งบอกว่าจะใช้tabstop=4
ซึ่งทำให้ฉันมีความรู้สึกมากกว่าเล็กน้อย
tabstop
ตัวเลือกควบคุมความกว้างของอักขระแท็บยาก หากคุณต้องการเยื้องของคุณเพื่อประกอบด้วย 4 ตัวอักษรพื้นที่มากกว่าอักขระแท็บเดียวที่มี 4 กว้างแล้วความกว้างของอักขระแท็บของคุณไม่ได้เรื่อง - การเรียงลำดับของ ในทางปฏิบัติคุณอาจต้องการให้ความกว้างของอักขระแท็บของคุณแตกต่างจากความกว้างของการเยื้องเพื่อลดโอกาสของการที่อักขระแท็บปลอมตัวเป็นเยื้องที่เหมาะสม ( list
+ expandtab
สามารถช่วยได้ที่นี่เช่นกัน) นอกจากนี้แท็บ 8-char-wide คือ "มาตรฐาน" - เทอร์มินัล Python ของคุณและเครื่องมืออื่น ๆ มากมายเริ่มต้นที่แท็บ 8-char-wide
หากต้องการกำหนดสิ่งนี้เป็นการถาวรสำหรับผู้ใช้ปัจจุบันให้สร้าง (หรือแก้ไข) .vimrc
ไฟล์:
$ vim ~/.vimrc
จากนั้นวางการกำหนดค่าด้านล่างลงในไฟล์ เมื่อเริ่มต้นเป็นกลุ่มการตั้งค่าแท็บจะนำไปใช้
set tabstop=4 " The width of a TAB is set to 4.
" Still it is a \t. It is just that
" Vim will interpret it to be having
" a width of 4.
set shiftwidth=4 " Indents will have a width of 4
set softtabstop=4 " Sets the number of columns for a TAB
set expandtab " Expand TABs to spaces
:retab
ในการแปลงที่มีอยู่เพื่อ tab
vim.wikia.com/wiki/Converting_tabs_to_spacesspaces
หรือชวเลขสำหรับ vim modeline:
vim :set ts=4 sw=4 sts=4 et :
มีการตั้งค่าเล็กน้อยที่กำหนดว่าจะใช้ช่องว่างหรือแท็บ
ดังนั้นนี่คือฟังก์ชั่นที่ใช้งานง่ายซึ่งสามารถกำหนดไว้ใน~/.vimrc
ไฟล์ของคุณ:
function! UseTabs()
set tabstop=4 " Size of a hard tabstop (ts).
set shiftwidth=4 " Size of an indentation (sw).
set noexpandtab " Always uses tabs instead of space characters (noet).
set autoindent " Copy indent from current line when starting a new line (ai).
endfunction
function! UseSpaces()
set tabstop=2 " Size of a hard tabstop (ts).
set shiftwidth=2 " Size of an indentation (sw).
set expandtab " Always uses spaces instead of tab characters (et).
set softtabstop=0 " Number of spaces a <Tab> counts for. When 0, featuer is off (sts).
set autoindent " Copy indent from current line when starting a new line.
set smarttab " Inserts blanks on a <Tab> key (as per sw, ts and sts).
endfunction
การใช้งาน:
:call UseTabs()
:call UseSpaces()
หากต้องการใช้ตามนามสกุลไฟล์คุณสามารถใช้ไวยากรณ์ต่อไปนี้ (เพิ่มไปยัง.vimrc
):
au! BufWrite,FileWritePre *.module,*.install call UseSpaces()
ดูเพิ่มเติม: แปลงแท็บไปที่ช่องว่าง
นี่คือตัวอย่างอื่นจาก Wikia ซึ่งสามารถใช้เพื่อสลับระหว่างแท็บและช่องว่าง :
" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
set expandtab
" allow toggling between local and default mode
function TabToggle()
if &expandtab
set shiftwidth=8
set softtabstop=0
set noexpandtab
else
set shiftwidth=4
set softtabstop=4
set expandtab
endif
endfunction
nmap <F9> mz:execute TabToggle()<CR>'z
มันช่วยให้การใช้ 4 ช่องว่างสำหรับทุกแท็บและการทำแผนที่F9เพื่อสลับการตั้งค่า
ฉันคัดลอกและวางสิ่งนี้ลงในไฟล์. vimrc ของฉัน:
" size of a hard tabstop
set tabstop=4
" always uses spaces instead of tab characters
set expandtab
" size of an "indent"
set shiftwidth=4
การตั้งค่า 2 ครั้งแรกหมายความว่าเมื่อฉันกด Tab ฉันจะได้รับ 4 ช่องว่าง การตั้งค่าที่สามหมายความว่าเมื่อฉันทำV>
(เช่นภาพและเยื้อง) ฉันยังได้รับ 4 ช่องว่าง
ไม่ครอบคลุมเท่าคำตอบที่ยอมรับ แต่อาจช่วยคนที่ต้องการคัดลอกและวาง
ใส่การตั้งค่าที่คุณต้องการในไฟล์~ / .vimrc - ดูแนวทางและแนวทางปฏิบัติที่ดีที่สุดด้านล่าง
มีสี่วิธีหลักในการใช้แท็บใน Vim:
เก็บ 'tabstop' ไว้ที่ 8 เสมอตั้ง 'softtabstop' และ 'shiftwidth' เป็น 4 (หรือ 3 หรืออะไรก็ได้ที่คุณต้องการ) และใช้ 'noexpandtab' จากนั้นกลุ่มจะใช้แท็บและช่องว่างหลายแบบผสมกัน แต่การพิมพ์และจะทำงานเหมือนกับแท็บจะปรากฏขึ้นทุก ๆ 4 (หรือ 3) ตัวอักษร
หมายเหตุ:การตั้งค่า 'tabstop' เป็นค่าอื่นใดที่มากกว่า 8 สามารถทำให้ไฟล์ของคุณปรากฏผิดในหลาย ๆ ที่ (เช่นเมื่อพิมพ์)
ตั้งค่า 'tabstop' และ 'shiftwidth' เป็นสิ่งที่คุณต้องการและใช้ 'expandtab' วิธีนี้คุณจะแทรกช่องว่างเสมอ การจัดรูปแบบจะไม่สับสนเมื่อมีการเปลี่ยนแปลง 'tabstop'
ตั้งค่า 'tabstop' และ 'shiftwidth' เป็นสิ่งที่คุณต้องการและใช้ | modeline | เพื่อตั้งค่าเหล่านี้เมื่อแก้ไขไฟล์อีกครั้ง ใช้งานได้เฉพาะเมื่อใช้ Vim เพื่อแก้ไขไฟล์
ตั้งค่า 'tabstop' และ 'shiftwidth' เป็นค่าเดียวกันเสมอและ 'noexpandtab' สิ่งนี้จะใช้งานได้ (สำหรับการเยื้องเริ่มต้นเท่านั้น) สำหรับการตั้งค่า tabstop ใด ๆ ที่ผู้คนใช้ มันอาจจะดีถ้ามีแท็บหลังจากแทรกช่องว่างแรกเป็นช่องว่างถ้าคุณทำเช่นนี้ ความคิดเห็นที่สอดคล้องกันมิฉะนั้นจะผิดเมื่อ 'tabstop' ถูกเปลี่ยน
ที่มา:
:help tabstop
:help tabstop
เป็นกลุ่ม
อีกอย่างใช้
:retab
การแปลงที่มีอยู่tab
เพื่อspaces
http://vim.wikia.com/wiki/Converting_tabs_to_spaces
:set sw=4
เพิ่มบรรทัด
set ts=4
ใน
~/.vimrc
ไฟล์สำหรับผู้ใช้
หรือ
/etc/vimrc
ไฟล์สำหรับทั้งระบบ
พื้นฐานของฉัน ~ / .vimrc พร้อมความคิดเห็น:
set number " show line number
set tabstop=2 " set display width of tab; 1 tab = x space with
set expandtab " transform tab to x space (x is tabstop)
set autoindent " auto indent; new line with number of space at the beginning same as previous
set shiftwidth=2 " number of space append to lines when type >>
ถาวรสำหรับผู้ใช้ทั้งหมด (เมื่อคุณอยู่คนเดียวบนเซิร์ฟเวอร์):
# echo "set tabstop=4" >> /etc/vim/vimrc
โดยปกติบนเซิร์ฟเวอร์ใหม่apt-get purge nano mc
และอื่น ๆ ทั้งหมดเพื่อประหยัดเวลาของคุณ มิฉะนั้นคุณจะ redefine บรรณาธิการgit
, crontab
ฯลฯ
F10
ในnano
แต่ฉันมักจะทำเทคนิคบางอย่างกับบันทึก (อาจจะF10
เป็นวิธีแก้ปัญหา) หรือมันไม่ได้ทำงานในscreen
? ฉันจำไม่ได้แค่เกลียดมัน)