ভিম - ভিএম শুরু করার সাথে সাথে কমান্ডটি তাত্ক্ষণিকভাবে চালানো যায় কীভাবে?


103

আমার একটি প্লাগইন রয়েছে (FindFile.vim) যা দ্রুত চালনার জন্য :FindFileCache .যখনই আমি ভিআইএম শুরু করি তখনই চালানো দরকার .. প্রতিবারই আমি যখন ভিএম শুরু করি তখনই এটি চালাতে হয় ।

কীভাবে আমি একবারে চলে যাওয়া কমান্ডটি লিখতে পারি, প্রতিবার যখন ভিএম শুরু হয়?

উত্তর:


145

আপনার কনফিগারেশন স্টাফ রাখার সেরা জায়গাটি আপনার .vimrc ফাইলে। যাইহোক, এটি খুব তাড়াতাড়ি উত্সাহিত হয়, চেক করুন :h startup:

At startup, Vim checks environment variables and files and sets values
accordingly.  Vim proceeds in this order:

1. Set the 'shell' and 'term' option                *SHELL* *COMSPEC* *TERM*
2. Process the arguments
3. Execute Ex commands, from environment variables and/or files *vimrc* *exrc*
4. Load the plugin scripts.                                 *load-plugins*
5. Set 'shellpipe' and 'shellredir'
6. Set 'updatecount' to zero, if "-n" command argument used
7. Set binary options
8. Perform GUI initializations
9. Read the viminfo file
10. Read the quickfix file
11. Open all windows
12. Execute startup commands

আপনি দেখতে পাচ্ছেন, আপনার .vimrc প্লাগইনগুলির আগে লোড হবে। আপনি যদি :FindFileCache .এটি রাখেন তবে একটি ত্রুটি ঘটবে, কারণ সেই আদেশটি এখনও বিদ্যমান নেই exist (একবারে প্লাগইনটি পদক্ষেপ 4 এ লোড হয়ে গেলে এটি উপস্থিত থাকবে))

এটি সমাধানের জন্য, সরাসরি কমান্ডটি কার্যকর করার পরিবর্তে একটি অটো-কমান্ড তৈরি করুন। কোনও ঘটনা ঘটলে অটো-কমান্ডগুলি কিছু কমান্ড কার্যকর করে। এই ক্ষেত্রে, ভিমএন্টার ইভেন্টটি যথাযথ দেখাচ্ছে (থেকে :h VimEnter):

                                                    *VimEnter*
VimEnter                    After doing all the startup stuff, including
                            loading .vimrc files, executing the "-c cmd"
                            arguments, creating all windows and loading
                            the buffers in them.

তারপরে, কেবল আপনার .vimrc এ এই লাইনটি রাখুন :

autocmd VimEnter * FindFileCache .

2
+1, এটি গ্রহণযোগ্য উত্তর হওয়া উচিত, এটি একটি কমান্ডের জন্য পৃথক ফাইল তৈরির চেয়ে অনেক পরিষ্কার।

যোগ করতে চাই E172 এর সাথে আমার এই বিরতি ছিল কারণ আমার পরে একটি জায়গা ছিল।
ক্যারোলিন

কল করার জন্য এই পদ্ধতির ব্যবহার করার চেষ্টা করেছেন: আনসিএএসস তবে এটির কাঙ্ক্ষিত প্রভাবটি আসলেই কার্যকর হয়নি - কোনও কমান্ড যেমন: আনসিস্ক আগে চালানো হয়েছিল কিনা তা কীভাবে সনাক্ত করবেন তা আপনি জানেন কী?
সেরুপ

89

ভিমের -c পতাকাও রয়েছে। উল্লম্ব বিভাজন দিয়ে ভিএম শুরু করতে আমি আমার টিএমউক্সপি কনফিগারেশনে এটি করি:

vim -c "vnew"

কমপক্ষে নিওভিমের সাথে আপনি একই সময়ে একটি ফাইলও খুলতে পারেন:

nvim -c "colorscheme mustang" some_file

6
ধন্যবাদ, আমি এটিই খুঁজছিলাম কখনও কখনও, আমি শুধু হিসাবে আপনি দেখিয়েছেন বিভক্ত মত একটি অস্থায়ী প্রারম্ভে কমান্ড চালানোর জন্য প্রয়োজন, এবং আমার vimrc ফাইলে এটিকে সংরক্ষণ করার প্রয়োজন হবে না
verboze

এটি কোনও ফাইল খুলতে পারে না:vim -c ':colo default' test.txt
ভ্যান অ্যাবেল

1
আমার জন্যও পারফেক্ট - আমি ব্যবহার করছি xolox/vim-notesএবং আমি একটি ফিশ ফাংশন চাই যা ভিমকে নতুন নোট যেতে প্রস্তুত সহ খুলবে।
wsams

13

নামের একটি ফাইল তৈরি করুন ~/.vim/after/plugin/whatever_name_you_like.vimএবং এটি পূরণ করুন

FindFileCache .

ভিআইএম ডিরেক্টরিতে স্ক্রিপ্টগুলি পড়ার এবং সম্পাদন করার ক্রমটি বর্ণিত হয়েছে :help 'runtimepath'


2

অন্যান্য উত্তরগুলির চেয়ে এমনকি পরে পেতে তবে এখনও শুরুর ঠিক পরে, .vimrc এ একটি টাইমার ব্যবহার করুন। উদাহরণস্বরূপ, .vimrc এ এই কোডটি ভেরিয়েবল সেট করার আগে শুরু হওয়ার পরে অর্ধেক সেকেন্ড অপেক্ষা করে।

function DelayedSetVariables(timer)
    let g:ycm_filetype_blacklist['ignored'] = 1
endfunction
let timer=timer_start(500,'DelayedSetVariables')

(উদাহরণের ভেরিয়েবলটি YouCompleteMe প্লাগইন থেকে ব্ল্যাকলিস্ট। আমি ধরে নিয়েছি, প্লাগইনটি অবিচ্ছিন্নভাবে অন্য কিছু প্রক্রিয়া শুরু করে যা ভেরিয়েবল তৈরি করে, তবে ভিএম শুরু হওয়ার সাথে সাথে পুরোপুরি প্রস্তুত হয় না I যখন আমি চেষ্টা করি তখন ভেরিয়েবলের অস্তিত্ব থাকে না I এটি .vimrc, ফাইলের পরে বা VimEnter ইভেন্টে সেট করুন This এটি আমার উইন্ডোজ সিস্টেমে নির্দিষ্টভাবে প্রযোজ্য, ওয়াইসিএম ডকুমেন্টেশন বলছে .vimrc অপশন সেট করার জন্য কাজ করা উচিত))


1

আপনার FindFileCacheমধ্যে রাখুন .vimrc

অটলোড কমান্ডগুলি পৃথক এবং আপনার দৃশ্যের জন্য কাজ করবে না।


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