ভিম থেকে শেলিংয়ের সময় আমি কীভাবে শেল এলিয়াসগুলি উপলব্ধ করতে পারি?


11

আমার মধ্যে .zshrc, আমি কিছু এলিয়াস ঘোষণা করি। উদাহরণস্বরূপ, which dbstartalias উপন্যাসের বিষয়বস্তু দেখায়।

যদি আমি সেই শেলটি থেকে ভিএম খুলি, এটি একটি শিশু প্রক্রিয়া। ভিমে, আমি শেল কমান্ডগুলি দিয়ে চালাতে পারি :! some_command:! echo $0ভিম কী শেল ব্যবহার করছে তা যদি আমি দেখতে পাই তবে এটি '/ bin / zsh' কে আউটপুট করে। তবে আমার উপনামগুলি সেখানে অনুপলব্ধ।

আমি যখন ভিম থেকে শেল আউট করব তখন আমি কীভাবে আমার সাধারণ শেল এলিজগুলি উপলব্ধ করব?

দুটি ধারণা:

  • কোনওভাবেই EXPORTমূল শেল থেকে তার শিশু প্রক্রিয়াতে vimএবং আবার শেল চাইল্ড প্রক্রিয়াতে এলিয়াস
  • আমার .zshrcসাবস্কেলগুলি তৈরি করার সময় আমার পড়ার জন্য ভিমকে কনফিগার করুন

আপনার প্রোফাইলে অন্তর্ভুক্ত করুন .zshrc(যা ব্যবহার হিসাবে মনে হচ্ছেvim
কিউই

উত্তর:


13

পুরানো প্রশ্ন, তবে zsh এ ভিএম-এর সবচেয়ে পরিষ্কার সমাধানটি হ'ল উপন্যাসটি যুক্ত করা ~/.zshenv, যে ফাইলটি zsh সমস্ত শেল, লগইন, ইন্টারেক্টিভ বা অন্য কোনও জন্য লোড করে। এটি পতাকা সহ ভিএম বা জেডএস শুরু করা এবং এটির সাথে কোনও সম্ভাব্য সমস্যা এড়ানো যায়।

~/.zshenvবনামগুলির ~/.zshrcএখানে একটি সুন্দর ব্যাখ্যা রয়েছে : http://tanguy.ortolo.eu/blog/article25/shrc

মূলত, zsh সর্বদা উত্স ~/.zshenv। ইন্টারেক্টিভ শেল উত্স ~/.zshrc, এবং লগইন শেল উত্স ~/.zprofileএবং ~/.zlogin। সুতরাং, একটি ইন্টারেক্টিভ লগইন শেল উত্স ~/.zshenv ~/.zprofile ~/.zlogin ~/.zloginএবং একটি ভিআইএম এর মতো একটি নন-ইন্টারেক্টিভ, ননলগিন শেল কেবলমাত্র উত্স চালানোর জন্য ব্যবহার করে ~/.zshenv


এটি কোনও লিংক-উত্তর নয়, তবে আপনি লিঙ্ক থেকে পার্থক্যের ব্যাখ্যাটি ইনলাইন করলে ভাল হবে; সেভাবে এখানে ব্যাখ্যা থেকে প্রত্যেকে উপকৃত হতে পারে এবং আমরা লিঙ্করোট থেকে নিরাপদ।
HalosGhost

1
লিঙ্কটি থেকে মূল পয়েন্টগুলি সহ আমার উত্তর আপডেট করুন।
কেভিন লি

এটি অন্যান্য উত্তরগুলির তুলনায় আমার পক্ষে দ্রুত কাজ করেছে। আমি যখন ভিএম এর জন্য একটি ইন্টারেক্টিভ শেল শুরু করার জন্য যুক্ত করেছি, এটি অবিলম্বে স্থগিত। আমি যখন .zhenv ফাইলটি ব্যবহার করি (যা আমি আগে জানতাম না) তখন আমি আমার এলিয়াসগুলি ফিরিয়ে আনলাম!
কালেব

5

দেখে মনে হচ্ছে এটি zsh এর জন্য কাজ করে:

  • $ZDOTDIR=ডিরেক্টরিটি যেখানে .zshrcঅবস্থিত তা নিশ্চিত করুন । যেমন,export ZDOTDIR=$HOME
  • ইন .vimrc, set shell=zsh\ -iবা set shellcmdflag+=iএকই প্রভাব জন্য।

এর -iকারণ হল, যখন ইন্টারেক্টিভ মোডে শুরু করা হয় তখন জেসেল লোড হয় $ZDOTDIR/.zshrc। বিস্তারিত জানতে দেখুন man zshএবং অনুসন্ধান $ZDOTDIRকরুন।


1
হুঁ, এটি আমার জন্য একটি অদ্ভুত সমস্যা তৈরি করে: "+yএখনকার মতো সিস্টেমের ক্লিপবোর্ডে অনুলিপি করা ভিমকে সাসপেন্ড করে দেয়! superuser.com/questions/712245/…
নাথান লং

5
আমার ভিম খুললেই তা স্থগিত হয়ে যায়।
কালেব

0

আমি বিশ্বাস করি আপনি যখন থাকবেন vimএবং আপনি :!some_commandপরিবেশের ভেরিয়েবলের দ্বারা নির্ধারিত শেলটি এটি ব্যবহার করেন $SHELL

এটি কনফিগারযোগ্য, যাতে পরিবর্তে $SHELLআপনি নিজের $HOME/.vimrcফাইলটি ব্যবহার zshকরার জন্য আচরণটি ওভাররাইড করে পরিবর্তন করতে পারেন ।

:set shell
shell=/bin/bash
:set shell=zsh\ -i

অথবা আপনার .vimrcএই 2 টি লাইনের 1 টি ব্যবহার করে

 set shell=/bin/bash\ -i
 set shell=/bin/zsh\ -i

Vim সাহায্য

আরও তথ্যের জন্য :help shellভিতরে থেকে দেখুন vim

:!{cmd}                 Execute {cmd} with the shell.  See also the 'shell'
                        and 'shelltype' option.
                        Any '!' in {cmd} is replaced with the previous
                        external command (see also 'cpoptions').  But not when
                        there is a backslash before the '!', then that
                        backslash is removed.  Example: ":!ls" followed by
                        ":!echo ! \! \\!" executes "echo ls ! \!".
                        After the command has been executed, the timestamp of
                        the current file is checked timestamp.

না, যেমনটি আমি বলেছিলাম: "যদি আমি এটি করি:! ভিম কী শেল ব্যবহার করছে তা দেখতে $ 0 প্রতিধ্বনি করুন, এটি '/ বিন / জেডশ' আউটপুট দেয়"
নাথান লং

@ নাথানলং - না আমি মনে করি এটি আপনাকে বিভ্রান্ত করছে, আমার আপডেট দেখুন।
slm

@ এসএলএম ভিম এর থেকে মানটি টানছে $SHELL। সুতরাং আপনার শেল হয় /bin/bash। যদি আমার শেলটি থাকে তবে /bin/zshএটি কী ব্যবহার করবে তা জানায়।
প্যাট্রিক

0

সেটিং দ্বারা shell=/usr/bin/zsh\ -lমধ্যে .vimrcআমার সমস্যার সমাধান

বিঃদ্রঃ:

আমি ব্যবহার করছি: লিনাক্স পুদিনা 17.1


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