ভিম শেষ পজিশনের কথা মনে রাখছে না


89

আমার উবুন্টু এলটিএস 12.04 এর vim সম্পাদক রয়েছে has যদি আমি কোনও ফাইল খুলি, অনুচ্ছেদে চলে যাই এবং ভিএমটি আবার খুলি, তবে কার্সারটি সর্বদা ফাইলের শুরুতে চলে যায়।

এটি প্রত্যাশিত আচরণ নয়। কোনও ফাইল বন্ধ করার পরে ভিএম সর্বশেষ পঠনের অবস্থান কীভাবে মনে করতে পারে?

আমি চেষ্টাও করেছি vi, তবে ফলাফলটিও একই।


1
আমি দুঃখিত, তবে 0 টি ডকুমেন্টেশন বলে মনে হচ্ছে এটি হওয়া উচিত। আপনি কি 100% নিশ্চিত ভিমের ক্ষেত্রে মামলাটি করেন? এবং, আমি দুঃখিত, শেষ অবস্থানটি মনে রাখার জন্য এটি কীভাবে কনফিগার করা যায় সে সম্পর্কে আমার কোনও ধারণা নেই। আমার দ্বারা একটি অপ্রয়োজনীয় মন্তব্য করতে পারে, তবে আপনি যদি প্রোগ্রামটি এর আগে অনুধাবন করে থাকেন তবে তা আমার জানা দরকার।
ডেনি

4
রেডহাতে উদাহরণস্বরূপ, কোনও ফাইলের সর্বশেষ রেফার করা রেখাটি ভিএম দ্বারা স্মরণ করা হয়। ভিম ওবুন্টু 12.04 এ অসুবিধাজনক বলে মনে হচ্ছে
চন্দ্র মাশরুম

উবুন্টু 10.04 এ এটি অবশ্যই ডিফল্ট আচরণ নয়। আমি দীর্ঘদিন ধরে উবুন্টুতে ভিম ব্যবহার করছি, আপনার প্রত্যাশিত আচরণটি কখনও দেখেনি। আপনি সম্ভবত এই ইনস্টলেশনটি এটি করতে কনফিগার করেছেন - উদাহরণস্বরূপ @ গ্যারিবিশপের উত্তর দেখুন।
gertvdijk

দুঃখিত এটি উবুন্টু 10.04 ছিল না, এটি লাল টুপি কাজ করেছিল। আমার মন্তব্য আপডেট করেছেন
চন্দ্র মাশরুম

উত্তর:


116

এটি সমাধান করেছেন:

জন্য / etc / তেজ / vimrc

ইতিমধ্যে প্রয়োজনীয় বৈশিষ্ট্য রয়েছে। এটিকে কেবল অসম্পূর্ণ করা দরকার:

" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif

(প্রকৃতপক্ষে, আপনি /usr/share/vim/vim73/vimrc_example.vim এও উল্লেখ করতে পারেন)


এটি কেবলমাত্র অন্য ব্যবহারকারীদের সাথে নয়, মূল ব্যবহারকারীদের সাথে কাজ করে বলে মনে হচ্ছে। আমার ভিএমআরসি ফাইলটি -rw-r--r-- 1 root root; যে সমস্যা হবে?
এডটিসি

2
আমার কাছে অদ্ভুত সমস্যা ছিল যেখানে একজন ব্যবহারকারীর সর্বশেষ অবস্থানটি মনে রাখবে তবে অন্য কেউ নেই। দেখা যাচ্ছে যে এই রেখাগুলি ব্যবহারকারীর .vimrc ফাইলে ছিল, তবে / etc / vim / vimrc এ মন্তব্য করা হয়েছিল। সেখানে তাদের মন্তব্য না করে এটি সমস্ত ব্যবহারকারীর জন্য সক্ষম করেছে।
felwithe

66

আমার একই সমস্যা ছিল এবং এটি প্রমাণিত হয়েছে যে আমার হোম ডিরেক্টরিতে .viminfo ফাইলটির ভুল মালিকানা ছিল। এটি মালিকানাধীন ছিল মূল: মূল দ্বারা।

একবার আমি নিজের কাছে ফাইলটি পরিবর্তন করে ফাইলের মালিকানা স্থির করে ফেললাম, ফাইলের অবস্থান মনে করে আমার জন্য আবার কাজ শুরু হয়েছিল


3
এই জিনিসগুলি আমার ক্ষেত্রে কাজ করে। আমি একই সমস্যা ছিল। আমি .viminfo (হোম ডিরেক্টরিতে উপস্থিত) এর মালিকানা পরিবর্তন করেছি যা ভিম সমস্যা সমাধান করে। কিন্তু কেন এটি মূল: মূল দিয়ে তৈরি হয়েছিল?
ব্রিজেশ ভালেরায়

1
@ ব্রিজেশভালেরা সম্ভবত ফাইলটির উপস্থিতি নেই বলে আপনি রুট হিসাবে ভিএম শুরু করেছিলেন কারণ সম্ভবত
Ruslan

1
@ রুসলান তবে তারপরে ফাইলটি মূল ব্যবহারকারীদের হোম ডিরেক্টরিতে তৈরি করা উচিত নয়?
ankush981

5
@ ডটস্ল্যাশ যা জটিল sudo। এটি পরিবেশ পরিবর্তন করে না (কমপক্ষে বেশিরভাগ ক্ষেত্রে): চালানোর চেষ্টা করুন sudo bash -c 'echo $HOME', আপনি মূলের পরিবর্তে আপনার হোম ডিরেক্টরিটি পাবেন।
রুসলান



2

ভিআইএম-লাস্টপ্লেস (আমি লেখক) নামে একটি প্লাগইন রয়েছে যা আপনার ফাইলগুলি যেখানে খুলেছে সেখানে খুলবে। প্রতিশ্রুতিবদ্ধ বার্তাগুলি উপেক্ষা করে উপরের পরামর্শগুলিতে এটি উন্নতি করে কারণ আপনি সাধারণত একটি নতুন বার্তা সম্পাদনা করছেন এবং প্রতিশ্রুতি বার্তা ফাইলের শীর্ষে শুরু করতে চান।


ডাউনটা কেন? ভিএম-লাস্টপ্লেস ওপি যা বলেছিল ঠিক তাই করে এবং এটি গ্রহণযোগ্য উত্তরের চেয়েও ভাল করে (যার মধ্যে বেশ কয়েকটি বাগ রয়েছে)।
গ্রেগ ডিয়েটশে

0

আমার ক্ষেত্রে, ষষ্ঠ একটি সিমবলিক লিঙ্ক ছিল: /usr/bin/vi -> /etc/alternatives/vi -> /usr/bin/vim.tiny। পরেরটির কোনও বাস্তব ভিম বৈশিষ্ট্য নেই। 'ভিআইএম' প্যাকেজ ইনস্টল করা (সিনাপটিক বা অ্যাপট-গেট ব্যবহার করে) এই সিমিলিংকটিকে নির্দেশ করে /usr/bin/vim.basicএবং এটি সমস্যার সমাধান করেছে।


-1

চন্দ্র মাশরুম সমাধানে একটি ভুল আছে। এখানে সংশোধন:

if has("autocmd")
  " When editing a file, always jump to the last known cursor position.
  " Don't do it when the position is invalid or when inside an event handler
  " (happens when dropping a file on gvim).
  " Also don't do it when the mark is in the first line, that is the default
  " position when opening a file.
  autocmd BufReadPost *
    \ if line("'\"") > 1 && line("'\"") <= line("$") |
    \   exe "normal! g`\"" |
    \ endif

endif

আপনি কেন আপনার সমাধানটিকে সঠিক বলে বিশ্বাস করেন? এটি দেখতে অনেকটা দেখতে একই রকম, তবে একটি লাইনের শুরুতে ব্যাকস্ল্যাশগুলির জন্য । যদি কোনও হয় তবে সেগুলি কি পরবর্তী লাইনে কমান্ডটি চালিয়ে যাওয়ার ইঙ্গিত করে এমন একটি লাইনের শেষে থাকা উচিত নয় ...? এছাড়াও, গৃহীত উত্তরটি কেবল একটি বৈশ্বিক কনফিগারেশনের ফাইলের একটি অংশকেই অস্বস্তিকর বিষয়ে কথা বলে, যা একসাথে ইনস্টল করা আছে vim। স্পষ্টতই এটি সমস্যার সমাধান করেছে। ত্রুটি কোথায়?
নেফেন্তে

কারণ আমি যদি প্রথম সমাধানটি অনুলিপি / পেস্ট করি তবে আমি একটি ত্রুটি পেয়েছি। এবং আমি আমার /usr/share/vim/vim74/vimrc_example.vim এর সামগ্রী পোস্ট করেছি (যার শুরুতে ব্যাকস্ল্যাশগুলি অন্তর্ভুক্ত ছিল)।
আরনৌড

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