ব্যাকস্পেস কী কী সন্নিবেশ মোডে কাজ করে না?


146

backspaceকীটি দিয়ে সন্নিবেশ মোডে অক্ষরগুলি মুছে ফেলার চেষ্টা করা কখনও কখনও কাজ করে বলে মনে হয় না। আমি backspace মাঝে মাঝে করতে পারি , তবে অন্য সময়ে এটি কিছুই করে না; কার্সারটি বাম দিকে যায় না, এবং একেবারে কিছুই ঘটেছিল বলে মনে হয়।

আমি এটি উইন্ডোজে জিভিম ব্যবহার করে লক্ষ্য করেছি। backspaceযেমন তবে সবচেয়ে লিনাক্স অপারেটিং সিস্টেমে টার্মিনাল থেকে তেজ ব্যবহার করার সময় প্রত্যাশিত কাজ মনে হয়।

  1. কেন এমন হয়?
  2. আমি কীভাবে backspaceযথারীতি মুছে ফেলা অক্ষরগুলি তৈরি করতে পারি ?
  3. এই আচরণটি কি কোনও বৈশিষ্ট্য হিসাবে চিহ্নিত করা হয়েছে? অন্য কথায়: backspaceসন্নিবেশ মোডে অক্ষর মুছতে আরও ভাল বিকল্প আছে ?

নীচের উত্তরটি আপনার সমস্যাটি সঠিকভাবে সমাধান করার সময়, আমি খুঁজে পেয়েছি যে অ্যারো কী বা ব্যাকস্পেসের মতো কীগুলি অক্ষম করা আপনাকে জিনিসগুলি আরও সঠিকভাবে করতে অভ্যস্ত করতে সহায়তা করে। ভিমে থাকা ব্যাকস্পেসটি দিয়ে X(এবং মুছে ফেলা x) দিয়ে সম্পন্ন করা হয় তবে প্রায়শই আপনি যা করতে চেয়েছিলেন dbউদাহরণস্বরূপ শব্দের শুরু হওয়া অবধি মুছে ফেলা বা dawপুরো শব্দটি মুছে ফেলা ইত্যাদি আপনার যদি ব্যাকস্পেস উপলভ্য থাকে তবে আপনি এটি ব্যবহার করে ঝুঁকিপূর্ণ প্রয়োজনের চেয়ে অধিক ক্ষেত্রে সাবপটিমাল কী
শাহবাজ

5
@ শাহবাজ আমি অসম্মতি: সন্নিবেশ মোডে থাকাকালীন ব্যাকস্পেস কীটি ব্যবহার করে সামান্য সংশোধন করতে সক্ষম হওয়া বোধগম্য। আমি একমত যে সাধারণ মোড কমান্ডগুলি কীভাবে ব্যবহার করতে হবে তা শিখতে হবে, তবে সামান্য সংশোধনের জন্য সন্নিবেশ মোডে থাকাকালীন ব্যাকস্পেস ব্যবহার করা অপ্রয়োজনীয় নয়।
কার্ল ইংভে লেরভেগ

3
@ কার্লইংভেলেভের্গ, ব্যাকস্পেসের ক্ষেত্রে আমি সম্মত (আসলে আমার নিজের এটি অক্ষম নেই)। তবে, দেখে মনে হচ্ছে ওপির ব্যাকস্পেসের ডিফল্ট আচরণ রয়েছে যা উদাহরণস্বরূপ লাইনটি শুরু করার সাথে কাজ করে না তবে লাইনের মধ্যে কাজ করে। তবুও, ওপিতে ব্যাকস্পেসের চেয়ে ভাল বিকল্প রয়েছে। উদাহরণস্বরূপ, পূর্ববর্তী লাইনে ব্যাকস্পেসিংয়ের পরিবর্তে, এমন কেউ ব্যবহার করতে পারে Jযা শ্বেত স্পেসগুলির যত্নও নেয়। সংক্ষেপে, ব্যাকস্পেসটি লেখার সময় দ্রুত টাইপো ঠিক করার জন্য ঠিক আছে, তবে এর চেয়ে আরও ভাল বিকল্প রয়েছে।
শাহবাজ

1
অনেক লোকের সমস্যাটি প্রতি বৈশিষ্ট্যের সাথে একমত নয় তবে এটি কেবলমাত্র তারা ব্যবহার করেন এমন সম্পাদক নয়। যেহেতু তারা একাধিক সম্পাদক ব্যবহার করে ব্যাকস্পেসের সাথে সম্পর্কিত দৃষ্টান্তগুলি স্যুইচ করার জন্য এটি পাল্টা স্বজ্ঞাত যা তারা ভিম বৈশিষ্ট্যের একটি উপসেট পছন্দ করে।
j রিভ

আপনি যদি ভিম-ফ্যাক ইনস্টল করেন তবে আপনি সেখানে একটি অফলাইন উত্তর পেতে পারেন: :h vim-faqএবং অনুসন্ধান করুন /backspace। মুখস্থ করা ট্যাগ হার্ড :h faq-12.26
হটসকে

উত্তর:


178

tl; dr: ব্যাকস্পেসটি অন্যান্য বেশিরভাগ প্রোগ্রামের মতো কাজ করতে এটি আপনার ভিআরসিআরকে যুক্ত করুন:

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.

সুতরাং এই মানগুলি ঠিক কী বোঝায়?

ইনডেন্ট
ভিম অনেকগুলি ফাইল টাইপের জন্য স্বয়ংক্রিয় ইন্ডেন্টেশন যুক্ত করে; ডিফল্টরূপে, আপনাকে এ থেকে ব্যাকস্পেসের অনুমতি দেওয়া হয় না ; 'স্বতঃসংশ্লিষ্টতা' হিসাবে বিবেচিত যাগুলির নিয়মগুলি কিছুটা সূক্ষ্ম, উদাহরণস্বরূপ, যদি আমরা এটি টাইপ করি (যেখানে the কার্সার হয়):

if :; then
    █

ব্যাকস্প্যাকিং কাজ করবে না।

কিন্তু আমরা যদি তারপর একটি কমান্ড যোগ হবে fi, এবং ফিরে পর্যন্ত যেতে, আমরা হয় খাঁজ মুছে ফেলার জন্য অনুমোদিত:

if :; then
    █:
fi

এটি কারণ প্রথম উদাহরণে, ভিম নির্ধারিত হয়েছিল যে আপনি এন্টার চাপলে এটি 1 স্তরের ইন্ডেন্টেশন যুক্ত করা উচিত; তবে দ্বিতীয় উদাহরণে, ভিম কিছুই স্বয়ংক্রিয়ভাবে চালিত করেনি, এটি কেবল ট্যাব অক্ষর বা কয়েকটি স্পেস।

এছাড়াও দেখুন :help 'autoindent'

eol
এটি সর্বাধিক সুস্পষ্ট হওয়া উচিত, ব্যাকস্পেস টিপে EOL চিহ্নিতকারীগুলি ( \nবা \r\n) সরিয়ে দেয় ; যদি অক্ষম থাকে, আপনি কোনও ইওল চিহ্নিতকারী মোছার চেষ্টা করলে ব্যাকস্পেস কিছুই করবে না।

শুরু করার
অর্থ এটি সন্নিবেশ মোড শুরু হওয়ার পরে আপনি কেবল সন্নিবেশ করা পাঠ্য মুছতে পারবেন এবং পূর্বে সন্নিবেশ করা কোনও পাঠ্য আপনি মুছতে পারবেন না।

সুতরাং ডিফল্ট সেটিংস কি?

আমি এটি উইন্ডোতে জিভিআইএম ব্যবহার করে লক্ষ্য করেছি। তবে বেশিরভাগ লিনাক্স সিস্টেমে টার্মিনাল থেকে ভিআইএম ব্যবহার করার সময় ব্যাকস্পেসটি প্রত্যাশা অনুযায়ী কাজ করবে বলে মনে হচ্ছে।

এর কারণ হ'ল অনেকগুলি লিনাক্স ডিস্ট্রো শিপকে প্রাক-তৈরি ভিএমআরসি ফাইলগুলি দিয়ে থাকে যা কিছু সাধারণ বিকল্প নির্ধারণ করে। উদাহরণস্বরূপ আমার আর্ক লিনাক্স সিস্টেমে আমার /usr/share/vim/vimfiles/archlinux.vimসাথে রয়েছে:

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

আপনি যদি উইন্ডোতে ভিম ইনস্টল করেন তবে ডিফল্টটি হ'ল ডিফল্ট vimrc এবং gvimrc ব্যবহার করা হয় যা ভিম শিপ করে।

তেজ ডিফল্ট জন্য একটি খালি মান backspace। আর্ক লিনাক্স, ডেবিয়ান, সেন্টস বা $other_distroডিফল্ট আলাদা হতে পারে।

স্বাভাবিক অবস্থা

এই প্রশ্নটি সন্নিবেশ মোডে ব্যাকস্পেস সম্পর্কে, তবে আমার স্বাভাবিক মোডে ব্যাকস্পেস সম্পর্কে কিছু সংক্ষিপ্ত মন্তব্য যুক্ত করুন।

সাধারণ মোডে, ব্যাকস্পেসটি কাজ করে h, এটি কেবল বাম দিকে যায়।

ডিফল্টরূপে, ব্যাকস্পেস পূর্ববর্তী লাইনে যাবে যদি কোনও লাইনের শুরুতে (যেমনটি eolছিল backspace); আপনি পতাকাটির 'whichwrap'মাধ্যমে বিকল্পের মাধ্যমে এই আচরণটি নিয়ন্ত্রণ করতে পারেন b(ডিফল্টরূপে সক্ষম)।

আপনি Xকমান্ডটিতে ম্যাপিং করে ব্যাকস্পেস মুছে ফেলতে অক্ষরগুলিও তৈরি করতে পারেন :

nnoremap <BS> X

1
আমি মনে করি এটি "_X"আরও প্রাকৃতিক" আচরণ হবে <BS>
হাউলেথ

2
উল্লেখযোগ্য যে ডিফল্ট আচরণ সহ প্রায় কোনও বিতরণ জাহাজ নেই। কেবলমাত্র আমি যেটি লক্ষ্য করেছি তা ছিল এমএসএস 2 এবং এটি সম্ভবত কোনও সিদ্ধান্ত নয় তবে এর অনুন্নত হওয়ার প্রকৃতি ছিল।
j রিভ

5

<BS>উইন্ডোজে কাউমনু ব্যবহার করে যদি কেউ ব্যাখ্যাযোগ্য আচরণের অভিজ্ঞতা না পান তবে আপনার <BS>কীটি পুনরায় তৈরি করতে হতে পারে:

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

অধিক তথ্য


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

পূর্ববর্তী সমস্ত সংস্করণে জিএনইউ জেনারেল পাবলিক লাইসেন্স v3 (জিপিএলভি 3) ব্যবহার করা হয়েছে, যা অ্যাপল সমর্থন করার পক্ষে নয়। এই সম্পর্কে reddit উপর একটি আলোচনা এখানে

আপনি এর সাথে নতুন বাশে আপগ্রেড করতে পারেন:

brew install bash

এটি এখানে হাইলাইট প্রোগ্রামযোগ্য পরিসমাপ্তির সুবিধা নিতে পারবেন ।


0

যদি set backspace=indent,eol,startআপনার শেষ লাইন হয় তবে vimrcসমাধানগুলির কোনওটিই কাজ করবে না।

এর পরে আরও একটি বিধি যুক্ত করুন, যেমন:

set ruler

4
এটি আমার কাছে বেশ অদ্ভুত বলে মনে হচ্ছে, আপনি কী ব্যাখ্যা করতে পারবেন কেন আপনার ভিআমআরসিটিতে অন্য একটি কমান্ড যুক্ত করা পূর্ববর্তীটি কাজ করবে?
স্ট্যাটক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.