පෙළ vim බවට ඇලවීමේදී ස්වයංක්‍රීය ඉන්ඩෙන්ට් අක්‍රිය කිරීම


1203

මම Vim ඉගෙන ගැනීමට උත්සාහ කරමි.

ක්ලිප්බෝඩ් එකෙන් මගේ ලේඛනයට කේතය ඇලවූ විට, සෑම නව පේළියක්ම ආරම්භයේදී මට අමතර ඉඩක් ලැබේ:

line
  line
    line

ඔබට ස්වයංක්‍රීය ඉන්ඩෙන්ට් එක අක්‍රිය කළ හැකි බව මම දනිමි, නමුත් මට වෙනත් සැකසුම් පරස්පර හෝ වෙනත් යමක් ඇති නිසා මට එය ක්‍රියාත්මක කළ නොහැක (ඒවා මගේ .vimrc හි පැහැදිලිව පෙනේ, නමුත් මම ඒවා පිටතට ගන්නා විට එය වැදගත් නොවන බව පෙනේ).

මම කේතය අලවන විට ස්වයංක්‍රීය ඉන්ඩෙන්ටින් අක්‍රිය කරන්නේ කෙසේද? මෙන්න මගේ .vimrcගොනුව:

set expandtab  
set tabstop=2  
set shiftwidth=2  
set autoindent  
set smartindent  
set bg=dark  
set nowrap  

4
FWIW , vim 8.0.210 වරහන් සහිත පේස්ට් සඳහා ස්වදේශීය සහාය එක් කරයි, එබැවින් එය අලවන ලද පෙළ ඇතුල් කිරීමෙන් වළක්වනු ඇත.
sh1

නව ලිපිගොනු සඳහා vim's paste / nopaste සමඟ නොගැලපීම වළක්වා ගැනීම සඳහා ඔබට Entercat > mynewfile.txt යතුර ඔබන්න , ඔබේ පෙළ අලවන්න, නැවත Enter ඔබන්න , ඉන්පසු සුරැකීමට Ctr + D කරන්න. ගොනුව දැන් නිර්මාණය කර ඇති අතර ඔබට එය සංස්කරණය කළ හැකිය vim mynewfile.txt.
ccpizza

Answers:


2106

යාවත්කාලීන කිරීම: වඩා හොඳ පිළිතුර මෙතැන: https://stackoverflow.com/a/38258720/62202

ඔබ කේතය අලවන විට ස්වයංක්‍රීයව ක්‍රියා විරහිත කිරීම සඳහා විශේෂ “පේස්ට්” මාදිලියක් ඇත.

වර්ගය

:set paste

ඉන්පසු ඔබේ කේතය අලවන්න. මෙවලම් තීරුවේ ඇති පෙළ දැන් පවසන බව සලකන්න -- INSERT (paste) --.

ඔබ ඔබේ කේතය ඇලවූ පසු, පේස්ට් ප්‍රකාරය ක්‍රියා විරහිත කරන්න, එවිට ඔබ ටයිප් කරන විට ස්වයංක්‍රීයව ඇතුල් කිරීම නැවත නිවැරදිව ක්‍රියා කරයි.

:set nopaste

කෙසේ වෙතත්, මම සෑම විටම එය අවුල් සහගත විය. පෙළ සංස්කරණය කරන<F3> අතරතුර පේස්ට් සහ නොපේස්ට් මාතයන් අතර මාරු විය හැකි පරිදි මා සිතියම් ගත කරන්නේ එබැවිනි ! මම මෙය එකතු කරමි.vimrc

set pastetoggle=<F3>

38
මෙය :set noaiඅනුගමනය කිරීමට වඩා පහසු නැත :set ai. යෝජනාව :r! catකෙටි වේ.
ලියෝප්ඩ්

71
මම හිතන්නේ set pasteපහසුයි, අනිවාර්යයෙන්ම. එය වඩා ඍජු ඉල්ලීම් වඩා noaiහෝ noautoindent"noai" ටයිප් කරන විට වඩාත් වැදගත් වන අතර, "paste" ඔබ ස්පර්ශ typist ලෙස භාෂා ගණනක ප්රවීණතාවය ඇති තරම් විට කාලය එම නොවැදගත් ප්රමාණය ගැන ගන්න.
වික්ටර් සාමනියන්

52
:set noaiOP අනුව අනෙක් ඉන්ඩෙන්ට් සම්බන්ධ සැකසුම් වින්‍යාස කර ඇති ආකාරය මත පදනම්ව සෑම විටම ක්‍රියා නොකරයි. :set pasteඑකවර සැකසුම් කිහිපයක් සඳහා කෙටිමං ලෙස පෙනේ.
මාර්ක්හූ

13
සාදයට ප්‍රමාද වූ නමුත් set copyindentඔබ වෙනුවෙන් මෙය බාධාවකින් තොරව බලා ගනු ඇත.
මැට් රයන්

33
:set pasteවරහන් සම්පුර්ණ කිරීම වැනි වෙනත් අංග ද අක්‍රීය කරයි, එය කේතය ඇලවීමේදී අවශ්‍ය නොවේ.
මැනුවෙල් ෆෝක්ස්

263

අලවන අතරතුර අනවශ්‍ය බලපෑම් වළක්වා ගැනීම සඳහා, සැකසිය යුතු විකල්පයක් ඇත:

set paste

ඔබේ .vimrc හි ඇති ප්‍රයෝජනවත් විධානයක් set pastetoggle=<F10>හෝ වෙනත් බොත්තමක් නම්, පේස්ට් සහ නෝපේස්ට් අතර පහසුවෙන් ටොගල් කිරීම.


13
අවසාන! මම දිගටම ටයිප් කළා: පේස්ට් සකසන්න /: නොපේස්ට් සකසන්න, කෙතරම් මෝඩද! ස්තූතියි.
imwilsonxu

4
ප්‍රායෝගික දෘෂ්ටි කෝණයකින්, ඔබගේ පිළිතුර පිළිගත් පිළිතුරට වඩා ප්‍රයෝජනවත් වේ
ලිනොබ්

8
තවත් විකල්පයක් නම් ඔබේ vimrc වෙත සාර්ව එකතු කිරීමයි:nmap <silent> <leader>p :set paste<CR>"*p:set nopaste<CR>
ක්‍රිස්

හොඳ යෝජනාවක් h ක්‍රිස් - ඉන්ඩෙන්ටේෂන් ගැටළු නොමැතිව ඇලවීම සඳහා තනි යතුරු අනුක්‍රමය!
රිච්වෙල්

මට කවදාවත් පේස්ට් ප්‍රකාරයේ සිටීමට අවශ්‍ය නැතිනම් කුමක් කළ යුතුද? ස්ථිරවම අක්‍රීය කිරීමට ක්‍රමයක් තිබේද?
මැක්ස්වෙල්

134

මම සාමාන්‍යයෙන් භාවිතා කරමි :r! cat සහ පේස්ට් ( shift + insert )අන්තර්ගතය, සහ CTRL+D.

සෘජු භාවිතය සක්‍රිය හා අක්‍රීය කිරීමට අවශ්‍ය නැත.


මම මෙම සෘජු භාවිත විකල්පයට කැමතියි. මම තවමත් වෙබ් පිටුවල vim syntax කියවීමට ඉගෙන ගන්නවා. ඔබේ පියවරවල තේරුම කුමක්ද? විශේෂයෙන්, පද්ධති ක්ලිප්බෝඩ් එකේ මා සතුව යමක් ඇතැයි සිතමු, එය ලේඛනයකට ඇලවීමට මා එබිය යුත්තේ කුමක් ද?
jvriesem

9
ඇයි සහ කෙසේද :r! catක්‍රියා කරන්නේ කෙසේද යන්න පිළිබඳ තොරතුරු සමඟ මෙම පිළිතුර වඩාත් ප්‍රයෝජනවත් වනු ඇත .
කේ අර්ලන්ඩ්සන්

11
EKErlandsson, ගොනුවක :rඅන්තර්ගතය වත්මන් ලේඛනයට ඇතුළත් කරයි. !catකියනුයේ, අවශ්‍යයෙන්ම stdin (* nix shells) විවෘත කරන බළලෙකු ධාවනය කරන්න, (shift + insert)නැතහොත් සමහර පර්යන්ත සඳහා, දකුණු මූසික ක්ලික් කිරීම මඟින් ක්ලිප්බෝඩ් එකේ අන්තර්ගතය පර්යන්තයට ඇලවීම CTRL+Dඅවසන් ගොනුව වන බැවින් එය :r !catසැසිය වසා දමයි .
ඩැනියෙල්

මෙය 'සෘජු' ද? pasteමේ සඳහා පමණක් සාදන ලද විකල්පයක් සැකසීමට වඩා ? vjvriesem මෙය 'direct ජු' විකල්පයක් නොවේ, එම වචනය පිළිබඳ ඔබේ අවබෝධය මා සිතන දේ නිවැරදි නම්.
0xc0de

ඔබ ද භාවිතා කළ හැකිය :r! catපසුව CTRL+SHIFT+Vපර්යන්තය (එවකට දී ඇලවීම CTRL+D).
පෝල් රූජියුක්ස්

87

ඔබ දේශීයව වැඩ කරන්නේ නම්, ඔබට ප්‍රධාන අනුක්‍රමය සමඟ පද්ධති ක්ලිප්බෝඩ් එකෙන් ඇලවිය හැකිය:

"+p

මෙය නිසි vim විධානයකි, එබැවින් ඇතුළු කිරීමේ මාදිලියකට ඇතුළු වීම හෝ ස්වයංක්‍රීයව ක්‍රියා විරහිත කිරීම ගැන කරදර විය යුතු නැත.

ඇත්ත වශයෙන්ම ඔබ දුරස්ථව වැඩ කරන්නේ නම් (උදාහරණයක් ලෙස SSH හරහා කොන්සෝලය) එවිට මෙය ක්‍රියා නොකරනු ඇති අතර ඔබ යා යුත්තේ :set noai, ඇතුළු කිරීමේ මාදිලිය, කොන්සෝලය තුළට ඇලවීම, :set aiවෙනත් තැනක විස්තර කර ඇති පරිදි ඇතුළු කිරීමේ මාදිලිය, මාර්ගය තැබීම ය .


10
මම මේ පිළිතුර ලියන්නේ අවුරුදු ගණනාවකට පෙරය. අද කාලයේ මා භාවිතා :set pasteසහ :set nopasteඒ වෙනුවට තව දුරටත් වුවත්, එය මතක තබා ගැනීමට පහසු වන අතර මම සෑම අවස්ථාවකදීම එය බැලීමට නැති නිසා!
thomasrutter

6
සමහර කාවැද්දූ පද්ධතිවල (ප්‍රධාන වශයෙන් කාර්යබහුල පෙට්ටිය මත පදනම්ව) :set pasteක්‍රියාත්මක නොවන බැවින් :set noaiඒ වෙනුවට භාවිතා කළ යුතුය.
jcarballo

ඔබට පිටපත් කිරීමට විශාල පෙළක් ඇති විට, ඒ වෙනුවට + ලේඛනය භාවිතා කිරීම වේගවත් නොවේද?
pedromanoel

1
දේශීයව වැඩ කිරීමේදී පමණක් ක්‍රියාත්මක වන @pedromanoel. එය SSH හරහා vim වෙත ප්‍රවේශ වීම ක්‍රියා නොකරනු ඇත, නිදසුනක් ලෙස, ඔබ දේශීයව යමක් පිටපත් කර ඔබේ SSH සැසිය තුළ ඇති vim තුළට ඇලවීමට අවශ්‍ය නම්.
thomasrutter

1
@thomasrutter නමුත් මම මෙය සිතියම් ගත කළා <leader>p.. ඉතා ප්‍රයෝජනවත්!
ඩේන්

55

පේස්ට් මාදිලිය සමඟ සැකසීම paste/nopaste/pastetoggleඉතා හොඳ වුවත්, ඇලවීමට පෙර පේස්ට් ප්‍රකාරය අතින් සක්‍රීය කළ යුතු අතර ඇලවීමෙන් පසු පේස්ට් ප්‍රකාරය අක්‍රීය කරන්න. මම කම්මැලි පුද්ගලයා වීම, මම මෙතෙක් සොයාගෙන ඇති හොඳම විසඳුම පහත දැක්වේ, ඔබ පේස්ට් කරන විට පේස්ට් ප්‍රකාරය ස්වයංක්‍රීයව ටොගල් කරයි.

ඔබ ඇලවූ විට Vim ගේ පේස්ට් ප්‍රකාරය ස්වයංක්‍රීයව සැකසීමට / සැකසීමට ටර්මිනලයේ වරහන් සහිත පේස්ට් ප්‍රකාරය භාවිතා කරන කුඩා උපක්‍රමයක් මෙන්න. ඔබගේ .vimrc හි පහත සඳහන් දෑ තබන්න:

let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"

inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()

function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction

දැන් ඔබට පේස්ට් ප්‍රකාරය සක්‍රිය / අක්‍රිය නොකර පේස්ට් කළ හැකිය - එය ඔබ වෙනුවෙන් ස්වයංක්‍රීයව හසුරුවනු ලැබේ.

මුලාශ්‍රය: කෝඩර්වෝල්

සටහන: මෙම විසඳුම WSL (ලිනක්ස් සඳහා වින්ඩෝස් 10 උප පද්ධතිය) තුළ ක්‍රියා නොකරයි. WSL සඳහා යමෙකුට විසඳුමක් තිබේ නම්, කරුණාකර මෙම පිළිතුර යාවත්කාලීන කරන්න හෝ අදහස් දැක්වීම් වලට එක් කරන්න.

Tmux tmux භාවිතා කරන්නේ නම්, ප්‍රකාශයන් දෙවරක් ගැලවිය යුතුය. මේ සඳහා කේතය කෝඩර්වෝල් හි ද ඇත


මෙය දීප්තිමත් ය. එක් දෙයක් වුවද ... සෑම පේස්ට් එකකම සෑම පේස්ට් එකකම ආරම්භයේදීම මට "0" (ශුන්‍ය) අක්ෂරයක් ලැබේ. ඒ සඳහා කිසියම් තොරතුරක් තිබේද?
ජුලියස්.

සටහන් භාවිතා කරන්නේ නම් දී tmux ඔබ ද්විත්ව පලා කිරීමට අවශ්ය නම් එය. මේ සඳහා කේතය පිළිතුරේ කෝඩර්වෝල් සබැඳියේ ඇත
ඩේතා

3
ඔබ වඩාත් කම්මැලි නම් සහ ඉහත කේතය ඔබේ .vimrc වෙත පිටපත් කරන්නේ නම්, XTermPasteBegin () ශ්‍රිතයේ ඉන්ඩෙන්ටේෂන් ගැන සැලකිලිමත් වන්න.
k1133

මම මේ ක්රියා කරන අයුරු කුතුහලයක් ඇති විය, ඒ නිසා මම අල්ලු අලවන්න සහ සොයා සොයා ගියා gitlab.com/gnachman/iterm2/-/wikis/Paste-Bracketing බව පැහැදිලි කරන t_SIහා t_EIවිචල්යයන් අල්ලු හා එය අක්රිය paste හැකියාව ඇත. පේස්ට් වරහන ක්‍රියාත්මක වන විට, අලවන ලද පෙළ උපසර්ගයෙන් esc[200~පසුව අනුගමනය කරනු ලැබේ esc[201~.
PatS

37

මැක් පරිශීලකයින්ට පේස්ට්බෝඩ් එකෙන් කෙලින්ම කියවීමෙන් ස්වයංක්‍රීය හැඩතල ගැන්වීම වළක්වා ගත හැකිය:

:r !pbpaste

3
මෙය පුදුමාකාර ප්‍රතිචාරයකි. කෙසේ වෙතත්, මම මෙය කරන විට, එය ලේඛනය සඟවයි (මම නැවත විධාන රේඛාවට පැමිණ ඇති බව පෙනේ), නමුත් පෙළ මගේ ක්ලිප්බෝඩ් එකේ ඇත. එය එන්ටර් එබීමට මා පොළඹවයි, එබැවින් මම එසේ කරමි, එය කිසිදු වෙනසක් නොමැතිව මගේ ලේඛනයට ආපසු යවයි. සිදු වූයේ කුමක්ද, ඔබ කියන දේ මම කරන්නේ කෙසේද?
jvriesem

ඔබ යතුරු ලියනය කරන්නේ නම් :.!pbpaste, මෙය ක්‍රියාත්මක වන්නේ වත්මන් රේඛාව පේස්ට් බෆරයේ ප්‍රතිදානය සමඟ ප්‍රතිස්ථාපනය කිරීමෙනි. පොදුවේ ගත් කල, ඔබගේ වර්තමාන ගොනුවේ ඇති දත්ත වෙනත් වැඩසටහනකට නල මාර්ගගත කිරීමට සහ විධානයෙහි ප්‍රතිදානය සමඟ පෙළ ප්‍රතිස්ථාපනය කිරීමට vim ඔබට ඉඩ දෙයි. එබැවින් :1,3!pbpasteඔබේ ගොනුවේ පළමු පේළි තුන පේස්ට් බෆරය සමඟ ප්‍රතිස්ථාපනය කරයි. මම භාවිතා :.!ppjsonකරන්නේ ඉතා දිගු (ආකෘතිගත නොකළ JSON නූලක්) ගෙන එය සංයුති කර දිගු නූල් වෙනුවට ආකෘතිකරණයට සමාන ය. ppjson යනු ධාවනය වන bash පිටපතක් පමණි python -m json.tool.
PatS

19

පේස්ට් ප්‍රකාරය ස්වයංක්‍රීයව සක්‍රිය කර නැවත ක්‍රියා විරහිත කිරීම සඳහා පේස්ට් සිදුවීම නැවත සකස් කරන්නේ කෙසේදැයි හදුනාගත් අයෙකුගේ සටහනක් මෙන්න . MacOSX හි tmux / iTerm හි මා වෙනුවෙන් වැඩ කරයි.


1
ඔත්තුවට ස්තූතියි. පුද්ගලයා සමාන ක්‍රියාකාරිත්වයක් ඇති ප්ලගිනයක් ද මම සොයා ගතිමි - stackoverflow.com/a/36512548/255961 .
studgeek

මගේ ක්ලිප්බෝඩ් එකෙන් පෙළක් ඇතුළත් කළ විට මෙය 'ඊඊඊ' නූලකට හේතු වන බව පෙනේ.
ජෝන් ජියැන්ග්

16

මෙය ඔබගේ වෙත එක් කරන්න ~/.vimrc, ඔබට ඇලවීමට පෙර සහ පසු F2 එබිය යුතුය :

set pastetoggle=<F2>

12

මම set clipboard=unnamedමගේ .vimrc එකට දැම්මා. එමඟින් සුපුරුදු පේස්ට් බෆර් සිතියම X හි ක්ලිප්බෝඩ් එකට කරයි.

එබැවින්, මම ටර්මිනලයක යම් පෙළක් සලකුණු කළහොත්, එය සරලව pඇලවීම සඳහා එබිය හැකිය. ඒ හා සමානව, මට දේවල් විචක්ෂණශීලීව කළ හැකිය (උදාYY වත්මන් රේඛාව බෆරයට සම්බන්ධ කිරීම) සහ ඕනෑම කවුළුවක මැද ක්ලික් කිරීමෙන් එය ඇලවිය හැකිය.

ඩන්නෝ. මට එය ඉතා පහසුයි.


IMHO, මෙය හොඳම පිළිතුරයි, F11 සමඟ ටොගල් කිරීම අවශ්‍ය නොවේ (එය පෙරනිමියෙන් වින්‍යාසගත කර ඇත). මෙය මැක්ස් ඕඑස්එක්ස් පද්ධතියේ ක්‍රියාත්මක වේ, අනෙක් ඒවා ගැන මම නොදනිමි.
ලයිට්මන්

9

පර්යන්තයක් තුළ වැඩ කරන විට vim-bracketed-paste vim ප්ලගිනය කිරීමට පෙර හෝ පසුව යතුරු එබීම් අවශ්‍ය නොවී ස්වයංක්‍රීයව හසුරුවනු ඇත.

ITerm2, gnome-terminal, සහ libvte භාවිතා කරන වෙනත් පර්යන්ත වැනි “නවීන” x- කාලීන අනුකූල පර්යන්ත මගින් යවන ගැලවීමේ අනුක්‍රමයක් වන වරහන් සහිත පේස්ට් ප්‍රකාරය හඳුනා ගැනීමෙන් එය ක්‍රියාත්මක වේ. අමතර ප්‍රසාද දීමනාවක් ලෙස එය tmux සැසි සඳහාද ක්‍රියා කරයි. මම එය මැක්හි iTerm2 සමඟ ලිනක්ස් සේවාදායකයකට සම්බන්ධ කර tmux භාවිතා කරමි.


එය තවදුරටත් සටහන් කරන දෙයින් පරිස්සම් වන්න: අවාසනාවකට, මෙයින් අදහස් කරන්නේ ඔබ පර්යන්තයට අලවන ඕනෑම දෙයක නව රේඛාවක් තිබේ නම් ඒවා ආදාන බෆරයේ අන්තර්ගතය ද ක්‍රියාත්මක කරන බවයි.
0xc0de

1
X 0xc0de, එම උපුටා ගැනීම මෙහි අදාළ නොවේ. ඒක ගැන කතා කරන්නේ ෂෙල් එය කරන්නේ විට කරන්නේ නැහැ වරහන් පාප්ප ක්රමය සඳහා පහසුකම් සපයා ඇත. වරහන් සහිත පේස්ට් මාදිලියේ කාරණය එයයි - එය සිදුවීම වැළැක්වීමට.
sh1

අනෙක් විසඳුම් වලට වඩා මෙය මට වඩා හොඳ විය. ස්තූතියි.
jjj

8

මෙය ඔබගේ ~ / .vimrc හි තබා සතුටින් සිටින්න:

" enables :Paste to just do what you want
command Paste execute 'set noai | insert | set ai'

සංස්කරණය කරන්න: පරාවර්තනය මත, :r !catඑය වඩා කෙටි ප්‍රවේශයක් වන අතර එය කෙටි, අර්ථකථන සහ අභිරුචි vimrc අවශ්‍ය නොවේ. ඒ වෙනුවට එය භාවිතා කරන්න!


5

නමුත් :pastetoggleහෝ :pasteහා :nopasteවැඩ කළ යුතු දඩ (ක්රියාත්මක නම් - අපි සාකච්ඡා සිට දැක ගැනීමට හැකි වන ලෙස ඔවුන් හැම විටම නොවේ) මම ඉතා recomment ඇලවීම සෘජු ප්රවේශය භාවිතා "+pහෝ "*pහා සමග කියවීම "+rහෝ"*r :

විම් (ලේඛන දස වර්ග acess ඇත :help registers) සහ මෙම ප්රශ්න කළ උනන්දු වන quotestarහා quoteplusකොටසේ

  1. තෝරා ගැනීම සහ පහත ලේඛන "*, "+සහ "~

GUI සඳහා තෝරාගත් පෙළ ගබඩා කිරීම සහ ලබා ගැනීම සඳහා මෙම ලේඛණ භාවිතා කරන්න. බලන්න quotestarසහquoteplus . ක්ලිප්බෝඩ් නොමැති විට හෝ ක්‍රියා නොකරන විට, ඒ වෙනුවට නම් නොකළ ලේඛනය භාවිතා වේ. යුනික්ස් පද්ධති සඳහා ක්ලිප්බෝඩ් ලබා ගත හැක්කේ + xterm_clipboard විශේෂාංගය ඇති විට පමණි. Vi Vi හි නොමැත}

X11 පද්ධති සඳහා "* සහ" + අතර වෙනසක් පමණක් ඇති බව සලකන්න.

:help x11-selection*සහ +: හි වෙනස තවදුරටත් පැහැදිලි කරයි .

                                                  quoteplus quote+

ලේඛනගත X වරණයන් තුනක් ඇත: PRIMARY (එය වර්තමාන දෘශ්‍ය තේරීම නියෝජනය කරයි - Vim's Visual mode හි මෙන්), SECONDARY (එය වැරදි ලෙස අර්ථ දක්වා ඇත) සහ CLIPBOARD (කැපීම, පිටපත් කිරීම සහ ඇලවීම සඳහා භාවිතා කිරීමට අපේක්ෂා කෙරේ. ).

මෙම තිදෙනාගෙන්, "* ලේඛනය කියවීමේදී හා ලිවීමේදී VIM PRIMARY භාවිතා කරයි (එබැවින් X11 තේරීම් ලබා ගත හැකි විට, Vim" ස්වයංක්‍රීය තේරීම් "වල 'ක්ලිප්බෝඩ්' සඳහා පෙරනිමි අගයක් නියම කරයි), සහ" + ලේඛනය කියවීමේදී හා ලිවීමේදී CLIPBOARD. විම් දෙවන තේරීමට ප්‍රවේශ නොවේ.

උදාහරණ: (පෙරනිමි විකල්ප අගයන් උපකල්පනය කරමින්)

  • Vim හි දෘශ්‍ය ප්‍රකාරයේදී URL එකක් තෝරන්න. ඔබගේ බ්‍රව්සරයට ගොස් URL පෙළ ක්ෂේත්‍රයේ මැද මූසික බොත්තම ක්ලික් කරන්න. තෝරාගත් පෙළ ඇතුළත් කරනු ඇත (බලාපොරොත්තු සහගතව!). සටහන: ෆයර්ෆොක්ස් හි ඔබට midmouse.contentLoadURL මනාපය සත්‍ය: about: config ලෙස සැකසිය හැකිය, එවිට කවුළුවේ බොහෝ ස්ථානවල මැද මූසික බොත්තම එබීමේදී තෝරාගත් URL භාවිතා වේ.

  • මූසිකය සමඟ ඇදගෙන ඔබගේ බ්‍රව්සරයේ යම් පෙළක් තෝරන්න. Vim වෙත ගොස් මැද මූසික බොත්තම ඔබන්න: තෝරාගත් පෙළ ඇතුළත් කර ඇත.

  • Vim හි සමහර පෙළ තෝරන්න සහ "+ y කරන්න. ඔබේ බ්‍රව්සරයට ගොස්, මූසිකය සමඟ ඇදගෙන පෙළ පිටියක යම් පෙළක් තෝරන්න. දැන් දකුණු මූසික බොත්තම භාවිතා කර උත්පතන මෙනුවෙන්" අලවන්න "තෝරන්න. තෝරාගත් පෙළ නැවත ලියනු ලැබේ දෘශ්‍ය තේරීමක් සිදු කිරීමේදී "+ ලේඛනයේ ඇති පෙළ තවමත් පවතින බව සලකන්න. එමඟින් වෙනත් පෙළ" * ලේඛනයේ ලබා ගත හැකිය. එමඟින් තෝරාගත් පෙළ නැවත ලිවීමට ඉඩ සලසයි.

අදහසක් විය හැකි පරිදි මැද ක්ලික් කිරීම vim භාවිතා කිරීම අවුල් සහගත බවක් නොපෙනේ
Fuseteam

4

මෙය මට වැඩ කරයි (+ ලේඛනය සඳහා වන නඩුව, අප භාවිතා කරන්නේ අප්පේ අතර හුවමාරු බෆරය වැනි):

imap <silent> <S-Insert> <C-O>:set noai<CR><C-R>+<C-O>:set ai<CR>

2

ඔබ මැක් එකක සිටී නම්, පේස්ට් ටොගල් නොකර මැක්විම් එය හොඳින් හසුරුවයි.

brew install macvim --override-system-vim


OP හි නියමයන් ඔබේ .vimrcගොනුවට ඇතුළත් කරන්නේ නම් එය එසේ ද ?
ඩ්‍රූ නොක්ස්

1

කරුණාකර මෙම ලිපිය කියවන්න: කේත පේස්ට් සඳහා ස්වයංක්‍රීයව ඇතුල් කිරීම ටොගල කරන්න

ඔබගේ පහත දැක්වෙන විකල්පය මඟින් තත්ව රේඛාවේ පෙන්වා ඇති දෘශ්‍ය ප්‍රතිපෝෂණයට සමහර අය කැමතියි vimrc:

nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
set showmode

1

මම ඉක්මනින් කිරීමට ගැන දන්නවා ඇති වේගවත්ම ක්රමය ඇලවීම-ඇතුලත් කරන්න යන්න එක් වෙඩි පාප්ප සඳහා මාදිලිය tpope ගේ වේ unimpaired ලක්ෂණ වන, yoහා yO, "ඔබ විවෘත" සඳහා අනුමාන mnemonics. ඒවා ලේඛනගත කර ඇත්තේ ඔහුගේ විම්ඩොක්හි පමණි,

'පේස්ට්' සඳහා ටොගලයක් සපයා නැත, මන්දයත් හුදකලා ඇතුළත් කිරීමක් ඔතා ගැනීමේ සාමාන්‍ය භාවිත අවස්ථාව ඉතා නාස්ති වන බැවිනි: ඔබ දෙවරක් ටොගල් කළත් ඔබ එක් වරක් පමණක් අලවන්න (යොපෝ). ඒ වෙනුවට, දැනටමත් සකසා ඇති 'පේස්ට්' සමඟ o හෝ O ආයාචනා කිරීමට yo හෝ yO ඔබන්න. ඇතුළු කිරීමේ ප්‍රකාරයෙන් ඉවත්වීම ස්වයංක්‍රීයව 'නොපේස්ට්' සකසයි.



1

මම මේ දක්වා නොදුටු තවත් පිළිතුරක්:

:se paste noai

1

ස්වදේශීය පේස්ට් / වරහන් සහිත පේස්ට් යනු vim 8(2016 දී නිකුත් කරන ලද) සිට හොඳම හා සරලම ක්‍රමයයි . එය ssh ට වඩා වැඩ කරයි! (වරහන් සහිත පේස්ට් ලිනක්ස් සහ මැක් මත ක්‍රියා කරයි, නමුත් වින්ඩෝස් ගිට් බෑෂ් නොවේ)

  1. ඔබට vim 8+ ඇති බවට වග බලා ගන්න (ඔබට අවශ්‍ය +clipboardහෝ +xterm_clipboardවිකල්ප අවශ්‍ය නොවේ ).

    vim --version | head -1

  2. සාමාන්‍ය ප්‍රකාරයේදී OS ස්වදේශීය පේස්ට් විධානය භාවිතා කරන්න (උදා. ctrl+shift+Vහෝ cmd+V). iඇතුළු කිරීමේ ප්‍රකාරය සඳහා ඔබන්න එපා .


පරීක්ෂණය

  1. මෙහි ප්‍රතිදානය (ටැබ් ඉන්ඩෙන්ට් එකක් සහිත පේළි 2) පද්ධති ක්ලිප් පුවරුවට පිටපත් කරන්න ( ctrl+shift+Cහෝ cmd+C):

    echo -e '\ta\n\tb'

  2. ස්වයංක්‍රීයව භාවිතයෙන් පිරිසිදු vim 8+ දියත් කරන්න:

    vim -u NONE --noplugin -c 'set autoindent'

  3. පද්ධති ප්‍රස්ථාරයෙන් ( ctrl+shift+Vහෝ cmd+V) සාමාන්‍ය ප්‍රකාරයෙන් අලවන්න . iඇතුළු කිරීමේ ප්‍රකාරය සඳහා ඔබන්න එපා . මෙම aසහb තනි ටැබ් එබුම සමග අනුගත විය යුතුය. දුරස්ථ යන්ත්‍රයකට ssh-ing කරන අතරතුර ඔබට මෙය කළ හැකිය (දුරස්ථ යන්ත්‍රයට vim 8+ අවශ්‍ය වේ).

  4. දැන් පැරණි ක්‍රමය උත්සාහ කරන්න, එය දෙවන ටැබ් එක අතිරේක ටැබ් එකකින් ස්වයංක්‍රීයව සකසනු ඇත: iඇතුළු කිරීමේ ප්‍රකාරය සඳහා ඔබන්න . ඉන්පසු ctrl+shift+Vහෝ අලවන්න cmd+V. මෙම aසහ bදැන් නොපිහිටි ඇත.


Vim 8 ස්ථාපනය කිරීම


1
හොඳම හා සරලම ක්‍රමය! එසේම, ගූගල් විසින් Featured snippetමගේ සෙවුම සඳහා 'ටැබ් අන්තර්ගතය අලවන්න' යනුවෙන් යෝජනා කර ඇත , සමහර විට මම 'ටැබ්' මූල පදය භාවිතා කර ඇති අතර, මෙම පිළිතුරෙහි පමණක් සඳහන් කර ඇත :)
ඩේවිඩ්

1

ඇලවීම සඳහා තවත් ක්‍රමයක් වන්නේ <C-r>ලේඛනයේ අන්තර්ගතය අතහැර දැමීමයි (මෙහි ගෝලීය ලේඛනය). බලන්න: :h i_ctrl-rසහh i_CTRL-R_CTRL-O .

Vim උදව් ප්‍රලේඛනයෙන්:

ලේඛනයේ අන්තර්ගතය වචනාර්ථයෙන් ඇතුළු කරන්න සහ ස්වයංක්‍රීයව ඇතුල් නොකරන්න. මූසිකය සමඟ ඇලවීම හා සමානයි. අක්ෂර ආදේශ නොකරයි! එම '.' ලේඛනය (අවසන් වරට ඇතුළත් කළ පෙළ) තවමත් ටයිප් කළ පරිදි ඇතුළත් කර ඇත. Vi Vi හි නොවේ}

එබැවින් ස්වයංක්‍රීය ඉන්ඩෙන්ට් නොමැතිව අන්තර්ගතය වයිම් එකට ඇලවීමට භාවිතා කරන්න <C-r><C-o>* සඳහා බොහෝ යුනික්ස් පද්ධතිවල භාවිතා කරන්න.

ඔබට ඔබේ vimrc හි සිතියමක් එක් කළ හැකි අතර එමඟින් ස්වයංක්‍රීයව ඇතුලත් කිරීමකින් තොරව ලේඛනයේ inoremap <C-r> <C-r><C-o>අන්තර්ගතය *සාමාන්‍යයෙන් අලවන්න.<C-r>* .

සටහන: මෙය ක්‍රියාත්මක වන්නේ vim සමඟ සම්පාදනය කර ඇත්නම් පමණි clipboard.


0

කනගාටුවට කරුණක් නම්, iTerm2 3.0.15 සමඟ වැඩ නොකිරීමට සඳහන් කර ඇති vim ප්ලගිනය (සාධාරණ ලෙස කිවහොත් මෙය පැරණි අනුවාදයන් මත කැඩී ඇත්දැයි මම නොදනිමි) - නමුත් ඒ වෙනුවට මට මෙම කඩුල්ල හමු විය.

පේස්ට් කිරීමට iTerm2 vim යතුරු භාවිතා කිරීමට command-p සිතියම් කරන්න. නිසැකවම මෙය ක්‍රියාත්මක වන්නේ iTerm2 සඳහා පමණි.

එය ක්‍රියාත්මක වන ආකාරය. පැනීමේ මාදිලියට ඇතුළු වීමට මම "jk" භාවිතා කරමි, එවිට ඔබටද අවශ්‍ය වනු ඇත:

: inoremap jk

ඔබේ .vimrc හි.

එවිට එය පේස්ට් ප්‍රකාරයට ඇතුල් වන ලෙස P ට ආයාචනා කරයි, "+ p ක්ලිප්බෝඩ් එකෙන් ඇලවීමට සහ පසුව පේස්ට් ප්‍රකාරය අක්‍රීය කිරීමට පී."

රූප විස්තරය මෙහි ඇතුළත් කරන්න


1
ඉන්න, මොකක්, ඔබ මේ සඳහා 'jk' භාවිතා කරනවාද?
0xc0de

ඔව්, මට එය සඳහන් කිරීමට අමතක විය. ඔබගේ .vimrc වෙත ": inoremap jk <esc>" එක් කරන්න. ලෙස ඇයි මම JK භාවිතා කරන්න, ඇපල් අහන්න සහ ඇයි ඔවුන් ගමන් කිරීමේ අවශ්යතාවයක් වූ හා භෞතික පලා ප්රධාන මිදෙන්නට. 8 (
නීල් මැක්ගිල්

BTW එයට යම් පුහුණුවක් අවශ්‍ය නමුත් ටික වේලාවකට පසු jk වේගවත් බවක් දැනෙන අතර මම සිතන්නේ එය දැන් පැන යාමට වඩා වැඩි කැමැත්තක් දක්වන බවයි ... කෙසේ වෙතත් iTerm2 <ESC> මෙහි ද පිළිගන්නේ දැයි දැන ගැනීම සිත්ගන්නා සුළු වනු ඇත.
නීල් මැක්ගිල්

ඇපල් යන්න මාර්ගය!
0xc0de

0

මම සමහර විට Vim වෙත පිටපත් කර අලවන පයිතන් පරිශීලකයෙක්මි. (මම මැක් සිට වින්ඩෝස් ඩබ්ලිව්එස්එල් වෙත මාරු වීමි) මෙය මට කරදර කළ එක් අඩුපාඩුවක් විය.

ඔබ ස්පර්ශ නම් script.pyහා පසුවvi script.py , Vi එය Python කේත රචනය හඳුනාගෙන ප්රයෝජනවත්, autoindent විය උත්සාහ කරනු ඇත, එය ඔබ Python කේත රචනය කියන්න එපා නම් මෙය සිදු වන්නේ නැත ආදිය, අමතර එබුම් සමග paste කරන්න.

කෙසේ වෙතත්, එය දැනටමත් ඔබට සිදුවන්නේ නම්, ඔබ දැනටමත් සම්පුර්ණයෙන්ම ඇතුලත් කර ඇති කේතය අලවන විට පෙරනිමි ස්වයංක්‍රීයව බියකරු සිහිනයක් විය හැකිය (පහත නැඹුරු ඉණිමඟ හැඩය බලන්න).

මම විකල්ප තුනක් උත්සාහ කළ අතර මෙහි ප්‍රති .ල ඇත

set paste        # works perfect 
set noai         # still introduced extra whitespace
set noautoindent # still introduced extra whitespace

රූප විස්තරය මෙහි ඇතුළත් කරන්න රූප විස්තරය මෙහි ඇතුළත් කරන්න

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.