আমি কীভাবে আমার ভিএমআরসি ফাইলটি ডিবাগ করব?


80

আমার ভিমে সমস্যা আছে এবং আমি মনে করি এটি আমার vimrcফাইলে থাকতে পারে (বা বলা হয়েছে এটি আমার vimrcফাইল হতে পারে )।

আমি কীভাবে এটি যাচাই করব? এটি যদি আমার vimrcফাইল হয় তবে সমস্যাটি ঠিক কোথায় রয়েছে তা আমি কীভাবে জানব ?

উত্তর:


79

আপনি প্রথমে যেটি করতে চান তা হ'ল ডিফল্ট সেটিংস দিয়ে ভিম শুরু করা:

vim -u NONE -U NONE -N

-u NONEআপনার vimrc লোড করা থেকে আটকায় তেজ, -U NONEআপনার gvimrc লোড থেকে তেজ বাধা দেয়, এবং -Nতেজ বলে নো সামঞ্জস্যপূর্ণ মোড ব্যবহার করতে (এই প্রয়োজন হয় না, কিন্তু অধিকাংশ তেজ ব্যবহারকারী "সামঞ্জস্যপূর্ণ" মোডে ব্যবহার করা হয় না)। মনে রাখবেন যে, NONEহয় প্রয়োজনীয় সব বড় হাতের অক্ষরে যাবে।

উইন্ডোজে আপনি নতুন শর্টকাট 1 তৈরি করে এই পতাকাগুলি যুক্ত করতে পারেন ।

  • যদি সমস্যাটি থেকে যায় তবে আপনি জানেন যে এটি আপনার ভিআইএমআরসি-তে কিছু নয়

  • সমস্যা disappears, তাহলে আপনি এখন এটি দ্বারা সৃষ্ট হচ্ছে কিছু আপনার vimrc ফাইলে।

এটা আমার ভিএমআরসি না!

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

তো এটা আমার ভিমরিচ, এখন কি?

আপনি যদি ইতিমধ্যে না থাকেন তবে আপনি সম্ভবত প্রথমে আপনার ভিএমআরসি ফাইলের একটি ব্যাকআপ কপি সংরক্ষণ করতে চান।

প্লাগইনগুলি পরীক্ষা করুন

আপনি সম্ভবত পরবর্তী কাজটি করতে চান তা হল প্রথমে সমস্ত প্লাগইন অক্ষম করা; প্লাগইনগুলি ভিমে বেশ কিছুটা পরিবর্তন করতে পারে। যদি এটি সমস্যার সমাধান করে, তবে কোন প্লাগইনগুলি একে একে একে সক্ষম করে সন্ধানের চেষ্টা করুন। কোন প্লাগইনটি হুবহু সমস্যা সৃষ্টি করে তা সনাক্ত করার পরে, আপনি এই প্লাগইনটির ডকুমেন্টেশনগুলি পড়ে এবং / অথবা এর সাথে ট্যাগযুক্ত একটি প্রশ্ন জিজ্ঞাসা করে এটি ঠিক করতে পারেন plugin-<name>

যদি এটি কোনও প্লাগইন না হয় এবং আপনার সমস্যাটি কী কারণে ঘটছে সে সম্পর্কে আপনার কোনও ধারণা নেই, তবে এটি একটি পরীক্ষামূলক এবং ত্রুটি পদ্ধতি। আপনার ভিএমআরসি-তে এক বা একাধিক লাইন মন্তব্য করুন, ভিম শুরু করুন, সমস্যা হয়েছে কিনা তা যাচাই করুন এবং সমস্যাটি না হওয়া পর্যন্ত এই পদ্ধতিটি পুনরাবৃত্তি করুন। এটি করার দ্রুততম উপায় হ'ল:

  1. আপনার প্রায় অর্ধেক ভিএমআরসি ফাইল মন্তব্য (বা সরান)।
  2. ভিম পুনরায় চালু করুন, বা একটি নতুন ভিম খুলুন (সেটিংসটি আনসেট না থাকা অবস্থায় ভিএমআরসি পুনরায় লোড করা যথেষ্ট ভাল নয়)।
  3. সমস্যা কি এখন চলে গেল? আপনি যে অংশটি সরিয়েছেন সেটিকে পিছনে রাখুন (ভিমকে খোলা রাখা এবং পূর্বাবস্থায় ব্যবহার করা এখানে দরকারী) এবং আপনি যে অংশটি পিছনে যুক্ত করেছিলেন তার 1 ধাপটি পুনরাবৃত্তি করুন।
  4. সমস্যাটি কি এখনও ঘটে? পদক্ষেপ 1 এ যান।

শেষ পর্যন্ত আপনার একক বিকল্প বা কয়েকটি বিকল্পের সংমিশ্রণ থাকা উচিত যা আপনার সমস্যার কারণ হয়ে দাঁড়ায়। আপনি ব্যবহার করে ভিমে যে কোনও বিকল্প সম্পর্কে আরও জানতে পারেন:

:help 'option_name'

উদ্ধৃতিগুলি এখানে গুরুত্বপূর্ণ, এটি সাধারণত এগুলি ছাড়া কার্যকর হয় তবে কখনও কখনও আপনি এগুলি বাদ দিলে আপনি ভুল পৃষ্ঠাতে শেষ করেন।

সহায়তা পৃষ্ঠাটি পড়ার পরেও যদি আপনি বিভ্রান্ত হন তবে আপনি কোথায় একটি প্রশ্ন জিজ্ঞাসা করতে পারবেন তা জানেন ;-)

একটি একক প্লাগইন ডিবাগ করা হচ্ছে

আপনি একটি একক প্লাগইন বিছিন্ন, সম্ভবত এটি সম্পর্কে একটি প্রশ্ন জিজ্ঞাসা করতে চান, আপনি যত সম্ভব কম লোড করতে কিন্তু চান এখনো প্লাগইন লোড; আপনি সহজেই ভিমের প্যাকেজ বৈশিষ্ট্য সহ এটি করতে পারেন। এর জন্য ভিওম 8 বা নব্যমের সাম্প্রতিকতম সংস্করণ প্রয়োজন।

  1. একটি নতুন ফাঁকা ডিরেক্টরি তৈরি করুন; আমরা ~/pluginউদাহরণটিতে পথটি ব্যবহার করব । এখন নিয়মিত pack/plugins/start/$nameডিরেক্টরিতে প্লাগইনটি রাখুন । উদাহরণ স্বরূপ:

    git clone https://github.com/fatih/vim-go.git ~/plugin/pack/plugins/start/vim-go
    
  2. test-vimrcনিম্নলিখিত বিষয়বস্তু সহ একটি ফাইল তৈরি করুন ; এটি নিশ্চিত করবে যে ভিম ~/pluginডিরেক্টরি থেকে নয় বরং ~/.vim ডিরেক্টরি থেকে প্লাগইনগুলি লোড করবে :

    set nocompatible
    set packpath=~/plugin,/usr/share/vim/vimfiles,/usr/share/vim/vim80,/usr/share/vim/vimfiles/after,~/plugin/after
    packloadall!
    
    syntax on
    filetype plugin indent on
    
  3. এর সাথে ভিম শুরু করুন:

    vim -U NONE -u ~/test-vimrc
    

    আপনার এখন কেবলমাত্র এই একক প্লাগইন সহ একটি ন্যূনতম vimrc রয়েছে।


পাদটিকা

1 উদাহরণস্বরূপ: bit৪ বিট উইন্ডোজে শর্টকাটটি এরকম কিছু দেখাচ্ছে "C:\Program Files (x86)\Vim\vim74\vim.exe" -u NONE -U NONE -N। এটি তৈরি করতে, ফাইল এক্সপ্লোরারে ডান ক্লিক করুন যেখানে আপনি শর্টকাট চান, তারপরে নতুন -> শর্টকাটটি নির্বাচন করুন এবং শর্টকাট পাঠ্য আটকান। আপনার ভিম অন্য কোনও স্থানে ইনস্টল করা থাকলে আপনাকে ভিম পথ পরিবর্তন করার প্রয়োজন হতে পারে।



2
আপনার বাগটি সনাক্ত করার পরে, আপনার .vimrc কে সংস্করণ নিয়ন্ত্রণে রাখা শুরু করার জন্য এটি দুর্দান্ত সময় হবে :) এটি সর্বদা সর্বদা সর্বশেষ পরিবর্তনগুলির মধ্যে একটি হয়ে যাবে যা স্টাফকে অদ্ভুতভাবে আচরণ করে।
এসক্রাফোর্ড

1
আপনি প্রয়োজন হবে না -U NONEযদি আপনার -u NONE
অ্যান্টনি

@ মার্টিনটর্নোইজ আমি প্রথম বারের পাঠককে বুঝতে সহজতর করার জন্য একটি সম্পাদনার পরামর্শ দিয়েছি । আশা করি তুমি পছন্দ করেছ. ধন্যবাদ!
jpaugh

1
ধন্যবাদ @ জেপফ; আমি মনে করি যে আদেশটি আরও অর্থবোধ করে।
মার্টিন টর্নয়েজ

31

নেই -Dডিবাগিং যা একটি স্ক্রিপ্ট থেকে প্রথম কমান্ডটি নির্বাহ করার পর ডিবাগিং মোড যেতে হবে জন্য তেজ প্যারামিটার বিশেষভাবে।

উদাহরণস্বরূপ, কোনও প্লাগইন ছাড়াই ডিবাগ মোডে ভিম চালাতে, এটি চালান:

vim --noplugin -D

পরের লাইনে পার্স করতে n/ টাইপ করুন nextএবং টিপতে থাকুন Enter

এবং contবা ইন্টারফেস qফিরে যেতে vim

আপনি যদি কোনও জিইউআই সংস্করণ ব্যবহার করে থাকেন তবে guiসেই কমান্ডের ঠিক পরে ডিবাগিং শুরু করতে আপনার ভিএমআরসিতে একটি কমান্ড দিন put

উপলব্ধ কমান্ডগুলির তালিকার জন্য Ctrl+ টিপুনd

আরও পড়ুন:


1
এটি .vimrc ফাইলে একটি সাধারণ ভুল খুঁজে পেতে সর্বাধিক সহায়ক ছিল যা একটি ত্রুটি বার্তা তৈরি করেছিল। যত তাড়াতাড়ি এটি করা ততই প্রথম চেষ্টা করার মতো মূল্য।
রিচভেল

1
@ টেনর্ব এই কমান্ডটি দুর্দান্ত উপভোগ করছে, অন্য সম্পাদককে যাওয়ার হাত থেকে বাঁচান।
TheLazyChap

11

ইতিমধ্যে উল্লিখিত হিসাবে, প্রথমে vim -u NONE -U NONE -Nআপনার ভ্যানিলা ভিম ঠিকঠাক কাজ করছে তা নিশ্চিত করার চেষ্টা করুন ।

তারপরে সাধারণভাবে ভিএম শুরু করুন এবং চেক করুন

:messages

সমস্যার পরে ভিতরে ভিএম, যা সমস্ত সতর্কতা এবং ত্রুটি দেখায়।

অবশেষে নিম্নলিখিত কমান্ডটি দিয়ে ভিএম শুরু করুন

vim -V9logfile.log

যা একটি লগফিল তৈরি করবে logfile.log, -V9এটি লগিং স্তর এবং আপনার সমস্যার পুনরুত্পাদন করার চেষ্টা করবে।


11

আরও একটি টিপ: যতটা সম্ভবত ক্যাভম্যান বলে মনে হচ্ছে, আমি আমার .vimrc এ ইকোম "বার্তা" যুক্ত করতে চাই যা সম্পাদন হচ্ছে এবং কী নয় তা দেখতে।

উদাহরণ স্বরূপ

if executable('ag')
  :echom "AG FOUND"

  ...
endif

এটি যদি আমাকে ব্লকটি কার্যকর করা হচ্ছে কিনা তা দ্রুত দেখতে সহায়তা করে ইত্যাদি next


6
এবং আপনি যদি echomঅন্য একটি আকর্ষণীয় কমান্ড ব্যবহার করেন :messagesতবে ম্যাসেজগুলি সম্পূর্ণরূপে প্রতিধ্বনিত হয়। এটি স্টার্টআপের পরে কখনও কখনও তাদের দিকে নজর দেওয়া কার্যকর হতে পারে।
স্ট্যাটক্স

এটি আমার প্রয়োজন প্রায়, আমি দেখতে চাই যে আমার ভিপরিচির এক পর্যায়ে সিপোপশনগুলির মান কী, আমি কীভাবে ": সেট সিপিপশনস" এর আউটপুট প্রতিধ্বনি করব? ?
মাইক লিপার্ট

10

একটি জিনিস যা আমি খুঁজে পেয়েছি তা হ'ল ভেরিয়েবলের সংগ্রহ রাখা যা আপনার অংশগুলি টগল করে .vimrcযাতে আপনি কোনও মন্তব্য না করেই এর অংশগুলি অক্ষম করতে বা সক্ষম করতে পারেন। আপনার নিজের সংগঠন সম্পর্কে আপনাকে ভাবতে বাধ্য করার এর মনোরম পার্শ্ব প্রতিক্রিয়াও রয়েছে .vimrc

" feature toggles in vimrc
let g:vimrc_feat_pathogen               = 1
let g:vimrc_feat_core_minimal           = 1
let g:vimrc_feat_matchit                = 1
let g:vimrc_feat_options                = 1
let g:vimrc_feat_colors_and_highlight   = 1
let g:vimrc_feat_key_rebinding_arpeggio = 1
let g:vimrc_feat_key_rebinding          = 1
let g:vimrc_feat_autocommand_group      = 1
let g:vimrc_feat_custom_definitions     = 1
let g:vimrc_feat_load_opam              = 1

এটি দ্বারা রক্ষিত একটি বিভাগের উদাহরণ if:

if g:vimrc_feat_core_minimal
    set nocompatible
    filetype plugin indent on
    syntax on
endif

1

আমার ভিএমআরসি লোডিংয়ের সময়টি খুব ধীর ছিল, প্রায় 400 মিমি এবং আমি কেবল এই লাইনটি সরিয়ে এটি 20 মিমি করে ফেলেছি:

silent !mkdir ~/.config/nvim/backups > /dev/null 2>&1

আপনার বাইরের কমান্ডগুলির মতো কলগুলি না রয়েছে তা নিশ্চিত করুন।


1
সাইটে স্বাগতম! এটি একটি দরকারী টিডবিট, তবে জিজ্ঞাসা করা সাধারণ প্রশ্নের চেয়ে এটি কিছুটা বেশি নির্দিষ্ট। এই প্রশ্নের উত্তর হিসাবে এটি আরও ভালভাবে যুক্ত করা যেতে পারে , বা আপনি যদি কেবল জ্ঞান ভাগ করে নেওয়ার জন্য সন্ধান করছেন তবে আপনি সম্ভবত নিজের প্রশ্ন জিজ্ঞাসা-উত্তর করতে পারবেন?
সমৃদ্ধ

0

আপনাকে শুরু করার জন্য এখানে খুব সহজ পদ্ধতি রয়েছে is

  1. আপনার পুরো .vimrc ফাইলের বিষয়বস্তু মন্তব্য করুন
  2. আপনার .vimrc চালিয়ে :source %বা পুনরায় লোড করুন:so $MYVIMRC
  3. ফাইলের একটি বিচক্ষণ অংশকে আপত্তিহীন করুন (সাধারণত উপরে থেকে শুরু করা হয়)
  4. ত্রুটিটি না পাওয়া পর্যন্ত 2 এবং 3 পদক্ষেপ পুনরাবৃত্তি করুন।
  5. ত্রুটি ঠিক করুন।

1
আপনি যদি যথাযথভাবে মূলধন এবং বিরামচিহ্ন তৈরি করেন তবে এই উত্তরটি আরও অনেক ভাল হতে পারে।

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