බැක්ස්පේස් යතුර ඇතුළු කිරීමේ ප්‍රකාරයේදී ක්‍රියා නොකරන්නේ ඇයි?


170

backspaceයතුර සමඟ ඇතුළු කිරීමේ මාදිලියේ අක්ෂර මකා දැමීමට උත්සාහ කිරීම සමහර විට ක්‍රියාත්මක නොවන බව පෙනේ. මට backspace සමහර විට හැකිය , නමුත් වෙනත් අවස්ථාවලදී එය කිසිවක් නොකරයි; කර්සරය වමට නොයන අතර කිසිවක් සිදු නොවන බව පෙනේ.

වින්ඩෝස් හි gVim භාවිතා කිරීම මම දුටුවෙමි. මෙම backspaceකෙසේ වෙතත් බොහෝ ලිනක්ස් පද්ධති වල පර්යන්තය විම් භාවිතා කරන අතරතුර බලාපොරොත්තු වූ පරිදි කටයුතු පෙනේ.

  1. මෙය සිදුවන්නේ ඇයි?
  2. කොහොමද මට කළ හැක්කේ, backspaceසුපුරුදු පරිදි ප්රධාන delete චරිත?
  3. මෙම හැසිරීම අංගයක් ලෙස අදහස් කරනවාද? වෙනත් වචන වලින් කිවහොත්: backspaceඇතුළත් කිරීමේ මාදිලියේ අක්ෂර මකා දැමීමට වඩා හොඳ විකල්ප තිබේද?

2
පහත දැක්වෙන පිළිතුර ඔබේ ගැටලුව නිවැරදිව විසඳන අතර, ඊතල යතුරු හෝ බැක්ස්පේස් වැනි යතුරු අක්‍රීය කිරීමෙන් ඔබට වඩාත් නිවැරදිව දේවල් කිරීමට පුරුදු වී ඇති බව මට පෙනී ගියේය. බැක්ස්පේස් වයිම් සමඟ සිදු කර ඇත X(සහ මකාදැමීම x), නමුත් බොහෝ විට ඔබට සැබවින්ම කිරීමට අවශ්‍ය වූයේ dbනිදසුනක් ලෙස වචනයේ ආරම්භය තෙක් මකා දැමීම හෝ dawසම්පූර්ණ වචනය මකා දැමීම යනාදියයි. ඔබට බැක්ස්පේස් තිබේ නම්, මෙය භාවිතා කිරීමේ අවදානම අවශ්‍ය ප්‍රමාණයට වඩා වැඩි අවස්ථාවන්හිදී උප ප්‍රශස්ත යතුර.
ෂාබාස්

6
Ha ෂාබාස් මම එකඟ නොවෙමි: ඇතුළු කිරීමේ ප්‍රකාරයේදී බැක්ස්පේස් යතුර භාවිතයෙන් සුළු නිවැරදි කිරීම් කිරීමට හැකි වීම අර්ථවත් කරයි. සාමාන්‍ය මාදිලියේ විධාන භාවිතා කරන්නේ කෙසේදැයි යමෙකු ඉගෙන ගත යුතු බව මම එකඟ වෙමි, නමුත් සුළු නිවැරදි කිරීම් සඳහා ඇතුළත් කිරීමේ ප්‍රකාරයේදී බැක්ස්පේස් භාවිතා කිරීම නුසුදුසු ය.
කාල් යන්ග්වේ ලර්වාග්

4
@ CarlYngveLervåg, බැක්ස්පේස් සම්බන්ධයෙන් මම එකඟ වෙමි (ඇත්ත වශයෙන්ම එය මා විසින්ම අක්‍රීය කර නොමැත). කෙසේ වෙතත්, පේළියේ ආරම්භය සමඟ නිදසුනක් ලෙස ක්‍රියා නොකරන, නමුත් රේඛාව තුළ ක්‍රියාත්මක වන බැක්ස්පේස් හි පෙරනිමි හැසිරීම OP සතුව ඇති බව පෙනේ. තවමත්, OP ට බැක්ස්පේස් වලට වඩා හොඳ විකල්ප තිබේ. නිදසුනක් ලෙස, පෙර පේළියට පිටුපසට යාම වෙනුවට, Jසුදු අවකාශයන් ගැන සැලකිලිමත් වන කෙනෙකුට භාවිතා කළ හැකිය . කෙටියෙන් කිවහොත්, ලිවීමේදී ඉක්මන් යතුරු ලියනය නිවැරදි කිරීම සඳහා බැක්ස්පේස් කදිම ය, නමුත් ඊට අමතරව වඩා හොඳ විකල්ප තිබේ.
ෂාබාස්

1
බොහෝ මිනිසුන්ගේ ගැටලුව වන්නේ එක් එක් අංගය සමඟ එකඟ නොවීමක් නොව ඔවුන් භාවිතා කරන එකම සංස්කාරකය එය නොවන බවයි. ඔවුන් බහු සංස්කාරකවරුන් භාවිතා කරන බැවින්, බැක්ස්පේස් හා සම්බන්ධ පරාමිතීන් මාරු කිරීම ප්‍රති-බුද්ධිමත් වන අතර එමඟින් ඔවුන් වඩාත් සුදුසු අංගයන්ගේ උප කුලකයක් කැමති වේ.
j riv

1
ඔබ vim-faq ස්ථාපනය කර ඇත්නම් , ඔබට එහි නොබැඳි පිළිතුරක් ලබා ගත හැකිය: :h vim-faqසහ සෙවීම /backspace. ටැගය කටපාඩම් කිරීම දුෂ්කර ය :h faq-12.26.
හොට්ෂ්කේ

Answers:


210

tl; dr: වෙනත් බොහෝ වැඩසටහන් වලදී මෙන් පසුබිම වැඩ කිරීමට මෙය ඔබගේ vimrc වෙත එක් කරන්න:

set backspace=indent,eol,start

දිගු පිළිතුර

පෙරනිමි හැසිරීම පුදුමයට කරුණක් වුවද, පසුපස අවකාශය “ක්‍රියා නොකිරීම” අංගයක් ලෙස සැලකිය හැකිය ; එය අහම්බෙන් ඉන්ඩෙන්ටේෂන් ඉවත් කිරීමෙන් සහ වත්මන් රේඛාවට සහ / හෝ ඇතුළු කිරීමේ ආරම්භයට සීමා කිරීමෙන් ඕනෑවට වඩා පෙළ ඉවත් කිරීමෙන් වළක්වා ගත හැකිය.

:help 'backspace' අපට කියයි:

Influences the working of `<BS>`, `<Del>`, `CTRL-W` and `CTRL-U` in Insert
mode.  This is a list of items, separated by commas.  Each item allows
a way to backspace over something:

value     effect
indent    allow backspacing over autoindent
eol       allow backspacing over line breaks (join lines)
start     allow backspacing over the start of insert; CTRL-W and CTRL-U
          stop once at the start of insert.

ඉතින් මෙම අගයන් හරියටම අදහස් කරන්නේ කුමක්ද?

indent
Vim බොහෝ ගොනු වර්ග සඳහා ස්වයංක්‍රීය ඉන්ඩෙන්ටේෂන් එක් කරයි; පෙරනිමියෙන්, ඔබට මේ පිළිබඳව පසුපසට යාමට අවසර නැත ; 'ස්වයංක්‍රීයකරණය' ලෙස සැලකෙන නීති තරමක් සියුම් ය, උදාහරණයක් ලෙස, අපි මෙය ටයිප් කරන්නේ නම් (මෙහි කර්සරය වේ):

if :; then
    █

බැක්ස්පේසිං ක්‍රියා නොකරයි.

නමුත් අපි නම් විධාන එකතු නම් බව සහ fi, දක්වා ආපසු යන්න, අපි කරන මේ එබුම ඉවත් කිරීමට අවසර:

if :; then
    █:
fi

මෙයට හේතුව, පළමු උදාහරණයේ දී, ඔබ Enter එබූ විට එය 1 මට්ටමේ ඉන්ඩෙන්ටේෂන් එකක් එකතු කළ යුතු බව Vim තීරණය කළේය; නමුත් දෙවන උදාහරණයේ දී, විම් කිසිවක් ස්වයංක්‍රීයව නොකළේය, එය ටැබ් අක්ෂර හෝ අවකාශ කිහිපයක් පමණි.

එසේම බලන්න :help 'autoindent'

eol
මෙය වඩාත් පැහැදිලිව පෙනිය යුතුය, Backspace එබීමෙන් EOL සලකුණු ( \nහෝ \r\n) ඉවත් කරයි ; අක්‍රීය කර ඇත්නම්, ඔබ ඊඕඑල් සලකුණක් මකා දැමීමට උත්සාහ කළහොත් බැක්ස්පේස් කිසිවක් නොකරනු ඇත.

ආරම්භය
මෙයින් අදහස් කරන්නේ ඔබට ඇතුළත් කළ හැකි මාදිලිය ආරම්භ කළ දින සිට ඔබ ඇතුළු කළ පෙළ පමණක් මකා දැමිය හැකි අතර කලින් ඇතුළත් කළ කිසිදු පෙළක් මකා දැමිය නොහැක.

පෙරනිමි සැකසුම කුමක්ද?

කවුළුවල GVIM භාවිතා කිරීම මම දුටුවෙමි. කෙසේ වෙතත් බොහෝ ලිනක්ස් පද්ධතිවල පර්යන්තයෙන් VIM භාවිතා කරන අතර පසුපස අවකාශය අපේක්ෂිත පරිදි ක්‍රියාත්මක වන බව පෙනේ.

මෙයට හේතුව බොහෝ ලිනක්ස් ඩිස්ට්‍රෝ නෞකාව කලින් සාදන ලද vimrc ලිපිගොනු සහිත පොදු විකල්ප කිහිපයක් සැකසීමයි. උදාහරණයක් ලෙස මා සතුව ඇති මගේ ආරුක්කු ලිනක්ස් පද්ධතියේ /usr/share/vim/vimfiles/archlinux.vim:

set nocompatible
set backspace=indent,eol,start
" ... and a few more...

ඔබ වින්ඩෝස් මත Vim ස්ථාපනය කරන්නේ නම්, පෙරනිමිය වන්නේ Vim සමඟ නැව්ගත කරන සුපුරුදු vimrc සහ gvimrc භාවිතා කිරීමයි.

මෙම විම් පෙරනිමි සඳහා හිස් අගයක් backspace. ආරුක්කු ලිනක්ස්, ඩේබියන්, සෙන්ටෝස් හෝ $other_distroපෙරනිමිය වෙනස් විය හැකිය.

සාමාන්‍ය ප්‍රකාරය

මෙම ප්‍රශ්නය ඇතුළත් කිරීමේ මාදිලියේ බැක්ස්පේස් ගැන ය, නමුත් සාමාන්‍ය මාදිලියේ බැක්ස්පේස් ගැන කෙටි අදහස් කිහිපයක් ද එක් කිරීමට මට ඉඩ දෙන්න.

සාමාන්‍ය ප්‍රකාරයේදී, බැක්ස්පේස් ක්‍රියා කරන්නේ hඑය වමට ය.

පෙර සැකසුමක් ලෙස, backspace පෙර පේලිය නම් පෙළ ආරම්භයේම යනවා (නම් eolවිය backspace); ඔබට ධජය 'whichwrap'හරහා ඇති විකල්පය සමඟ මෙම හැසිරීම පාලනය කළ හැකිය b(පෙරනිමියෙන් සක්‍රීය කර ඇත).

Xවිධානයට සිතියම් ගත කිරීමෙන් ඔබට බැක්ස්පේස් මකාදැමීමේ අක්ෂර සෑදිය හැකිය :

nnoremap <BS> X

1
මම හිතන්නේ "_Xඑය "වඩා ස්වාභාවික" හැසිරීමක් වනු <BS>ඇත.
හෝලෙත්

2
පෙරනිමි හැසිරීම සමඟ බෙදාහැරීමේ නැව් නොමැති බව සඳහන් කිරීම වටී. මා දුටු එකම දෙය msys2 වන අතර එය බොහෝ විට තීරණයක් නොව de න සංවර්ධිත ස්වභාවයයි.
j riv

5

<BS>වින්ඩෝස් හි ConEmu භාවිතා කරමින් යමෙකුට අත්දැකීම් පැහැදිලි කළ නොහැකි හැසිරීමක් තිබේ නම්, ඔබට <BS>යතුර නැවත සකස් කිරීමට සිදු විය හැකිය :

inoremap <Char-0x07F> <BS>
nnoremap <Char-0x07F> <BS>

වැඩි විස්තර


3
set backspace=2

v5.4 සහ ඊට පෙර භාවිතා කරයි. මැක් වෙනුවෙන් මා වෙනුවෙන් වැඩ කළා.

මැක්හි මට v3.2 ඇති බව පෙනේ:

$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.

3.2 පසු කළ සියලුම අනුවාදයන් GNU General Public License v3 (GPLv3) භාවිතා කරයි, එය ඇපල් සහාය නොදක්වයි. මේ පිළිබඳව රෙඩ්ඩිට් පිළිබඳ සාකච්ඡාවක් මෙහි ඇත.

ඔබට මෙය සමඟ නවතම බෑෂ් වෙත යාවත්කාලීන කළ හැකිය:

brew install bash

මෙහි ඉස්මතු කර ඇති වැඩසටහන්ගත කළ හැකි නිමාවෙන් ප්‍රයෝජන ගැනීමට මෙය ඉඩ දෙයි .


0

නම් set backspace=indent,eol,startඔබගේ අවසාන රේඛාව වේ vimrc, කිසිදු විසඳුමක් වැඩ කරනු ඇත.

මෙයින් පසු තවත් රීතියක් එක් කරන්න, උදා:

set ruler

5
එය මට අමුතු දෙයක් ලෙස පෙනේ, ඔබේ vimrc වෙත තවත් විධානයක් එක් කිරීමෙන් පෙර එක වැඩ කිරීමට හේතුව ඔබට පැහැදිලි කළ හැකිද?
statox

මම එය මගේ අන්තිම පේළියේ තැබුවෙමි .vimrc. ✌️
හෙන්රික් ඇල්බ්‍රෙක්ට්සන්
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.