يفترض إعدادي الحالي 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
name__عرض علامة تبويب ثابتة تقاس بـ "مسافات" - بفعالية العرض (الأقصى) لحرف علامة تبويب فعلي.
shiftwidth
name__حجم "المسافة البادئة". يتم قياسه أيضًا بمسافات ، لذا إذا كانت قاعدة الشفرة بادئة بأحرف علامات الجدولة ، فأنت تريد أن تساوي
shiftwidth
عدد مرات حروف علامة التبويبtabstop
name__. يستخدم هذا أيضًا بواسطة أشياء مثل الأوامر=
و>
و<
.
softtabstop
name__يؤدي تعيين هذا إلى قيمة غير صفرية غير
tabstop
إلى جعل مفتاح علامة التبويب (في وضع الإدراج) يدرج مجموعة من المسافات (وربما علامات تبويب) إلى محاكاة علامات الجدولة عند هذا العرض.
expandtab
name__سيؤدي تمكين هذا إلى جعل مفتاح الجدولة (في وضع الإدراج) يدخل مسافات بدلاً من أحرف علامات التبويب. يؤثر هذا أيضًا على سلوك الأمر
retab
name__.
smarttab
name__سيؤدي تمكين هذا إلى جعل مفتاح الجدولة (في وضع الإدراج) يدرج مسافات أو علامات تبويب للانتقال إلى المسافة البادئة التالية من علامة التبويب التالية عندما يكون المؤشر في بداية السطر (أي الأحرف السابقة فقط هي مسافة بيضاء).
لمزيد من التفاصيل حول أي من هذه ، راجع :help 'optionname'
في vim (على سبيل المثال ، :help 'tabstop'
)
لتحديد هذا على أساس دائم للمستخدم الحالي ، قم بإنشاء (أو تحرير) ملف .vimrc
:
$ vim ~/.vimrc
ثم ، قم بلصق التكوين أدناه في الملف. بمجرد إعادة تشغيل vim ، سيتم تطبيق إعدادات علامة التبويب.
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
أو اختصار ل vim modeline:
vim :set ts=4 sw=4 sts=4 et :
قمت بنسخ ولصق هذا في ملفي .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
الخاص بك:
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
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 ملف - انظر أدناه للحصول على بعض الإرشادات وأفضل الممارسات.
هناك أربع طرق رئيسية لاستخدام علامات التبويب في Vim:
احتفظ دائمًا بعلامة تبويب "tabstop" في 8 ، واضبط "softtabstop" و "shiftwidth" إلى 4 (أو 3 أو أي شيء تفضله) واستخدم "noexpandtab". بعد ذلك سوف يستخدم Vim مزيجًا من علامات التبويب والمسافات ، لكن الكتابة وستتصرف مثل علامة تبويب تظهر كل 4 (أو 3) أحرف.
ملاحظة: يمكن أن يؤدي تعيين "علامة تبويب" إلى أي قيمة أخرى غير 8 إلى جعل الملف الخاص بك يبدو خاطئًا في العديد من الأماكن (على سبيل المثال ، عند طباعته).
اضبط "tabstop" و "shiftwidth" على كل ما تفضله واستخدم "expandtab". بهذه الطريقة ستقوم دائمًا بإدخال مسافات. لن يتم إفساد التنسيق أبدًا عند تغيير "tabstop".
اضبط "tabstop" و "shiftwidth" على كل ما تفضله واستخدم | modeline | لتعيين هذه القيم عند تحرير الملف مرة أخرى. يعمل فقط عند استخدام Vim لتحرير الملف.
قم دائمًا بتعيين "tabstop" و "shiftwidth" على نفس القيمة و "noexpandtab". يجب أن يعمل هذا بعد ذلك (للمسافات الأولية فقط) لأي إعداد من علامات تبويب يستخدمه الأشخاص. قد يكون من الجيد أن يكون لديك علامات تبويب بعد إدراج أول غير فارغ كمسافات إذا قمت بذلك. وإلا فإن التعليقات المحاذاة ستكون خاطئة عند تغيير "tabstop".
مصدر:
أكثر شيء واحد ، واستخدام:retab
لتحويل tab
الحالي إلى spaces
http://vim.wikia.com/wiki/Converting_tabs_to_spaces
إضافة خطset ts=4
في~/.vimrc
ملف لكل مستخدم
أو/etc/vimrc
ملف لنظام واسع
:set sw=4
انظر إتقان محرر السادس