Vi හි පේළි කිහිපයක් ඉක්මණින් ඇතුල් කරන්න


2164

එය ඉතා සුළු දෙයක් විය යුතු අතර, එය උදව්වක් විය හැකිය, නමුත් එය සැරිසැරීම කරන්නේ කෙසේදැයි මට සිතාගත නොහැක. Vi හි ඉක්මණින් පේළි කිහිපයක් ඇතුල් කරන්නේ කෙසේද?

Answers:


2560

>විධානය භාවිතා කරන්න . පේළි පහක් ඇතුල් කිරීමට , 5>>. පේළි සමූහයක් සලකුණු කර එය ඇතුල් කිරීමට, Vjj>පේළි තුනක් ඇතුල් කිරීමට (Vim පමණි). කැරලි-වරහන් බ්ලොක් එකක් ඇතුල් කිරීමට, ඔබේ කර්සරය කැරලි වරහන් වලින් එකක් මත තබා භාවිතා කරන්න>% බ්ලොක් භාවිතයෙන් ඕනෑම තැනක සිට භාවිතා කරන්න >iB.

ඔබ අවට පෙළ කොටස් පිටපත් කරන්නේ නම් සහ බ්ලොක් එකක නව ස්ථානයෙහි පෙළගැස්වීමට අවශ්‍ය නම්, භාවිතා කරන්න ]p නම්, නිකම්ම වෙනුවට කරන්න p. මෙය අලවන ලද කොටස අවට පෙළ සමඟ පෙළගස්වයි.

එසේම, shiftwidthසැකසුම මඟින් ඔබට කොපමණ ඉඩ ප්‍රමාණයක් ඇතුල් කළ යුතුද යන්න පාලනය කිරීමට ඉඩ ලබා දේ.


77
මම> i} (අභ්‍යන්තර {} වාරණය ඇතුල් කරන්න) භාවිතා කරමි. Vim වලින් ක්රියා කරයි. එය vi හි ක්‍රියාත්මක වන බවට විශ්වාස නැත.
ආර්. මාටින්හෝ ෆර්නැන්ඩස්

11
මගේ ගැටළුව (gVim හි) විධානය> හිස් 2 කට වඩා වැඩි ගණනක් ඇතුල් කිරීම (මට හිස් දෙකක් පමණක් අවශ්‍ය නමුත්> හිස් 5 ක් වැනි යමක් ඇතුල් කරන්න)
කමරන් බිග්ඩෙලි

28
Am කමරාන්: එය shiftwidthවෙනස් කිරීමේ මාර්ගය බලන්න .
ග්‍රෙග් හෙව්ගිල්

4
Att මැට්ස්ටීවන්ස්: ඔබට මෙම සංසිද්ධිය පිළිබඳ දීර් discussion
ග්‍රෙග් හෙව්ගිල්

5
එක්ස්එම්එල් ගොනුවකට අලවා ඇති ටැග් කිහිපයක් සවි කිරීම වැනි මම බොහෝ විට පේළි කිහිපයක දෘශ්‍ය කොටස් ඇතුල් කරමි. සෑම අවස්ථාවකදීම දෘශ්‍ය ප්‍රකාරයේදී වාරණය නැවත තෝරා ගැනීම වෙනුවට කෙනෙකුට අවසාන දෘශ්‍ය කොටස නැවත භාවිතා කිරීමට 'gv' භාවිතා කළ හැකිය. යොමුව superuser.com/questions/220666/…
ඩේවිඩ් මෑන්

958

මෙම පිළිතුර මෙම ප්‍රශ්නයේ අනෙක් පිළිතුරු සහ අදහස් සාරාංශ කරන අතර එය Vim ප්‍රලේඛනය සහ Vim විකිය මත පදනම්ව අමතර තොරතුරු එක් කරයි . සංක්ෂිප්තභාවය සඳහා, මෙම පිළිතුර Vi සහ 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වලංගු වාරණ එබුම ආඥාවයි. මෙම විධානයන් අත්හදා බැලීමට හොඳ උදාහරණයක් සඳහා "කේත වාරණයක් ඇතුල් කරන්න" දෙස බලන්න .

එසේම, එය මතක තබා ගන්න

.    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 three 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

Ex විධාන

ඔබේ කර්සරය චලනය නොකර නිශ්චිත රේඛා පරාසයක් ඇතුල් කිරීමට අවශ්‍ය විට මේවා ප්‍රයෝජනවත් වේ.

:< 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

Vim සතුව ගොනු වර්ගය මත පදනම් වූ බුද්ධිමත් ඉන්ඩෙන්ෂන් ඇත. මෙය ඔබගේ .vimrc වෙත එක් කිරීමට උත්සාහ කරන්න:

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

යොමුව


13
මෙම පිළිතුර සහ ඊට ඉහළින් ඇති පිළිතුර යන දෙකම විශිෂ්ටයි. නමුත් මම මෙය + 1 කළේ එය අවසාන විධානය පුනරාවර්තනය කරන 'dot' ක්‍රියාකරු ගැන මට මතක් කර දුන් බැවිනි. දිගින් දිගටම එබීමෙන් තොරව මුළු බ්ලොක් මාරුවීම් ස්ථාන කිහිපයක් (හෝ ඉන්ඩෙන්ටේෂන්) ඇතුල් කිරීමට අවශ්‍ය විට මෙය අතිශයින් ප්‍රයෝජනවත් වේ >}. දිගු වේලාවක් ස්තූතියි
අමිත්

1
5 >> පේළි 5 ක් යොමු කරන්න: මෙම විධානය මඟින් පේළි 5 ක් නොව පස්වන පේළිය ඇතුල් කරයි. මෙය මගේ VIM සැකසුම් නිසා විය හැකිද, නැතහොත් ඔබේ වචන වැරදිද?
විප්කොස්න්

1
Ip විප්කොස්න් - ඒක අමුතුයි. එය අනිවාර්යයෙන්ම මා සඳහා ඊළඟ පේළි පහ ඇතුළත් කරයි, එය Vim 7.2.330 හි පරීක්ෂා කර ඇත.
ire_and_curses

8
> 42 වන පේළියට ඔබ 42 වන පේළියට ඇතුල් වන්න.
ස්ටීව්

නියම සාරාංශය! "ඇතුළත බ්ලොක් ඉන්ඩෙන්ට්" සහ "ඉන්ඩෙන්ට් ඕල් බ්ලොක්" (<i {> අ {යනාදිය) වරහන් සහ වරහන් සමඟ ද ක්‍රියා කරන බව සලකන්න:> අ (<i] යනාදිය. (මම එහි සිටින විට, <> ගේ අමතරව, ඒවා d, c, y ආදිය
සමඟද ක්‍රියා කරයි

123

විශාල තේරීමක් වනුයේ:

gg=G

එය සැබවින්ම වේගවත් වන අතර සෑම දෙයක්ම ඉන්ඩෙන්ට් වේ ;-)


1
මා සතුව XML ගොනුවක් ඇති අතර සින්ටැක්ස් ඉස්මතු කිරීම සක්‍රිය කර ඇත. ටයිප් කිරීම gg=G1 වන ස්ථානයේ සිට ආරම්භ වන සෑම පේළියක්ම තබයි. සියලු සුදු අවකාශයන් ඉවත් කර ඇත. XML සඳහා විශේෂිත යමක් තිබේද?
21:57 ට අසයි

2
මම හිතන්නේ එම විධානය set cindentක්‍රියාත්මක :set cindentකිරීමට පෙර ක්‍රියාත්මක විය යුතුයි
අමානුවෙල් නෙගා

3
මම හිතන්නේ සින්ඩෙන්ට් එක මුලින්ම සකස් කළ යුතුයි. සහ @asgs මම හිතන්නේ මෙය ක්‍රියාත්මක වන්නේ cstyle ක්‍රමලේඛන භාෂා සඳහා පමණි.
අමානුවෙල් නෙගා

110

C-indent indentation සඳහාද මෙය උත්සාහ කරන්න . කරන්න :help =වැඩි විස්තර සඳහා:

={

එමඟින් ඔබ සිටින වත්මන් කේත කොටස ස්වයංක්‍රීයව ඇතුල් කරනු ඇත.

හෝ:

==

වත්මන් රේඛාව ස්වයංක්‍රීයව ඇතුල් කිරීමට.


2
මට වැඩ කරන්නේ නැත, මගේ කර්සරය 'මම සිටින වත්මන් කේත වාරණයේ' ආරම්භක වරහනට ඉහළින් ඇති රේඛාවට දමන්න.
underscore_d

79

වැඩි දෘශ්‍ය පුද්ගලයින් සඳහා යතුරු එබීම:

  1. විධාන ප්‍රකාරය ඇතුළත් කරන්න:
    Escape

  2. ඉන්ඩෙන්ට් කිරීම සඳහා ප්‍රදේශයේ ආරම්භය වටා ගමන් කරන්න:
    hjkl

  3. වාරණයක් ආරම්භ කරන්න:
    v

  4. ඉන්ඩෙන්ට් කිරීම සඳහා ප්‍රදේශයේ අවසානය දක්වා ගමන් කරන්න:
    hjkl

  5. (අත්‍යවශ්‍ය නොවේ) ඔබට අවශ්‍ය ඉන්ඩෙන්ටේෂන් මට්ටම් ගණන ටයිප් කරන්න
    0..9

  6. බ්ලොක් එකෙහි ඉන්ඩෙන්ටේෂන් ක්‍රියාත්මක කරන්න:
    >


2
මෙය විශිෂ්ටයි, නමුත් එය ටැබ් නොව අවකාශයන් භාවිතා කරයි. මෙය නිවැරදි කිරීමට හැකි ක්‍රමයක් තිබේද?
ෂේන් ​​රිස්ටල්

12
එය ටැබ් වෙනුවට අවකාශ භාවිතා කරන්නේ නම්, එය බොහෝ විට ඔබ අවකාශ භාවිතා කිරීමට ඉන්ඩෙන්ටේෂන් සකසා ඇති නිසා විය හැකිය. =).
කෙන්ට් ෆ්‍රෙඩ්රික්

4
'Expandtab' විකල්පය අක්‍රිය වූ විට (මෙය පෙරනිමිය වේ) Vim විසින් ඉන්ඩෙන්ට් සෑදීම සඳහා හැකි තරම් <Tab> භාවිතා කරයි. (: help:>)
කෙන්ට් ෆ්‍රෙඩ්රික්

1
මා වෙනස් කර ඇති එකම ටැබ් / අවකාශය සම්බන්ධ වීම් සැකසුම: ටැබ්ස්ටොප් = 3 සකසන්න. මම භාවිතා කරන සෑම අවස්ථාවකම එය සැබවින්ම මෙය ඇතුළත් කරයි >>: "<tab> <space> <space>". බ්ලොක් එකක් ඇතුල් කිරීමත් එසේමයි. අදහස් තිබේද?
ෂේන් ​​රිස්ටල්

3
"අවකාශ එදිරිව ටැබ්" සඳහා ඔබට බැලීමට අවශ්‍ය සැකසුම් තුන වන්නේ 1. ටැබ්ස්ටොප් 2. මාරුව පළල 3. විස්තාරණය. ඔබට බොහෝ විට "shiftwidth = 5 noexpandtab" ඇත, එබැවින් "ටැබ්" යනු අවකාශ 3 ක් වන අතර, ඉන්ඩෙන්ටේෂන් මට්ටම "5" අවකාශයකි, එබැවින් එය 5 ටැබ් 1 ක් සහ අවකාශ 2 ක් සාදයි.
කෙන්ට් ෆ්‍රෙඩ්රික්

66

සියලු විධානයන්හි ප්‍රධානියා වේ
gg=G

මෙය සම්පූර්ණ ගොනුවම ඇතුල් කරයි!

Vim හෝ gVim හි රේඛා ඉක්මණින් ඇතුල් කිරීමට භාවිතා කරන සරල හා අලංකාර විධානයන් කිහිපයක් පහත දැක්වේ.

වත්මන් රේඛාව ඇතුල් කිරීමට
==

වත්මන් රේඛාවට පහළින් ඇති සියලුම රේඛා ඉන්ඩෙන්ට් කිරීම

=G

ඉන්ඩෙන්ට් කිරීමට nවත්මන් රේඛාවට පහත මාර්ග

n==

උදාහරණයක් ලෙස, වත්මන් රේඛාවට පහළින් පේළි 4 ක් ඇතුල් කිරීමට

4==

කේත වාරණයක් ඇතුල් කිරීමට, එක් වරහනකට ගොස් විධානය භාවිතා කරන්න

=%

බහු පේළි ඇතුල් කිරීමට ඇති සරලම, නමුත් බලවත් විධානයන් මේවාය.


3
මෙය සිදුවන්නේ vim, නැත vi.
rojomoke

3
මගේ සොලාරිස් හෝ AIX පෙට්ටිවල නොවේ. සමාන යතුර සැමවිටම මගේ සම්මත තාවකාලික සාර්ව පැවරුම් වලින් එකකි. ඔබට විශ්වාසද, ඔබ vimසම්බන්ධ වී ඇති දෙයක් දෙස නොබලන බව vi?
rojomoke

3
ඔව්, ලිනක්ස් හි, vi සෑම විටම පාහේ vim වෙත සබැඳියකි. Vi තුළ: ve විධානය ක්‍රියාත්මක කිරීමට උත්සාහ කරන්න.
rojomoke

4
මම මේ ආකාරයේ පිළිතුරු වලට කැමතියි: පැහැදිලි, නිරවද්‍ය හා සාරාංශගත. ඩෙබියන් ජෙසී හි මා වෙනුවෙන් වැඩ කළා. ස්තූතියි, JS ජේන්
ඩිජිටයි

1
මම vim නොව vi භාවිතා කරන බැවින්, මෙම පිළිතුර මෙහි ඇත. ස්තූතියි.
ඩෑන් නිසෙන්බෝම්

66

දැනටමත් ලබා දී ඇති සහ පිළිගත් පිළිතුරට අමතරව , සලකුණු කාරකයක් ස්ථානගත කර වත්මන් කර්සරයේ සිට සලකුණු කාරකය දක්වා සියල්ල ඇතුල් කළ හැකිය.

මේ අනුව, maඔබේ ඉන්ඩෙන්ට් බ්ලොක් එකේ මුදුන ඔබට අවශ්‍ය තැනට ඇතුළු කරන්න , ඔබට අවශ්‍ය තරම් දුරට කර්සරය පහළට ටයිප් කර ටයිප් කරන්න >'a( aඕනෑම වලංගු සලකුණු නාමයක් සඳහා " " ආදේශ කළ හැකි බව සලකන්න ). මෙය සමහර විට වඩා පහසු 5>>හෝ vjjj>වේ.


1
මෙය සැබවින්ම ප්රයෝජනවත් වේ. මේ සියල්ල සමඟ ක්‍රියා කරන්නේ කුමක් දැයි සොයා බැලීමට මට සිදුවනු ඇත. මම දන්නවා ඩී සහ ඔව්, වෙන මොනවද?
user606723

2
ඔබට පේළි කීයක් ඇතුල් කිරීමට අවශ්‍යදැයි ගණනය කිරීමේ අවශ්‍යතාවය මඟහරවා ගන්නා බැවින් මෙය ඉතා ප්‍රයෝජනවත් වේ.
සිගි

29

පා of යේ ආරම්භයට යන්න

  • vදෘශ්‍ය මාදිලිය සඳහා ඔබන්න .
  • පෙළ ඉස්මතු කිරීමට up/ downඊතලය භාවිතා කරන්න.
  • =ඔබ ඉස්මතු කළ සියලුම රේඛා ඇතුල් කිරීමට ඔබන්න .

28

ඉදිරිපත් කළ විසඳුම් මෙන්ම, වරකට ඡේදයක් කිරීමට මම කැමතියි >}


2
ඔව්, මේ නිසා මගේ ලොකු පීව් එකක් වෙනත් තැනක හිස් රේඛාවක සුදු අවකාශයක් වේ: ඒවා "ඡේදයක්" පිළිබඳ විම්ගේ අදහස අවුල් කරයි.
aqn

28

ඔබ බ්ලොක් එකක් තෝරාගෙන >ඉන්ඩෙන්ට් කිරීමට භාවිතා කරන විට, එය ඉන්ඩෙන්ට් කර සාමාන්‍ය ප්‍රකාරයට යයි. මගේ .vimrc ගොනුවේ මෙය තිබේ:

vnoremap < <gv

vnoremap > >gv

එමඟින් ඔබේ තේරීම ඔබට අවශ්‍ය තරම් කාලයක් ඇතුල් කිරීමට ඉඩ ලබා දේ.


17
තේරීම කිහිප වතාවක් ඇතුල් කිරීමට, ඔබට සරලව ඔබන්න. පෙර විධානය නැවත කිරීමට.
sundar - මොනිකා නැවත

2
ගැටලුව. මෙම තත්වය තුළ ඔබ ඔබේ ඇඟිලි චලනය කළ යුතුය. Ike මයික් විසඳුම සමඟ (මම භාවිතා කරන එකම ක්‍රමය) ඔබ දැනටමත් ඉන්ඩෙන්ට් යතුර මත ඔබේ ඇඟිලි තබා ඇති අතර මාරුවීමට හා වෙනත් දෙයක් කිරීමට වඩා ඉන්ඩෙන්ටින් තබා ගැනීමට එය දිගටම කරගෙන යා හැකිය. ඔබේ දෑත් චලනය කළ යුතු නිසා කාල පරිච්ඡේදය භාවිතා කිරීමට වැඩි කාලයක් ගත වන අතර එයට දෙවන, වෙනස්, මෙහෙයුමක් වන බැවින් වැඩි සිතුවිල්ලක් අවශ්‍ය වේ.
masukomi

21

ඔබේ කේතය ඇතුල් කිරීමට ඔබ අවකාශ 2 ක් භාවිතා කරයි යැයි සිතමු. වර්ගය:

:set shiftwidth=2
  • ටයිප් කරන්න v(දෘශ්‍ය වාරණ සංස්කරණ මාදිලියට ඇතුළු වීමට)
  • ඔබට ඇතුල් කිරීමට හෝ නොදැනුවත්ව කිරීමට අවශ්‍ය රේඛා ඉස්මතු කිරීමට කර්සරය ඊතල යතුරු සමඟ (හෝ h/ j/ k/ සමඟ l) ගෙන යන්න.

ඉන්පසු:

  • >එක් වරක් ඉන්ඩෙන්ට් කිරීමට ටයිප් කරන්න (අවකාශ 2 ක්).
  • 2>දෙවරක් ඉන්ඩෙන්ට් කිරීමට ටයිප් කරන්න (අවකාශ 4).
  • 3>ඉන්ඩෙන්ට් කිරීමට තුන් වරක් ටයිප් කරන්න (අවකාශ 6 ක්).
  • ...
  • <එක් වරක් නොදැනුවත්ව ටයිප් කරන්න (අවකාශ 2 ක්).
  • 2<නොවරදවා දෙවරක් ටයිප් කරන්න (අවකාශ 4).
  • 3<නොවරදින ලෙස තුන් වරක් ටයිප් කරන්න (අවකාශ 6).
  • ...

ඔබට අදහස ලැබෙනවා.

( හිස් රේඛා මුද්‍රණය නොකෙරේ, එය හොඳ යැයි මම සිතමි. )


බ්ලොක් ඉන්ඩෙන්ට් කිරීම සඳහා (g) vim ප්‍රලේඛනයෙන් මම පිළිතුර සොයා ගතිමි:

:help visual-block
/indent

ඔබට විධානයට ගණන් කිරීමට අවශ්‍ය නම්, ක්‍රියාකරු අක්‍ෂරය ටයිප් කිරීමට පෙර මෙය කරන්න: "v {move-around} 3>" (පේළි 3 ඉන්ඩෙන්ට්ස් දකුණට ගෙනයන්න).


18

Vim's UI හි සුන්දරත්වය නම් එහි අනුකූලතාවයි. සංස්කරණ විධාන සෑදී ඇත්තේ විධානය සහ කර්සරය ගෙනයාමෙනි. කර්සරයේ චලනයන් සැමවිටම සමාන වේ:

  • Hතිරයේ ඉහළට, Lපහළට, Mමැදට
  • nG මාර්ගය යන්න n , G, ගොනු පහළට පමණක් ggඉහළට
  • nඊළඟ සෙවුම් ගැලපුමට, Nපෙරට
  • } ඡේදයේ අවසානයට
  • % වරහන් හෝ ටැග් වර්ගය හෝ ගැලපෙන ඊළඟ වරහනට
  • enter ඊළඟ පේළියට
  • 'x සලකුණු කිරීමට x එහිදී x ලිපියක් හෝ වෙනත් වේ '.
  • වචනය ඇතුළුව wසහ තවත් බොහෝ Wදේ$රේඛා චලනයන් 0නොවන නිසා මෙහි අදාළ නොවන හෝ රේඛාවේ ඉඟි ආදිය දේ .

එබැවින්, vim භාවිතා කිරීම සඳහා ඔබ කර්සරය ගෙනයාමට ඉගෙන ගත යුතු අතර, උදාහරණයක් ලෙස, >ඉන්ඩෙන්ට් කිරීම වැනි විධානයන් මතක තබා ගත යුතුය (සහ< "යල් පැන ගිය") .

මේ අනුව, කර්සරයේ ස්ථානයේ සිට තිරයේ ඉහළට පේළි ඇතුල් කිරීම සඳහා >H , >Gගොනුව පහලට ඔබ්බවන්න කිරීමට.

ටයිප් කරනවා වෙනුවට >Hඔබ ටයිප් කරන්නේ නම්dH නම්, ඔබ cHඑය ප්‍රතිස්ථාපනය කිරීම සඳහා එකම රේඛා වාරණයක් මකා දමයි.

සමහර කර්සර චලනයන් විශේෂිත විධානයන් සමඟ වඩා හොඳින් ගැලපේ. විශේෂයෙන්, %සම්පූර්ණ HTML හෝ XML බ්ලොක් එකක් ඇතුල් කිරීමට විධානය පහසුය. ගොනුවේ සින්ටැක්ස් උද්දීපනය කර ඇත්නම් (:syn on ) පසුව කර්සරය ටැගයක පෙළෙහි සැකසීම (වැනි, <div> හි "i" හි ඇතුලත් කිරීම සහ ඇතුලත් >%කිරීම අවසන් </ div> ටැගය දක්වා ඇතුල් වේ.

Vim ක්‍රියා කරන ආකාරය මෙයයි: යමෙකුට මතක තබා ගත යුත්තේ කර්සරයේ චලනයන් සහ විධාන පමණක් වන අතර ඒවා මිශ්‍ර කරන්නේ කෙසේද යන්නයි. ඒ නිසා මේ ප්රශ්නය මගේ පිළිතුර "ඔබ එබුම කිරීමට අවශ්ය මාර්ග, වාරණ එක් කෙළවරක යන්න, පසුව ටයිප් වනු ඇත >, වාරණ අනෙක් අවසන් විධානය සහ ව්යාපාරය" නම් එබුම , රේඛා මාරු ලෙස අර්ථ ඇත =නම් එබුම ලස්සන මුද්‍රණයේ දී මෙන් අර්ථ නිරූපණය කෙරේ.


2
Vi / vim බොහෝ දුරට අනුකූල බව මම කියමි . උදාහරණයක් ලෙස, ඩී එස් සහ වයි ලෙස හැසිරෙන්නේ නැත! :)
aqn

14

මෙය කරන්න:

$vi .vimrc

මෙම පේළිය එක් කරන්න:

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

මෙය cpp ගොනුවක් සඳහා පමණි. ඔබට මෙය වෙනත් ගොනු වර්ගයක් සඳහා කළ හැකිය, එසේම ගොනු වර්ගය වෙනස් කිරීමෙන් ...


14

norm iපේළියේ ආරම්භයේ දී දී ඇති පෙළ ඇතුළු කිරීමට ඔබට විධානය භාවිතා කළ හැකිය . 2-10 පේළි වලට පෙර අවකාශ 10 ක් ඇතුළත් කිරීමට:

:2,10norm 10i 

විධානය අවසානයේ අවකාශ අක්ෂරයක් තිබිය යුතු බව මතක තබා ගන්න - මෙය අපට ඇතුළත් කිරීමට අවශ්‍ය චරිතය වනු ඇත. අපට වෙනත් ඕනෑම පෙළක් සමඟ පේළියක් ඇතුල් කළ හැකිය, නිදසුනක් ලෙස අවධාරණය කරන්නේ අක්ෂර පහක් සහිත ගොනුවක සෑම පේළියක්ම ඇතුල් කිරීමයි:

:%norm 5i_

නැතහොත් ඊටත් වඩා විසිතුරු දෙයක්:

:%norm 2i[ ]

වඩාත් ප්‍රායෝගික උදාහරණය නම් # අක්ෂර සමඟ Bash / Python / etc කේතය අදහස් දැක්වීම:

:1,20norm i#

xවෙනුවට නැවත ඇතුල් කිරීම සඳහා i. උදාහරණයක් ලෙස, සෑම පේළියකින්ම පළමු අක්ෂර 5 ඉවත් කිරීමට:

:%norm 5x

1
මෙය ගොනුවේ වම් පසින් ආරම්භ වේ ... බ්ලොක් එකේ වත්මන් පිහිටීම නොවේ
එලියෙතේෂියන්

12

මෙය භාවිතා කිරීමට ඉක්මන් ක්‍රමයක් 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

>} හෝ >{ වත්මන් පේළියේ සිට ඊළඟ ඡේදය දක්වා ඉන්ඩෙන්ට් කරන්න

<}හෝ <{එකම ඉන්ඩෙන්ට්


11

ඉන්ඩෙන්ටේෂන් සඳහා පෙළ සලකුණු කිරීමට මම කැමතියි:

  1. පෙළ රේඛාවේ ආරම්භයට ගොස් ටයිප් කරන්න ma( a'm'ark හි ලේබලය: එය ඕනෑම අකුරක් විය හැකිය)
  2. පෙළෙහි අවසන් පේළියට ගොස් ටයිප් කරන්න mz(නැවතත්, zඕනෑම අකුරක් විය හැකිය)
  3. :'a,'z>හෝ :'a,'z<ඉන්ඩෙන්ට් හෝ යල් පැන යනු ඇත (මෙය වචනයක්ද?)
  4. වොයිලා! පෙළ ගෙනයනු ලැබේ (හිස් රේඛා හිස් ඉඩක් නොමැතිව හිස්ව පවතී)

PS: ඔබට :'a,'zරේඛා, අංක, හෝ %.


10

:help left

දී ex modeඔබ භාවිතා කළ හැකිය :leftහෝ :leනිශ්චිත මුදලක් align රේඛා. විශේෂයෙන්, :leftඇත මෙම [පරාසයක] දී align රේඛා දකුණට. එය පේළි වල ඇති ඉන්ඩෙන්ට් [indent] (පෙරනිමි 0) ලෙස සකසයි.

:%le3හෝ :%le 3 හෝ :%left3හෝ :%left 3හිස් තැන් තුනක් පිරවුම විසින් සමස්ත ගොනු සන්ධානගත ඇත.

:5,7 le 3 5 සිට 7 දක්වා පේළි අවකාශ තුනක් සහිතව පෙළගස්වනු ඇත.

:le කිසිදු වටිනාකමක් නොමැතිව හෝ :le 0 0 පෑඩින් සමඟ වමට පෙළ ගැසෙනු ඇත.

මෙය Vim සහ gVim වලින් ක්‍රියා කරයි.


1
නියමයි, මා සොයන දෙය (නිශ්චිත ඉඩ ප්‍රමාණයක් ඇතුළත් කිරීමේ ක්‍රමයක් - සලකුණු කේත සඳහා අවකාශ 4 ක් - මගේ සාමාන්‍ය ඉන්ඩෙන්ට් එක අභිබවා යාමට). මගේ නඩුවේදී මට අවශ්‍ය වූයේ දෘශ්‍ය රේඛාවේ නිශ්චිත පේළි ගණනක් :'<,'>le4ඇතුළත් කිරීමටය , එබැවින් රේඛා ඉස්මතු කිරීමට මාරුව- v, පසුව අවකාශය ඇතුළු කිරීමට. ස්තූතියි!
Subfuzion

9

මට නම් මැක්විම් (දෘශ්‍ය) විසඳුම වූයේ මූසිකය සමඟ තෝරා ">" ඔබන්න, නමුත් පහත දැක්වෙන රේඛා "~ / .vimrc" තුළට දැමීමෙන් පසුව මම ටැබ් වෙනුවට අවකාශ වලට කැමතියි:

set expandtab
set tabstop=2
set shiftwidth=2

විධාන රේඛාවෙන් (Terminal.app) මැක්විම් ඇමතීමට හැකිවීමද ප්‍රයෝජනවත් වේ, එබැවින් මට පහත දැක්වෙන උපකාරක නාමාවලිය "~ / bin" ඇති බැවින් මම "මැක්විම්" නමින් පිටපතක් තබමි:

#!/usr/bin/env bash
/usr/bin/open -a /Applications/MacPorts/MacVim.app $@

ඇත්ත වශයෙන්ම "~ / .bashrc" හි:

export PATH=$PATH:$HOME/bin

මැක්පෝර්ට්ස් "~ /. ප්‍රොෆයිල්" සමඟ බොහෝ අවුල් කරයි, එබැවින් PATH පරිසර විචල්‍යය සෑහෙන කාලයක් ලබා ගත හැකිය.


9

5== වත්මන් කර්සරයේ ස්ථානයේ සිට පේළි පහක් ඇතුල් කරයි.

එබැවින් ඔබට පෙර ඕනෑම අංකයක් ටයිප් කළ හැකිය ==. එය පේළි ගණන ඉන්ඩෙන්ට් කරනු ඇත. මෙය විධාන ප්‍රකාරයේ ඇත.

gg=G සම්පූර්ණ ගොනුව ඉහළ සිට පහළට ඇතුල් කරයි.


9

අදහස් දැක්වීමේදී මා භාවිතා කරන ක්‍රමයක් මට හමු නොවීය, එබැවින් මම එය බෙදා ගන්නෙමි (මම හිතන්නේ Vim පමණි):

  1. Esc විධාන ප්‍රකාරයට ඇතුළු වීමට
  2. ඔබට ඇතුල් කිරීමට අවශ්‍ය අන්තිම පේළියේ පළමු අක්‍ෂරයට යන්න
  3. Ctrl+ Vවාරණ තේරීම ආරම්භ කිරීමට
  4. ඔබට ඇතුල් කිරීමට අවශ්‍ය පළමු පේළියේ පළමු අක්ෂරයට යන්න
  5. Shift+ Iවිශේෂ ඇතුළත් කිරීමේ මාදිලියට ඇතුළු වීමට
  6. ඔබට ඇතුල් කිරීමට අවශ්‍ය තරම් ඉඩ / ටැබ් ටයිප් කරන්න (උදාහරණයක් ලෙස දෙකක්
  7. Escසියලු පේළි වල ඔබන්න

ඔබට ඉන්ඩෙන්ටේෂන් / ටැබ් සැකසුම් වෙනස් කිරීමට vimrcහෝ සංස්කරණය කිරීමේදී එය වෙනස් කිරීමට මතක තබා ගැනීමට අවශ්‍ය නොවන විට මෙය ප්‍රයෝජනවත් වේ .

නොදැනුවත්වම මම අවකාශයන් තෝරා එය මකා දැමීමට එකම Ctrl+ Vවාරණය තෝරන්න D.


9

මේ වගේ සරල පිළිතුරක් සොයා ගැනීම එතරම් අපහසු ඇයිදැයි මම නොදනිමි ...

මෙය දැන ගැනීම සඳහා මට බොහෝ වෙහෙස මහන්සි විය. එය ඉතා සරල ය:

  • ඔබගේ .vimrcනාමාවලිය නිවාස නාමාවලිය යටතේ සංස්කරණය කරන්න .
  • මෙම පේළිය එක් කරන්න

    set cindent
    

    ඔබට නිසි ලෙස ඇතුල් කිරීමට අවශ්‍ය තැන ඔබේ ගොනුවේ.

  • සාමාන්‍ය / විධාන මාදිලියේ

    10==   (This will indent 10 lines from the current cursor location)
    gg=G   (Complete file will be properly indented)
    

8
:line_num_start,line_num_end>

උදාහරණයක් වශයෙන්,

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

තවත් ටැබ් සඳහා '>' සංකේතය වැඩි කරන්න.

උදාහරණයක් වශයෙන්,

14,21>>> for three tabs

1
මෙය නිරාකරණය කිරීම සඳහා පැහැදිලිවම ක්‍රම රාශියක් ඇත, නමුත් මෙය ක්‍රියාත්මක කිරීමට පහසුම වේ, මන්දයත් රේඛා අංක පෙරනිමියෙන් vim වලින් පෙන්වන අතර එයට ගණිතය අවශ්‍ය නොවේ.
HoldOffHunger

OldHoldOffHunger රේඛා අංක පෙරනිමියෙන් නොපෙන්වයි. :set numberරේඛා අංක ටොගල් කිරීමට ඔබ භාවිතා කළ යුතුය (ඒවා පෙරනිමියෙන් අක්‍රියයි ), නැතහොත් set numberඔබේ vimrc තුළට දමන්න.
DryLabRebel

7

පයිතන් ගොඩක් භාවිතා කරමින්, එක් වරකට වඩා වැඩි ගණනකින් බ්ලොක් මාරු කිරීමට මට නිතරම අවශ්‍ය බව මට පෙනේ. ඕනෑම වාරණ තේරීමේ ක්‍රමයක් භාවිතා කිරීමෙන් ඔබට මෙය කළ හැකිය, ඉන්පසු ඔබට පනින්නට අවශ්‍ය ඉන්ඩෙන්ට් ගණන ඇතුලත් කරන්න.>

උදාහරණයක් ලෙස, V5j3>පේළි පහක් තුන් වරක් ඇතුල් කරන්න - ඔබ ඉන්ඩෙන්ට් සඳහා අවකාශ හතරක් භාවිතා කරන්නේ නම් එය අවකාශ 12 කි.


7

සෑම පේළියක්ම ගොනු වර්ගයකට ඇතුල් කිරීමට, Escපසුව G=gg.


6

උද්දීපනය කළ කේතය vi හි අවකාශ ගණනාවකින් වහාම ඇතුල් කරන්නේ කෙසේද:

විකල්ප 1: දෘශ්‍ය බ්ලොක් ප්‍රකාරය සමඟ vi හි ඇති අවකාශයක් අවකාශ තුනකට ඇතුල් කරන්න:

  1. ඔබට ඇතුල් කිරීමට අවශ්‍ය කේත කොටස තෝරන්න. මෙය Ctrl+Vසාමාන්‍ය ප්‍රකාරයෙන් භාවිතා කර පෙළ තේරීමට පහළට ඊතලය යොදන්න. එය තෝරාගෙන ඇති අතර, :තෝරාගත් පෙළ වාරණයට විධානයක් ලබා දෙන්න.

  2. පහත දැක්වෙන්නේ විධාන රේඛාවේ ය: :'<,'>

  3. අවකාශ තුනකට ඉන්ඩෙන්ට් සැකසීමට, ටයිප් le 3කර enter ඔබන්න. පෙනෙන දේ මෙයයි::'<,'>le 3

  4. තෝරාගත් පෙළ වහාම අවකාශ තුනකට ඇතුල් කරනු ලැබේ.

විකල්ප 2: දෘශ්‍ය රේඛා මාදිලිය සමඟ vi හි ඇති අවකාශයක් අවකාශ තුනකට ඇතුල් කරන්න:

  1. ඔබගේ ගොනුව vi වලින් විවෘත කරන්න.
  2. ඔබේ කර්සරය යම් කේතයක් මත තබන්න
  3. සාමාන්‍ය මාදිලියේ සිට පහත යතුරු ඔබන්න:

    Vjjjj:le 3
    

    ඔබ කළ දේ අර්ථ නිරූපණය:

    V පෙළ තේරීම ආරම්භ කරන්න.

    jjjj පේළි හතරක් පහළට ඊතල, පේළි හතරක් ඉස්මතු කරයි.

    : උද්දීපනය කළ පෙළ සඳහා ඔබ උපදෙස් ඇතුළත් කරන බව vi ට කියයි.

    le 3 ඉන්ඩෙන්ට් උද්දීපනය කළ පෙළ පේළි තුනකි.

    තෝරාගත් කේතය ක්ෂණිකව වැඩි කිරීම හෝ අවකාශ තුනක් දක්වා අඩු කිරීම.

විකල්ප 3: ඉන්ඩෙන්ට් වැඩි කිරීමට දෘශ්‍ය බ්ලොක් ප්‍රකාරය සහ විශේෂ ඇතුළත් කිරීමේ මාදිලිය භාවිතා කරන්න:

  1. ඔබගේ ගොනුව vi වලින් විවෘත කරන්න.
  2. ඔබේ කර්සරය යම් කේතයක් මත තබන්න
  3. සාමාන්‍ය ආකාරයෙන් සිටින්න පහත යතුරු ඔබන්න:

    Ctrl+V

    jjjj
    

    (අභ්‍යවකාශ තීරුව පස් වතාවක් ඔබන්න)

    Esc Shift+i

    උද්දීපනය කළ සියලුම පෙළට අමතර අවකාශ පහක් ඇතුළත් කර ඇත.


6

මම බ්ලොක්-මාදිලියේ දෘශ්‍ය තේරීම භාවිතා කරමි:

  • චලනය කිරීමට බ්ලොක් එකේ ඉදිරිපස දෙසට යන්න (ඉහළ හෝ පහළ).
  • දෘශ්‍ය වාරණ ප්‍රකාරයට ඇතුළු වීමට Ctrl+ ඔබන්න V.
  • රේඛා ඉදිරිපිට තීරුවක් තේරීමට සැරිසැරීම.
  • ඇතුළු කිරීමේ ප්‍රකාරයට ඇතුළු වීමට I( Shift+ I) ඔබන්න .
  • සමහර අවකාශයන් ටයිප් කරන්න.
  • ඔබන්න Esc. සියලුම රේඛා වෙනස් වේ.

මෙය ඒකීය කාර්යයක් නොවේ. එය වැඩ කරනවා:

  • රේඛා මැද.
  • සියලුම රේඛාවල ඕනෑම නූලක් ඇතුළු කිරීමට.
  • තීරුවක් වෙනස් කිරීමට ( cඒ වෙනුවට භාවිතා කරන්න I).
  • යැං, මකන්න, ආදේශ කරන්න, ආදිය ...

මෙය විකාර සහගත ය, නමුත් ඔබ මූලික VIM වලින් පිටත ආකෘතිකරණය කරන්නේ නම් යා යුතු මාර්ගය මෙයයි (නිදසුනක් ලෙස, vim-prettierපෙරනිමි ඉන්ඩෙන්ටින් එන්ජිම වෙනුවට භාවිතා කිරීම). >ප්‍රෙටියර් විසින් සිදුකරන ලද හැඩතල ගැන්වීම වෙනත් ආකාරයකින් භාවිතා කරයි.
ඔලිගෝෆ්‍රන්

හාස්‍යජනකයි, මට එය කරදරකාරී දෙයක් මිස වෙන කිසිවක් නැත. මෙය ඒකීය කාර්යයක් නොවේ! මෙම ක්‍රමය ඉගෙන ගැනීමෙන් ඉන්ඩෙන්ටින් කිරීමට වඩා බොහෝ ප්‍රයෝජන ඇත.
sqqqrly

පිළිගත් පිළිතුරට වඩා එය හොඳ යැයි මට පෙනේ, සිදුවන්නේ කුමක්ද, මා තෝරා ගන්නා රේඛා සහ මා කරන ක්‍රියාව මට දැකිය හැකි අතර, යම් ආකාරයක විචක්ෂණශීලී ටයිප් කිරීමක් පමණක් නොවේ.
user4052054

5
  • කේත වාරණයක් සඳහා, {}: =+%

  • තෝරාගත් පේළියක් සඳහා: Shift+ vඉහළ / පහළ ඊතල යතුරු භාවිතා කර තෝරන්න, ඉන්පසු ඔබන්න =.

  • සම්පූර්ණ ගොනුව සඳහා: gg+ =+G

සටහන: 'gg' යන්නෙන් 1 වන පේළියට යන්න, '=' යනු ඉන්ඩෙන්ට් විධානය වන අතර 'G' කර්සරය ගොනුවේ අවසානයට ගෙන යයි .


4

සියලුම ගොනුව හතරකින් ඇතුල් කිරීමට:

esc 4G=G

3
...මොනවාද? 'අවකාශ 4 කින් ඉන්ඩෙන්ට් කරන්න'? නැත, මෙය 4 වන පේළියට පනින අතර, එතැන් සිට ගොනුවේ අවසානය දක්වා සියල්ල ඇතුල් කරයි, දැනට තෝරාගෙන ඇති ඉන්ඩෙන්ට් ප්‍රකාරය (ඇත්නම්).
underscore_d

2
  1. දෘශ්‍ය රේඛා ප්‍රකාරයට ඇතුළු වීමට "SHIFT + v" ඔබන්න.
  2. ඔබට ඇතුල් කිරීමට අවශ්‍ය පෙළ තෝරන්න නමුත් කර්සරය යතුරු හෝ "j" සහ "k" යතුරු භාවිතා කරන්න.
  3. ඇතුල් කිරීමට "SHIFT + dot" (> අක්‍ෂරය) ඔබන්න.

මුලාශ්‍රය: https://www.fir3net.com/UNIX/General/how-do-i-tab-multiple-lines-within-vi.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.