මම දන්නේ රෙජිස්ටර් භාවිතා කරන එක් අවස්ථාවක් පමණක් වන CtrlR*අතර එමඟින් මම ක්ලිප් පුවරුවකින් පෙළ අලවන්නෙමි.
ලේඛනයේ වෙනත් භාවිතයන් මොනවාද? ඒවා භාවිතා කරන්නේ කෙසේද?
VI රෙජිස්ටර් ගැන ඔබ දන්නා සෑම දෙයක්ම (vi 7.2 වෙත අවධානය යොමු කරමු) - අප සමඟ බෙදා ගන්න.
මම දන්නේ රෙජිස්ටර් භාවිතා කරන එක් අවස්ථාවක් පමණක් වන CtrlR*අතර එමඟින් මම ක්ලිප් පුවරුවකින් පෙළ අලවන්නෙමි.
ලේඛනයේ වෙනත් භාවිතයන් මොනවාද? ඒවා භාවිතා කරන්නේ කෙසේද?
VI රෙජිස්ටර් ගැන ඔබ දන්නා සෑම දෙයක්ම (vi 7.2 වෙත අවධානය යොමු කරමු) - අප සමඟ බෙදා ගන්න.
Answers:
Vim හි ඇති ලේඛකයන් ඒවා තුළ ගබඩා කර ඇති පෙළ මත ක්රියා හෝ විධාන ක්රියාත්මක කිරීමට ඉඩ දෙයි. ලේඛනයකට ප්රවේශ වීම සඳහා, ඔබ "a
විධානයකට පෙර ටයිප් කරන්න , එහිදී a
ලේඛනයේ නම. වත්මන් රේඛාව ලේඛනයට පිටපත් කිරීමට ඔබට අවශ්ය නම් k
, ඔබට ටයිප් කළ හැකිය
"kyy
නැතහොත් ඔබට විශාල අකුරක් භාවිතා කර ලේඛනයකට එකතු කළ හැකිය
"Kyy
එවිට ඔබට ලේඛනය හරහා ගමන් කර වෙනත් තැනක ඇලවිය හැකිය
"kp
ලිනක්ස් හි පද්ධති ක්ලිප්බෝඩ් එකෙන් ඇලවීමට
"+p
වින්ඩෝස් හි පද්ධති ක්ලිප්බෝඩ් එකෙන් ඇලවීම සඳහා (හෝ ලිනක්ස් හි "මූසික ඉස්මතු" ක්ලිප්බෝඩ් එකෙන්)
"*p
දැනට අර්ථ දක්වා ඇති සියලුම රෙජිස්ටර් වර්ගයට ප්රවේශ වීම
:reg
"+
පද්ධතිය අලවන්න සඳහන් කරන විශේෂ ලේඛනය වේ.
"*
; එබැවින් ගොනුවේ අවසානය දක්වා පිටපත් කිරීමේ විධානය "*yG
.
*
“මූසිකය ඉස්මතු කරන” ක්ලිප් පුවරුව වන අතර +
එය Ctrl-XCV ක්ලිප්බෝඩ් වේ.
+
)?
මම 0
ලේඛනය සොයාගත් විට සතුටු විය . ඔබ යම් ලේඛනයකට අනුයුක්ත නොකර පෙළ යැව්වොත්, එය ලේඛනයට පවරනු ලැබේ 0
, එසේම පෙරනිමි "
ලේඛනයේ සුරකිනු ඇත . අතර වෙනස 0
හා "
ලේඛන බව ඇත 0
පෙළ භාවිතා මකා සමග පෙරනිමි ලේඛනය ද ජනාකීර්ණ යනු ලබන ෙහයින් පමණක් yanked පෙළ සමග මැවෙන්නේ d
/ D
/ x
/ X
/ c
/ C
/ s
/ S
විධාන.
යම් පෙළක් පිටපත් කිරීමට, යමක් මකා දැමීමට සහ පිටපත් කළ පෙළ සමඟ එය ප්රතිස්ථාපනය කිරීමට අවශ්ය විට මට මෙය ප්රයෝජනවත් වේ. පහත පියවරයන් උදාහරණයක් විදහා දක්වයි:
y[motion]
- මෙම පෙළ සුරකින "
හා 0
ලේඛනd[motion]
- මෙම පෙළ සුරකින "
ලේඛනය"0p
"
ඊළඟ විධානය සඳහා ලේඛනයක් භාවිතා කිරීමේ විධානය කොහිද ?
අවසාන පියවරේදී, ඔබ පෙරනිමි ලේඛනයෙන් (සමග p
) ඇලවීමට නම් , එය ඔබ විසින් මකා දැමූ පෙළ භාවිතා කරනු ඇත (බොහෝ විට ඔබ අදහස් කළ දේ නොවේ).
සටහන බව p
හෝ P
පෙරනිමි ලියාපදිංචි සිට පාප්ප. ලෝන්ග්හැන්ඩ් සමාන වන්නේ ""p
(හෝ ""P
) "0
වන අතර අවසාන යන්ක් එක "1
තබා, අන්තිම මකාදැමීම හෝ වෙනස් කිරීම දරයි.
වැඩි විස්තර සඳහා බලන්න :help registers
.
p
හෝ P
පෙරනිමි ලේඛනයෙන් අලවන්න. දිගුකාලීන සමානතාව ""p
(හෝ ""P
) වනු ඇත .
"
යනු ඊළඟ විධානය සඳහා ලේඛනයක් භාවිතා කිරීමේ විධානයයි. ඒ නිසා ""p
භාවිතා කරන "
දැරීමටද විධානය සඳහා වන ලේඛනය හා "0p
භාවිතා කරන 0
ලේඛනය.
0p
එයින් අදහස් වන්නේ වත්මන් පේළියේ පළමු අක්ෂරයට ගොස් පෙරනිමි ලේඛනයේ ( "
) අන්තර්ගතයෙන් අලවන්න . "p
ලේඛනය භාවිතා කළ යුත්තේ කුමන විධානයක්ද යන්න සඳහන් කිරීමට අවශ්ය බැවින් එය අසම්පූර්ණ විධානයකි p
.
රෙජිස්ටර් පිළිබඳ මගේ ප්රියතම කොටස් වලින් එකක් වන්නේ ඒවා මැක්රෝස් ලෙස භාවිතා කිරීමයි!
ඔබ ටැබ් වලින් වෙන් කරන ලද වටිනාකම් ගොනුවක් සමඟ ගනුදෙනු කරන බව කියමු:
ID Df %Dev Lambda
1 0 0.000000 0.313682
2 1 0.023113 0.304332
3 1 0.044869 0.295261
4 1 0.065347 0.286460
5 1 0.084623 0.277922
6 1 0.102767 0.269638
7 1 0.119845 0.261601
% Dev ක්ෂේත්රය අවසානයේ (2 වන පේළියේ සිට) ප්රතිශත ලකුණක් එක් කළ යුතු බව දැන් ඔබ තීරණය කරයි. (අත්තනෝමතික ලෙස තෝරාගත්) m
ලේඛනයේ අපි සරල සාර්වයක් පහත පරිදි කරන්නෙමු :
ඔබන්න: ලේඛනය qm
යටතේ සාර්ව පටිගත කිරීම ආරම්භ කිරීමට m
.
EE
: 3 වන තීරුවේ අවසානයට යන්න.
a
: මෙම තීරුවේ අවසානයට එකතු කිරීම සඳහා මාදිලිය ඇතුළු කරන්න.
%
: අපට එකතු කිරීමට අවශ්ය ප්රතිශත ලකුණ ටයිප් කරන්න.
<ESC>
: නැවත විධාන ප්රකාරයට යන්න.
j0
: ඊළඟ පේළියේ ආරම්භයට යන්න.
q
: සාර්ව පටිගත කිරීම නවත්වන්න
අපට දැන් @m
මෙම සාර්ව වත්මන් රේඛාවේ ධාවනය කිරීමට ටයිප් කළ හැකිය . තවද, අපට @@
නැවත නැවත කිරීමට හෝ 100@m
100 වතාවක් මෙය කිරීමට ටයිප් කළ හැකිය ! ජීවිතය හොඳට පේනවා.
මෙම අවස්ථාවේදී ඔබ පැවසිය යුත්තේ, "නමුත් මෙය රෙජිස්ටාර් සමඟ ඇති සම්බන්ධය කුමක්ද?"
විශිෂ්ට කරුණ. m
ටයිප් කිරීමෙන් ලේඛනයේ අන්තර්ගතය කුමක්දැයි සොයා බලමු "mp
. එවිට අපට පහත දේ ලැබේ:
EEa%<ESC>j0
මුලදී මෙය ඔබ අහම්බෙන් නොට්පෑඩයේ ද්විමය ගොනුවක් විවෘත කළ බවක් පෙනේ, නමුත් බැලූ බැල්මට එය අපගේ සාර්වයේ අක්ෂරවල නියම අනුක්රමයයි!
ඔබ කුතුහලයෙන් පිරි පුද්ගලයෙකි, එබැවින් අපි !
සිත්ගන්නාසුලු දෙයක් කර පරණ කම්මැලි නොවී ඇතුල් කිරීමට මෙම පෙළ පේළිය සංස්කරණය කරමු %
.
EEa!<ESC>j0
ඉන්පසු අපි මෙය n
ටයිප් කිරීමෙන් ලේඛනයට ඇතුළත් කරමු B"nyE
. පසුව, පයින් ගැසීම සඳහා, අපි n
භාවිතා කරමින් අපගේ දත්ත රේඛාවක සාර්ව ධාවනය කරමු @n
....
එය එකතු කරන ලද්දේ a !
.
අත්යවශ්යයෙන්ම, සාර්ව ධාවනය කිරීම හරියට එම සාර්ව ලේඛනයේ යතුරු වල අනුක්රමය එබීම හා සමානයි. එය සිසිල් රෙජිස්ටර් උපක්රමයක් නොවේ නම්, මම මගේ තොප්පිය අනුභව කරමි.
+
වෙනුවට ඔබට භාවිතා කළ හැකිය j0
.
වෙනත් ප්රයෝජනවත් ලේඛණ:
"*
හෝ "+
- පද්ධති ක්ලිප් පුවරුවේ අන්තර්ගතය
"/
- අවසාන සෙවුම් විධානය
":
- අවසාන විධාන රේඛා විධානය.
Vim macros සමඟ සටහන් කරන්න, ඔබට ඒවා සංස්කරණය කළ හැකිය, මන්ද ඒවා සාර්ව පටිගත කිරීමේදී භාවිතා කරන යතුරු ආ ro ාත ලැයිස්තුවක් පමණි. එබැවින් ඔබට මැක්රෝ ( "ap
මැක්රෝ අ ලිවීමට භාවිතා කරමින් ) පෙළ ගොනුවකට ලිවිය හැකි අතර ඒවා සංස්කරණය කර ඒවා ලේඛනයකට පටවන්න "ay$
. ප්රයෝජනවත් මැක්රෝස් ගබඩා කිරීමේ හොඳ ක්රමයක්.
vim --version
- -clipboard
ඔබට එය නොමැති බව +clipboard
අදහස් කරයි, ඔබ අදහස් කරන්නේ එයයි.
"*
සහ "+
ඊටත් වඩා සිසිල් ය: "+
අවසන් පිටපත් ctrl+c
(පිටපත් බෆරය) සමඟ පිටපත් කිරීම හෝ ඔබ භාවිතා කරන කෙටිමඟ (හෝ right-click>copy
) අලවන්න. "*
මූසිකය (තේරීම් බෆරය) සමඟ උද්දීපනය කළ අවසන් පෙළ අලවයි. එබැවින් ඔබ යමක් පිටපත් ctrl+c
කර මූසිකය සමඟ වෙනත් දෙයක් ඉස්මතු කරන්නේ නම්, ඔබට ඇලවිය යුතු දේ තෝරා ගත හැකිය. වින්ඩෝස් හි මෙය ක්රියා නොකරයි, එහිදී මෙම රෙජිස්ටර් දෙක සමාන වේ.
"*
සහ "+
වසර සඳහා! පද්ධති ක්ලිප්බෝඩ් වලට ප්රවේශ විය හැක්කේ gvim ට පමණක් යැයි මම සිතුවෙමි, නමුත් පෙනෙන ආකාරයට සාමාන්ය vim ද එසේ කරයි!
-xterm_clipboard
මත vim --version
. ස්ථාපනය කිරීමට සරල පැකේජයක් තිබේද? (debian / apt-get). ස්තූතියි.
මෙම කළු කුහරය ලේඛනය _
යනු /dev/null
ලේඛන.
පෙරනිමි ලේඛනය යාවත්කාලීන නොකර තනි අක්ෂර මකා දැමීමට ඉඩ දීම සඳහා මම එය මගේ vimrc හි භාවිතා කරමි:
noremap x "_x
පෙරනිමි ලේඛනය යාවත්කාලීන නොකර දෘශ්ය ප්රකාරයේදී අලවන්න:
vnoremap p "_dP
x
අක්ෂර මාරු කිරීමට පහසු නොවේ.
x
සිතියම්ගත කිරීම මඟින් ඔබට xp
ඊළඟ අක්ෂරය සමඟ ධාරාව මාරු කිරීමට “විධානය” කළ නොහැක . යතුරු ලියනය නිවැරදි කිරීම සඳහා බෙහෙවින් ප්රයෝජනවත් වේ. අප විසින් මෙම Xp
පෙර චරිතය වර්තමාන මාරු කිරීමට.
ඔබට කවදා හෝ ලේඛනයේ අන්තර්ගතය හිටපු මාදිලියේ විධානයකට ඇලවීමට අවශ්ය නම්, ඔබන්න <C-r><registerletter>
.
ඔබ මෙය භාවිතා කරන්නේ ඇයි? මට සෙවීමක් කිරීමට හා දිගු නූල් වෙනුවට ආදේශ කිරීමට අවශ්ය වූ නිසා මම එය දෘශ්ය ප්රකාරයෙන් තෝරාගෙන, සෙවීම / ප්රතිස්ථාපන ප්රකාශනය ටයිප් කිරීම ආරම්භ :%s/[PASTE YANKED PHRASE]//g
කර මගේ දවසට ගියෙමි.
ඔබට එක් වචනයක් එක්ස් ප්රකාරයේදී පමණක් ඇලවීමට අවශ්ය නම්, හිටපු මාදිලියට ඇතුළු වීමට පෙර කර්සරය එහි ඇති බව තහවුරු කර ගත හැකි අතර, <C-r><C-w>
එම වචනය පේස්ට් කිරීමට හිටපු ප්රකාරයේදී පහර දෙන්න .
:
විධාන රේඛාවේ පෙළ ඇලවීම මම අද ඉගෙන ගත් හොඳම දේ
/[write out your regex]<cr>
හුදෙක් වෙනුවට පසුව s/<C-R>//replacement/
. ප්රතිස්ථාපනය ක්රියාත්මක කිරීමට පෙර ඔබේ රීජෙක්ස් පිළිබඳ සජීවී ප්රතිපෝෂණයේ වාසිය ඔබට ලැබෙනු ඇත.
මම හිතන්නේ රහස් ගුරු ලේඛනය ප්රකාශනය = ලේඛනය. එය නිර්මාණාත්මක සිතියම්කරණය සඳහා භාවිතා කළ හැකිය.
:inoremap \d The current date <c-r>=system("date")<cr>
ඉහත පරිදි ඔබේ පද්ධතිය සමඟ ඒකාබද්ධව ඔබට එය භාවිතා කළ හැකිය හෝ අභිරුචි VimL ක්රියාකාරකම් ආදියෙන් ප්රතිචාර ලබා ගත හැකිය.
හෝ වැනි තාවකාලික දේවල්
<c-r>=35+7<cr>
සිසිල් උපක්රමයක් භාවිතා කිරීමයි "1p
අන්තිම මකාදැමීම / වෙනස් කිරීම (පසුව .
නැවත මකාදැමීම නැවත නැවත ඇලවීම සඳහා භාවිතා කිරීමයි. වෙනත් වචන වලින් කිවහොත්, "1p...
මූලික වශයෙන් සමාන වේ "1p"2p"3p"4p
.
පේළි අතලොස්සක් ආපසු ඇණවුම් කිරීමට ඔබට මෙය භාවිතා කළ හැකිය:
dddddddddd"1p....
Vim ගේ උදව් පිටුවෙන්:
CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_<C-R>*
Insert the contents of a numbered or named register. Between
typing CTRL-R and the second character '"' will be displayed
<...snip...>
Special registers:
'"' the unnamed register, containing the text of
the last delete or yank
'%' the current file name
'#' the alternate file name
'*' the clipboard contents (X11: primary selection)
'+' the clipboard contents
'/' the last search pattern
':' the last command-line
'-' the last small (less than a line) delete
'.' the last inserted text
*c_CTRL-R_=*
'=' the expression register: you are prompted to
enter an expression (see |expression|)
(doesn't work at the expression prompt; some
things such as changing the buffer or current
window are not allowed to avoid side effects)
When the result is a |List| the items are used
as lines. They can have line breaks inside
too.
When the result is a Float it's automatically
converted to a String.
See |registers| about registers. {not in Vi}
<...snip...>
nmap <F2> @q
මම රෙජිස්ටර් q භාවිතා කරමි, මන්ද එෆ් 2 සඳහා මැක්රෝ එකක් නැවත ධාවනය සඳහා ඉතිරි කර ගැනීම සඳහා මම පහර දුන්නෙමි qq
. වේගවත් සාර්ව සුරැකීම සහ නැවත ධාවනය කිරීම.
මූසිකය වෙත ළඟා නොවී මගේ vim කවුළුවේ පෙළ සඳහා grep කිරීමට මම පෙරනිමි ලේඛනය භාවිතා කරමි.
:!grep "<CTRL-R>0"<CR>
සමඟ විධාන වල රෙජිස්ටර් භාවිතා කරන්න@
. උදා:
echo @a
echo @0
echo @+
ඒවා විධානයට සකසන්න:
let @a = 'abc'
දැන් "ap
අලවන්න abc
.
නොසලකා හරින ලද එක් ලේඛනයක් වන්නේ '.' අවසන් වරට ඇතුළත් කළ පෙළ අඩංගු තිත් ලේඛනය එය ඇතුළත් කළ ආකාරය කුමක් වුවත් උදා. ct] (තෙක් වෙනස් කරන්න). එවිට ඔබට එය වෙනත් තැනකට ඇතුළු කළ යුතු බව තේරෙන නමුත් තිත් පුනරාවර්තන ක්රමය භාවිතා කළ නොහැක.
:reg .
:%s/fred/<C-R>./
".
ක්ලෝබර් ඇතුළත් කිරීම් වළක්වා ගැනීමට ලේඛනය භාවිතා කිරීම ප්රයෝජනවත් බව පෙනේ.
ව්යාකූලත්වයේ විශාල ප්රභවයක් වන්නේ පෙරනිමි ලේඛනයයි "
. එය ක්රියාත්මක වන ආකාරය දැන ගැනීම වැදගත්ය. පෙරනිමි ලේඛනය බොහෝ විට මග හැරේ නම් එය වඩා හොඳය. Vim ප්රලේඛනයෙන් පැහැදිලි කිරීම:
Vim fills this register with text deleted with the "d", "c", "s", "x" commands
or copied with the yank "y" command, regardless of whether or not a specific
register was used (e.g. "xdd). This is like the unnamed register is pointing
to the last used register.
එබැවින් පෙරනිමි ලේඛනය ඇත්ත වශයෙන්ම අවසන් වරට භාවිතා කළ ලේඛනයට යොමු කිරීමකි. ඔබ යමක් මකා දැමූ විට හෝ යන්තම් කරන විට මෙම ලේඛනය වෙනත් ලේඛණ වෙත යොමු වේ. ලේඛණ පරීක්ෂා කිරීමෙන් ඔබට එය පරීක්ෂා කළ හැකිය. පෙරනිමි ලේඛනයට සමාන වෙනත් ලේඛනයක් සෑම විටම පවතී: යැං ලේඛනය ( "0
), පළමු මකාදැමීමේ ලේඛනය ( "1
), කුඩා මකාදැමීමේ ලේඛනය ("-
) හෝ මකා දැමීමට හෝ යැවීමට භාවිතා කළ වෙනත් ලේඛනයක්.
එකම ව්යතිරේකය වන්නේ කළු කුහර ලේඛනයයි. Vim doc පවසයි:
An exception is the '_' register: "_dd does not store the deleted text in any
register.
: සාමාන්යයෙන් ඔබ වඩා හොඳ සෘජුවම භාවිතා ලකුණු වේ "0
, "-
සහ "1-"9
පෙරනිමි ලේඛන හෝ නම් ලේඛන.
මගේ මිතුරා බ්රයන් මේ පිළිබඳව සවිස්තරාත්මක ලිපියක් ලිවීය. මාතෘකා භාවිතා කරන්නේ කෙසේද යන්න පිළිබඳ හොඳ හැඳින්වීමක් යැයි මම සිතමි. https://www.brianstorti.com/vim-registers/