it-swarm.asia

إعادة تعريف علامة التبويب إلى 4 مسافات

يفترض إعدادي الحالي 8 مسافات ؛ كيف يمكنني إعادة تعريف ذلك؟

969
Ricky

هذا يعتمد على مقصدك. هل تريد أحرف علامة التبويب الفعلية في الملف الخاص بك تظهر عرض 4 مسافات ، أو بواسطة "علامة تبويب" هل تعني فعليًا مسافة بادئة ، يتم إنشاؤها عن طريق الضغط على مفتاح علامة التبويب ، والذي قد ينتج عنه الملف الذي يحتوي حرفيًا (بحد أقصى) 4 أحرف مساحة لكل "علامة تبويب" تكتبها؟

بناءً على إجابتك ، يجب أن تعمل إحدى مجموعات الإعدادات التالية:

  • لأحرف علامات التبويب التي تظهر 4 مسافات :

    set tabstop=4
    

    إذا كنت تستخدم حرف علامة جدولة فعلي في التعليمات البرمجية المصدر ، فربما تحتاج أيضًا إلى هذه الإعدادات (هذه هي الإعدادات الافتراضية بالفعل ، ولكن قد ترغب في تعيينها بشكل دفاعي):

    set softtabstop=0 noexpandtab
    

    أخيرًا ، إذا كنت تريد المسافة البادئة لتتوافق مع علامة تبويب واحدة ، يجب عليك أيضًا استخدام:

    set shiftwidth=4
    
  • بالنسبة للمسافات البادئة التي تتكون من 4 أحرف مسافة ولكن يتم إدخالها باستخدام مفتاح الجدولة:

    set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
    

لجعل الإعدادات المذكورة أعلاه دائمة أضف هذه الخطوط إلى vimrc .

في حال كنت بحاجة إلى إجراء تعديلات ، أو ترغب ببساطة في فهم معنى هذه الخيارات جميعها ، إليك شرح لما يعنيه كل خيار:

tabstopname__

عرض علامة تبويب ثابتة تقاس بـ "مسافات" - بفعالية العرض (الأقصى) لحرف علامة تبويب فعلي.

shiftwidthname__

حجم "المسافة البادئة". يتم قياسه أيضًا بمسافات ، لذا إذا كانت قاعدة الشفرة بادئة بأحرف علامات الجدولة ، فأنت تريد أن تساوي shiftwidthعدد مرات حروف علامة التبويب tabstopname__. يستخدم هذا أيضًا بواسطة أشياء مثل الأوامر = و > و <.

softtabstopname__

يؤدي تعيين هذا إلى قيمة غير صفرية غير tabstopإلى جعل مفتاح علامة التبويب (في وضع الإدراج) يدرج مجموعة من المسافات (وربما علامات تبويب) إلى محاكاة علامات الجدولة عند هذا العرض.

expandtabname__

سيؤدي تمكين هذا إلى جعل مفتاح الجدولة (في وضع الإدراج) يدخل مسافات بدلاً من أحرف علامات التبويب. يؤثر هذا أيضًا على سلوك الأمر retabname__.

smarttabname__

سيؤدي تمكين هذا إلى جعل مفتاح الجدولة (في وضع الإدراج) يدرج مسافات أو علامات تبويب للانتقال إلى المسافة البادئة التالية من علامة التبويب التالية عندما يكون المؤشر في بداية السطر (أي الأحرف السابقة فقط هي مسافة بيضاء).

لمزيد من التفاصيل حول أي من هذه ، راجع :help 'optionname' في vim (على سبيل المثال ، :help 'tabstop')

1436
Laurence Gonsalves

لتحديد هذا على أساس دائم للمستخدم الحالي ، قم بإنشاء (أو تحرير) ملف .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
702
Alan Haggai Alavi

أو اختصار ل vim modeline:

vim :set ts=4 sw=4 sts=4 et :
51
zen

قمت بنسخ ولصق هذا في ملفي .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 مسافات.

ليست شاملة مثل الإجابة المقبولة ، ولكنها قد تساعد الأشخاص الذين يريدون فقط نسخ شيء ولصقه.

23
Snowcrash

هناك القليل من الإعدادات التي تحدد ما إذا كنت تريد استخدام المسافات أو علامات التبويب.

لذلك ، إليك وظائف مفيدة يمكن تعريفها في ملف ~/.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 لتبديل الإعدادات.

13
kenorb

ضع الإعدادات المطلوبة في ~/.vimrc ملف - انظر أدناه للحصول على بعض الإرشادات وأفضل الممارسات.

هناك أربع طرق رئيسية لاستخدام علامات التبويب في Vim:

  1. احتفظ دائمًا بعلامة تبويب "tabstop" في 8 ، واضبط "softtabstop" و "shiftwidth" إلى 4 (أو 3 أو أي شيء تفضله) واستخدم "noexpandtab". بعد ذلك سوف يستخدم Vim مزيجًا من علامات التبويب والمسافات ، لكن الكتابة وستتصرف مثل علامة تبويب تظهر كل 4 (أو 3) أحرف.

    ملاحظة: يمكن أن يؤدي تعيين "علامة تبويب" إلى أي قيمة أخرى غير 8 إلى جعل الملف الخاص بك يبدو خاطئًا في العديد من الأماكن (على سبيل المثال ، عند طباعته).

  2. اضبط "tabstop" و "shiftwidth" على كل ما تفضله واستخدم "expandtab". بهذه الطريقة ستقوم دائمًا بإدخال مسافات. لن يتم إفساد التنسيق أبدًا عند تغيير "tabstop".

  3. اضبط "tabstop" و "shiftwidth" على كل ما تفضله واستخدم | modeline | لتعيين هذه القيم عند تحرير الملف مرة أخرى. يعمل فقط عند استخدام Vim لتحرير الملف.

  4. قم دائمًا بتعيين "tabstop" و "shiftwidth" على نفس القيمة و "noexpandtab". يجب أن يعمل هذا بعد ذلك (للمسافات الأولية فقط) لأي إعداد من علامات تبويب يستخدمه الأشخاص. قد يكون من الجيد أن يكون لديك علامات تبويب بعد إدراج أول غير فارغ كمسافات إذا قمت بذلك. وإلا فإن التعليقات المحاذاة ستكون خاطئة عند تغيير "tabstop".

مصدر:

13
ElasticThoughts

أكثر شيء واحد ، واستخدام
:retab
لتحويل tab الحالي إلى spaceshttp://vim.wikia.com/wiki/Converting_tabs_to_spaces

9
DawnSong

إضافة خط
set ts=4
في
~/.vimrc ملف لكل مستخدم
أو
/etc/vimrc ملف لنظام واسع

6
Alok Singh Mahor
5
Amarghosh