it-swarm.asia

المسافة البادئة خطوط متعددة بسرعة في السادس

يجب أن يكون تافها ، وقد يكون حتى في المساعدة ، لكن لا يمكنني معرفة كيفية التنقل فيه. كيف يمكنني المسافة البادئة خطوط متعددة بسرعة في السادس؟

2061
Allain Lalonde

استخدم ال > أمر. إلى مسافة بادئة 5 خطوط ، 5>>. لوضع علامة على كتلة من الخطوط ووضع مسافة بادئة عليها ، Vjj> إلى مسافة بادئة 3 خطوط (vim فقط). لوضع مسافة بادئة بين قوسين مجعدين ، ضع المؤشر على أحد الأقواس المتعرجة واستخدمها >% أو من أي مكان داخل استخدام كتلة >iB.

إذا كنت تقوم بنسخ كتل نصية حولها وتحتاج إلى محاذاة المسافة البادئة للكتلة في موقعها الجديد ، فاستخدمها ]p بدلا من مجرد p. هذا محاذاة كتلة لصق مع النص المحيط.

أيضًا ، يسمح لك shiftwidth بالتحكم في عدد المسافات التي يجب وضع مسافة بادئة بها.

2442
Greg Hewgill

تلخص هذه الإجابة الإجابات والتعليقات الأخرى لهذا السؤال ، وتضيف معلومات إضافية بناءً على وثائق Vim و Vim wiki . للإيجاز ، لا تميز هذه الإجابة بين الأوامر الخاصة بـ V و Vim.

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

الأوامر العامة

>>   Indent line by shiftwidth spaces
<<   De-indent line by shiftwidth spaces
5>>  Indent 5 lines
5==  Re-indent 5 lines

>%   Increase indent of a braced or bracketed block (place cursor on brace first)
=%   Reindent a braced or bracketed block (cursor on brace)
<%   Decrease indent of a braced or bracketed block (cursor on brace)
]p   Paste text, aligning indentation with surroundings

=i{  Re-indent the 'inner block', i.e. the contents of the block
=a{  Re-indent 'a block', i.e. block and containing braces
=2a{ Re-indent '2 blocks', i.e. this block and containing block

>i{  Increase inner block indent
<i{  Decrease inner block indent

يمكنك استبدال { بـ } أو B ، على سبيل المثال =iB هو أمر مسافة بادئة كتلة صالحة. ألقِ نظرة على "Indent a Code Block" للحصول على مثال لطيف لتجربة هذه الأوامر.

أيضا ، تذكر ذلك

.    Repeat last command

، لذلك يمكن تكرار أوامر المسافة البادئة بسهولة ويسر.

إعادة وضع مسافة بادئة كاملة للملفات

يتطلب الموقف الشائع آخر المسافة البادئة التي يتم إصلاحها خلال ملف مصدر:

gg=G  Re-indent entire buffer

يمكنك توسيع هذه الفكرة لتشمل ملفات متعددة:

" Re-indent all your c source code:
:args *.c
:argdo normal gg=G
:wall

أو مخازن متعددة:

" Re-indent all open buffers:
:bufdo normal gg=G:wall

في الوضع المرئي

Vjj> Visually mark and then indent 3 lines

في وضع الإدراج

تنطبق هذه الأوامر على السطر الحالي:

CTRL-t   insert indent at start of line
CTRL-d   remove indent at start of line
0 CTRL-d remove all indentation from line

الأوامر السابقة

هذه مفيدة عندما تريد وضع مسافة بادئة لمجموعة من الخطوط ، دون تحريك المؤشر.

:< and :> Given a range, apply indentation e.g.
:4,8>   indent lines 4 to 8, inclusive

المسافة البادئة باستخدام علامات

نهج آخر هو عبر علامات :

ma     Mark top of block to indent as marker 'a'

... حرك المؤشر لإنهاء الموقع

>'a    Indent from marker 'a' to current location

المتغيرات التي تحكم المسافة البادئة

يمكنك تعيين هذه في ملفك .vimrc .

set expandtab       "Use softtabstop spaces instead of tab characters for indentation
set shiftwidth=4    "Indent by 4 spaces when using >>, <<, == etc.
set softtabstop=4   "Indent by 4 spaces when pressing <TAB>

set autoindent      "Keep indentation from previous line
set smartindent     "Automatically inserts indentation in some cases
set cindent         "Like smartindent, but stricter and more customisable

فيم لديه المسافة البادئة الذكية على أساس نوع الملف. حاول إضافة هذا إلى .vimrc الخاص بك:

if has ("autocmd")
    " File type detection. Indent based on filetype. Recommended.
    filetype plugin indent on
endif

المراجع

922
ire_and_curses

اختيار كبير سيكون:

gg=G

إنه سريع حقًا ، وكل شيء يتم وضعه في مسافة بادئة ؛-)

121
Johan

جرب هذا أيضًا لـ المسافة البادئة C المسافة البادئة ، افعل :help = لمزيد من المعلومات:

={

سيؤدي ذلك إلى وضع مسافة بادئة تلقائية في كتلة الشفرة الحالية التي تستخدمها.

أو فقط:

==

إلى المسافة البادئة التلقائي السطر الحالي.

107
svec

المطابع الرئيسية لمزيد من الأشخاص البصريين:

  1. أدخل وضع القيادة:
    Escape

  2. التحرك إلى بداية المنطقة لوضع مسافة بادئة:
    hjkl

  3. بدء كتلة:
    v

  4. التحرك إلى نهاية المنطقة لوضع مسافة بادئة:
    hjkl

  5. (اختياري) اكتب عدد مستويات المسافة البادئة التي تريدها
    0..9

  6. تنفيذ المسافة البادئة على الكتلة:
    >

77
Kent Fredric

بالإضافة إلى الإجابة المقدمة بالفعل والمقبولة ، من الممكن أيضًا وضع علامة ثم وضع مسافة بادئة لكل شيء من المؤشر الحالي إلى العلامة. وبالتالي ، أدخل ma حيث تريد أعلى كتلة المسافة البادئة الخاصة بك ، المؤشر لأسفل بقدر ما تحتاج ثم اكتب >'a (لاحظ أنه يمكن استبدال "a" بأي اسم علامة صالح). يكون هذا في بعض الأحيان أسهل من 5>> أو vjjj>.

64
Daniel Spiewak

سيد جميع الأوامر هو
gg=G

هذا المسافة البادئة الملف بأكمله!

وفي ما يلي بعض الأوامر البسيطة والأنيقة المستخدمة في وضع مسافة بادئة للخطوط بسرعة في Vim أو gVim.

المسافة البادئة السطر الحالي
==

لوضع مسافة بادئة لجميع الأسطر الموجودة أسفل السطر الحالي

=G

إلى مسافات بادئة n أسفل السطر الحالي

n==

على سبيل المثال ، لوضع مسافة بادئة 4 أسطر أسفل السطر الحالي

4==

لتوجيه مسافة بادئة من الكود ، انتقل إلى أحد الأقواس واستخدم الأمر

=%

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

62
Sagar Jain

انتقل إلى بداية النص

  • صحافة v لوضع البصرية.
  • استعمال up/down السهم لتسليط الضوء على النص.
  • صحافة = لوضع مسافة بادئة لكل الخطوط التي حددتها.
29
Michael Durrant

بالإضافة إلى الحلول المقدمة ، أود القيام بأشياء فقرة في وقت واحد مع >}

27
Paul Tomblin

عند تحديد كتلة واستخدامها > إلى المسافة البادئة ، فإنه المسافة البادئة ثم يعود إلى الوضع العادي. لدي هذا في ملفي .vimrc:

vnoremap < <gv

vnoremap > >gv

يتيح لك المسافة البادئة اختيارك العديد من الوقت كما تريد.

25
Michael Ekoka

افترض أنك تستخدم مسافتين لوضع مسافة بادئة للرمز. نوع:

:set shiftwidth=2
  • نوع v (للدخول إلى وضع تحرير الكتلة المرئية)
  • انقل المؤشر باستخدام مفاتيح الأسهم (أو باستخدام h/j/k/l) لتسليط الضوء على الخطوط التي تريد المسافة البادئة أو unindent.

ثم:

  • نوع > المسافة البادئة مرة واحدة (2 مسافات).
  • نوع 2> للمسافة البادئة مرتين (4 مسافات).
  • نوع 3> لوضع مسافة بادئة ثلاث مرات (6 مسافات).
  • ...
  • نوع < إلى unindent مرة واحدة (2 مسافات).
  • نوع 2< إلى unindent مرتين (4 مسافات).
  • نوع 3< إلى ثلاث مرات غير مقصودة (6 مسافات).
  • ...

انت وجدت الفكرة.

(الخطوط الفارغة لن تحصل على مسافة بادئة ، والتي أعتقد أنها لطيفة نوعًا ما.)


لقد وجدت الإجابة في وثائق (g) vim للكتل ذات المسافات البادئة:

:help visual-block
/indent

إذا كنت تريد إعطاء عدد للأمر ، فقم بذلك قبل كتابة حرف عامل التشغيل: "v {move-around} 3>" (حرك الأسطر 3 المسافة البادئة إلى اليمين).

21
John Sonderson

جمال vim's UI هو أنه ثابت. تتكون أوامر التحرير من الأمر وتحريك المؤشر. تحركات المؤشر هي نفسها دائماً:

  • H إلى أعلى الشاشة ، L للاسفل، M إلى الوسط
  • نG للذهاب إلى خط ن ، G وحده إلى أسفل الملف ، gg الى الاعلى
  • n للانتقال إلى مطابقة البحث التالية ، N إلى السابق
  • } إلى نهاية الفقرة
  • % إلى قوس المطابقة التالي ، إما من الأقواس أو نوع العلامة
  • enter إلى السطر التالي
  • 'x لوضع علامة x حيث x هو حرف أو آخر "
  • الكثير ، بما في ذلك w و W لكلمة $ أو  لنصائح الخط ، إلخ ، التي لا تنطبق هنا لأنها ليست سطر الحركات.

لذلك ، من أجل استخدام vim ، عليك أن تتعلم تحريك المؤشر وتذكر مجموعة من الأوامر مثل ، على سبيل المثال ، > إلى المسافة البادئة (و < إلى "عفا عليها الزمن").
وهكذا ، لوضع مسافة بادئة للخطوط من موضع المؤشر إلى أعلى الشاشة التي تقوم بها >H، >G إلى مسافة بادئة إلى أسفل الملف.

إذا ، بدلا من الكتابة >H، أنت تكتب dH ثم تقوم بحذف نفس كتلة الخطوط ، cH لاستبدالها ، الخ.

تتناسب بعض حركات المؤشر بشكل أفضل مع أوامر محددة. على وجه الخصوص ، و % الأمر مفيد لوضع مسافة بادئة على كتلة HTML أو XML بأكملها.
إذا تم تمييز بناء الجملة في الملف (:syn on) ، فقم بتعيين المؤشر في نص العلامة (مثل ، في "i" من <div> والدخول >% سيتم وضع مسافة بادئة حتى علامة الإغلاق </div>.

هذه هي الطريقة التي يعمل بها vim: يجب على المرء أن يتذكر فقط حركات المؤشر والأوامر ، وكيفية مزجها.
لذا فإن إجابتي على هذا السؤال ستكون "انتقل إلى نهاية واحدة من كتلة الأسطر التي تريدها ، ثم اكتب > أمر وحركة إلى الطرف الآخر من الكتلة "إذا المسافة البادئة يتم تفسيرها على أنها تحول الخطوط ، = إذا المسافة البادئة يتم تفسيرها كما في الطباعة الجميلة.

18
Juan Lanus

افعل هذا

$vi .vimrc

وأضف هذا الخط

autocmd FileType cpp setlocal expandtab shiftwidth=4 softtabstop=4 cindent

هذا فقط لملف cpp يمكنك القيام بذلك لنوع ملف آخر أيضًا فقط عن طريق تعديل نوع الملف ...

14
pankaj ukumar

هناك طريقة سريعة للقيام بذلك باستخدام VISUAL MODE تستخدم نفس العملية كتعليق كتلة من التعليمات البرمجية.

يعد هذا مفيدًا إذا كنت تفضل عدم تغيير shiftwidth أو استخدام أي set وتوجيهات مرنة بما يكفي للعمل مع TABS أو SPACES أو أي حرف آخر.

  1. ضع المؤشر في البداية على الكتلة
  2. v للتبديل إلى -- VISUAL MODE --
  3. حدد النص المراد وضعه في مسافة بادئة
  4. اكتب : للتبديل إلى الموجه
  5. استبدال بـ 3 مسافات بادئة:

    :'<,'>s/^/ /g

  6. أو استبدال علامات التبويب الأولى:

    :'<,'>s/^/\t/g

  7. شرح موجز:

    '<,'> - ضمن النطاق المحدد بصريا

    s/^/ /g - أدخل 3 مسافات في بداية كل سطر ضمن النطاق بالكامل

    (أو)

    s/^/\t/g - أدخل Tab في بداية كل سطر ضمن النطاق بأكمله

12
Eric Kigathi

>} أو >{ المسافة البادئة من السطر الحالي حتى الفقرة التالية

<} أو <{ un-indent

11
jash

هناك طريقة أخرى لم يتم ذكرها بعد - يمكنك استخدام الأمر norm i لإدراج نص معين في بداية السطر. لإدراج 10 مسافات قبل الأسطر 2-10:

:2,10norm 10i 

تذكر أنه يجب أن يكون هناك حرف مسافة في نهاية الأمر - سيكون هذا هو الحرف الذي نريد إدراجه. يمكننا أيضًا وضع مسافة بادئة للسطر مع أي نص آخر ، على سبيل المثال لوضع مسافة بادئة لكل سطر في الملف مع 5 أحرف تسطير أسفل السطر:

:%norm 5i_

أو شيء أكثر نزوة:

:%norm 2i[ ]

مثال عملي أكثر هو تعليق Bash/Python/etc code مع # character:

:1,20norm i#

لإعادة استخدام المسافة البادئة x بدلا من i. على سبيل المثال لإزالة أول 5 أحرف من كل سطر:

:%norm 5x
11
Nykakin

أحب وضع علامة على نص المسافة البادئة:

  1. انتقل إلى بداية سطر النص ثم اكتب ma (a هي التسمية من 'm'ark: يمكن أن تكون أي حرف)
  2. انتقل إلى نهاية السطر من النص واكتب mz (مرة أخرى z يمكن أن يكون أي حرف)
  3. : 'a،' z> أو: 'a،' z <will indent or outent (هل هذه كلمة؟)
  4. فويلا! تم نقل النص (الخطوط الفارغة تبقى خالية مع عدم وجود مسافات)

PS: يمكنك استخدام: "a ،" z تقنية لتحديد نطاق لأي عملية (d ، y ، s /// ، إلخ) حيث يمكنك استخدام خطوط أو أرقام أو٪

11
SteveO

لم أجد طريقة أستخدمها في التعليقات ، لذا سأشاركها (أعتقد أن vim فقط):

  1. Esc للدخول في وضع القيادة
  2. انتقل إلى الحرف الأول من السطر الأخير الذي تريد تعريفه
  3. ctrl-v لبدء كتلة حدد
  4. انتقل إلى الحرف الأول من السطر الأول الذي تريد تعريفه
  5. shift-i للدخول في وضع إدراج خاص
  6. اكتب أكبر عدد ممكن من spases/tabs كما تحتاج إلى وضع مسافة بادئة (2 على سبيل المثال
  7. صحافة Esc وستظهر مسافات في جميع الخطوط

هذا مفيد عندما لا تريد تغيير إعدادات الهوية/علامة التبويب في vimrc أو تذكرها لتغييرها أثناء التحرير.

ل unindent يمكنني استخدام نفسه ctrl-v كتلة حدد لتحديد المسافات وحذفها مع d.

9
NickSoft

سوف 5== المسافة البادئة 5 أسطر من موضع المؤشر الحالي. حتى تتمكن من كتابة أي رقم قبل == ، فسيؤدي ذلك إلى وضع مسافة بادئة لعدد الخطوط. هذا في وضع القيادة.

سوف gg=G المسافة البادئة ملف كامل من أعلى إلى أسفل.

9
rohitkadam19

بالنسبة لي ، كان حل MacVim (مرئي) هو ، حدد بالماوس واضغط على ">" ، ولكن بعد وضع الأسطر التالية في "~/.vimrc" لأنني أحب المسافات بدلاً من علامات التبويب:

set expandtab
set tabstop=2
set shiftwidth=2

من المفيد أيضًا أن تكون قادرًا على الاتصال بـ MacVim من سطر الأوامر (Terminal.app) ، لذلك نظرًا لوجود دليل المساعد التالي "~/bin" ، حيث أقوم بوضع برنامج نصي يسمى "macvim":

#!/usr/bin/env bash
/usr/bin/open -a /Applications/MacPorts/MacVim.app [email protected]

وبالطبع في "~/.bashrc":

export PATH=$PATH:$HOME/bin

عبث Macports مع "~/.profile" الكثير ، لذلك يمكن متغير البيئة PATH الحصول على فترة طويلة جدا.

9
mda

لا أعرف لماذا من الصعب جدًا العثور على إجابة بسيطة مثل هذه ...

أنا نفسي اضطررت إلى الكفاح كثيرًا لمعرفة هذا الأمر بسيط للغاية

قم بتعديل ملف .vimrc ضمن الدليل الرئيسي أضف هذا السطر

set cindent

في ملفك حيث تريد المسافة البادئة بشكل صحيح

في الوضع الطبيعي/وضع القيادة

10==   (this will indent 10 lines from the current cursor location )
gg=G   (complete file will be properly indented)
9
Kamlesh Karwande

:help left

في ex mode ، يمكنك استخدام :left أو :le لمحاذاة الخطوط بمبلغ محدد. على وجه التحديد ، :left will محاذاة إلى اليسار في خطوط [النطاق]. يقوم بتعيين المسافة البادئة في الأسطر إلى [المسافة البادئة] (الافتراضي 0).

ستقوم :%le3 أو :%le 3 أو :%left3 أو :%left 3 بمحاذاة الملف بأكمله من خلال الحشو بثلاثة مسافات.

ستقوم :5,7 le 3 بمحاذاة الخطوط من 5 إلى 7 عن طريق حشوها بمسافات 3.

:le بدون أي قيمة أو :le 0 ستترك محاذاتها مع حشوة 0.

هذا يعمل في vim و gvim.

9
zundarz

باستخدام Python كثيرًا ، أجد نفسي في حاجة ماسة إلى تبديل الكتل بأكثر من مسافة بادئة واحدة. يمكنك القيام بذلك عن طريق استخدام أي من طرق تحديد الكتلة ، ثم أدخل فقط عدد المسافات البادئة التي ترغب في الانتقال إليها مباشرة قبل >

على سبيل المثال. سوف V5j3> المسافة البادئة 5 خطوط 3 مرات - وهو 12 مسافات إذا كنت تستخدم 4 مسافات للمسافات البادئة

7
John La Rooy

لوضع مسافة بادئة لكل سطر في نوع ملف ، esc ثم ز = ز

7
kapil
:line_num_start,line_num_end>

مثلا.

14,21> shifts line number 14 to 21 to one tab

قم بزيادة الرمز ">" لمزيد من علامات التبويب

مثلا.

14,21>>> for 3 tabs
7
Abhishesh Sharma

كيفية وضع مسافة بادئة للرمز المميز في السادس فورًا بعدد من المسافات:

الخيار 1: المسافة البادئة كتلة من التعليمات البرمجية في السادس إلى ثلاثة مسافات مع وضع Visual Block:

  1. حدد كتلة التعليمات البرمجية التي تريد المسافة البادئة. هل هذا باستخدام Ctrl+V في الوضع العادي والسهم لأسفل لتحديد النص. أثناء تحديده ، أدخل : لإعطاء أمر إلى كتلة النص المحدد.

  2. سيظهر التالي في سطر الأوامر: :'<,'>

  3. لتعيين المسافة البادئة على 3 مسافات ، اكتب le 3 واضغط على إدخال. هذا ما يظهر: :'<,'>le 3

  4. يتم تحديد المسافة البادئة للنص المحدد مباشرة إلى 3 مسافات.

الخيار 2: المسافة البادئة كتلة من التعليمات البرمجية في السادس إلى ثلاثة مسافات مع وضع خط Visual:

  1. افتح الملف الخاص بك في السادس.
  2. ضع المؤشر فوق بعض الأكواد
  3. كن في الوضع الطبيعي اضغط على المفاتيح التالية:

    Vjjjj:le 3
    

    تفسير ما فعلته:

    V يعني البدء في تحديد النص.

    jjjj أسهم أسفل 4 خطوط ، تسليط الضوء على 4 خطوط.

    يخبر : السادس أنك ستدخل تعليمة للنص المميز.

    le 3 تعني المسافة البادئة للسطر 3 خطوط النص.

    تتم زيادة الكود المحدد على الفور أو إنقاصه إلى ثلاثة مسافات بادئة.

الخيار 3: استخدام وضع Visual Block ووضع الإدراج الخاص لزيادة المسافة البادئة:

  1. افتح الملف الخاص بك في السادس.
  2. ضع المؤشر فوق بعض الأكواد
  3. كن في الوضع الطبيعي اضغط على المفاتيح التالية:

    Ctrl+V

    jjjj
    

    (اضغط مفتاح المسافة 5 مرات)

    EscShift+i

    المسافة البادئة للنص المظلل 5 مسافات إضافية.

6
Eric Leschinski

يمكنني استخدام التحديد المرئي لوضع الكتلة:

  • انتقل إلى مقدمة الكتلة للتحرك (في الأعلى أو أسفل).
  • اضغط على ctrl-v للدخول إلى وضع الكتلة المرئية.
  • انتقل لتحديد عمود أمام الخطوط.
  • اضغط على I (shift i) للدخول في وضع الإدراج.
  • اكتب بعض المساحات.
  • اضغط ESC. جميع الخطوط سوف تحول.

هذه ليست توني أحادي. إنها تعمل:

  • في منتصف الخطوط.
  • لإدراج أي سلسلة على جميع الخطوط.
  • لتغيير عمود (استخدم c بدلاً من I).
  • يانك ، حذف ، بديل ، الخ ...
4
sqqqrly

لوضع مسافة بادئة لكل الملفات بمقدار 4:

esc 4G=G
4
Michael
  • لحظر الكود {}: = + %

  • للخط المحدد: Shift + v حدد استخدام مفتاح سهم لأعلى/لأسفل ثم اضغط =.

  • للملف بأكمله: gg + = + G

ملاحظة: 'gg' تعني الانتقال إلى السطر 1 ، '=' هو أمر المسافة البادئة ، و 'G' ينقل المؤشر إلى نهاية الملف.

2
Kulamani

افترض أن | يمثل موضع المؤشر في Vim. إذا كان النص الذي سيتم وضعه في مسافة بادئة محاطًا بكتلة التعليمات البرمجية مثل:

int main() {
line1
line2|
line3
}

يمكنك القيام بـ >i{ مما يعني " المسافة البادئة (>) داخل كتلة (i) ({) " واحصل على:

int main() {
    line1
    line2|
    line3
}

لنفترض الآن أن الخطوط متجاورة ولكن خارج كتلة ، مثل:

do
line2|
line3
line4
done

لوضع مسافة بادئة للسطر 2 إلى 4 ، يمكنك تحديد الخطوط بصريًا واكتب >. أو حتى أسرع يمكنك القيام >2j للحصول على:

do
    line2|
    line3
    line4
done

لاحظ أن >Nj تعني المسافة البادئة من السطر الحالي إلى N الأسطر أدناه. إذا كان عدد الخطوط المراد وضعها في مسافة بادئة كبيرًا ، فقد يستغرق المستخدم بضع ثوانٍ لحساب القيمة المناسبة لـ N. لحفظ ثواني ثمينة ، يمكنك تنشيط خيار العدد النسبي مع set relativenumber (متاح منذ إصدار Vim 7.3).

0
Sergio