দুটি কী দিয়ে tmux বাইন্ড-কি


4

মধ্যে ~/.tmux.conf, সঙ্গে

 bind-key v split-window "vim"

আমি একটি বিভক্ত উইন্ডো ভিআইপি আরম্ভ করতে পারেন।

কিভাবে আমি একটি tmux মধ্যে দুটি কী ব্যবহার করতে পারেন bind-key ?
উদাহরণ:

 bind-key vG split-window "vim +$"

উত্তর:


5

তুমি পার না. tmux শুধুমাত্র একক কী বাইন্ডিং (একা হয়, ব্যবহার করে) bind-key -n, অথবা উপসর্গ কী অনুসরণ)।

যাইহোক, আপনি একটি ভান করার জন্য "v" বাঁধাই চেষ্টা করতে পারে command-prompt:

bind-key v command-prompt "tmux-vim.bash %%"

কোথায় tmux-vim.bash ভালো কিছু দেখায়

if [ $1 = "G" ]; then
    tmux split-window "vim +$"
fi

তারপর, কমান্ড প্রম্পট পেতে v টাইপ করার পরে, আপনি "G" টাইপ করুন এবং Enter টিপুন। "জি" যুক্তি হিসাবে পাস করা হবে tmux-vim.bash, এবং যে স্ক্রিপ্ট নির্বাহ যত্ন নিতে হবে tmux কমান্ড আপনি (মূলত) "vg" সঙ্গে যুক্ত করতে চেয়েছিলেন।



আপনি মনে করেন যে আমি এটি নিজেকে লিঙ্ক করার যথেষ্ট ভাল উত্তর মনে আছে :)
chepner

4

@ কেপনার বলেছেন, আপনি এটা করতে পারবেন না সরাসরি । আপনি কি করতে পারেন বাঁধাই করা হয় v জন্য একটি বাঁধাই তৈরি করতে G যে আপনি কি চান এবং তারপর নিজেই unbinds।

bind-key v bind-key -n G split-window "vim +$" \\; unbind -n G

এই পদ্ধতির সাথে নোট করার কয়েকটি গুরুত্বপূর্ণ বিষয় রয়েছে:

  1. এটি বিদ্যমান শীর্ষ স্তরের বাইন্ডিংগুলির সাথে বিরোধ করবে (এই ক্ষেত্রে G ); আপনি কিছু আবদ্ধ করতে চান G এবং অন্য কিছু আবদ্ধ vG আপনার unbinding পদক্ষেপ মূল বাঁধাই পুনরুদ্ধার করতে হবে।
  2. tmux যদি আপনার segfault হবে .tmux.conf একটি অন্তর্ভুক্ত bind-key বিবৃতি যে খুব দীর্ঘ। যদি এটি একটি সমস্যা হয়ে থাকে, তবে আপনি আপনার প্রসঙ্গ বিচ স্ক্রিপ্টে স্যুইচিংয়ের দ্বারা এটির চারপাশে কাজ করতে পারেন এবং তারপর সেই স্ক্রিপ্টগুলিকে চালানোর জন্য একটি কী বাঁধেন।

আরো জড়িত উদাহরণের জন্য দেখুন এই জিস্ট


0

পরলোক command-prompt অন্য উত্তরগুলিতে প্রস্তাবিত পদ্ধতিতে, আপনার একটি পৃথক উপসর্গ ব্যবহার করে ম্যাপিংয়ের দ্বিতীয় সেট থাকতে পারে:

     prefix key
         Set the key accepted as a prefix key.

     prefix2 key
         Set a secondary key accepted as a prefix key.

সুতরাং আপনি নিম্নলিখিত কাজ করতে পারে:

set -g prefix C-v
bind-key G split-window "vim +$"

মানচিত্র যাও c-v g পরিবর্তে c-b vG। নেতিবাচক দিকটি যে এটি কোনও ডিফল্ট ম্যাপিং ছায়া ফেলবে, কারণ এটিও অ্যাক্সেসযোগ্য হবে c-b g


0

উত্তর

এটির জন্য একমাত্র সঠিক সমাধান রয়েছে:

    # you can use "vim +$" as well, but I don't think that +$ prefix have any sense without the file path argument...
    bind -T multiKeyBindings G split-window "vim" 
    bind v switch-client -T multiKeyBindings

আপনি যদি কাস্টম আর্গুমেন্টগুলি পাস করার সম্ভাবনাটি চান তবে আপনাকে পরিবর্তে এটি ব্যবহার করতে হবে:

    bind -T multiKeyBindings G command-prompt 'split-window "vim %%"'
    bind v switch-client -T multiKeyBindings

আরো উদাহরণ:

    # Toggle maximizing of current pane by typing PREFIX mm 
    bind -T multiKeyBindings m resize-pane -Z
    bind m switch-client -T multiKeyBindings

    # or without PREFIX
    bind -T multiKeyBindings m resize-pane -Z
    bind -n m switch-client -T multiKeyBindings

    # rename current window by typing PREFIX mr
    bind -T multiKeyBindings r command-prompt 'rename-window %%'
    bind -n m switch-client -T multiKeyBindings

উল্লেখযোগ্য জিনিস

প্রতিটি মাল্টি কীবিন্ডিংয়ের জন্য আপনাকে একটি অনন্য কী ট্যাবলেটের নাম ব্যবহার করা উচিত। উদাহরণ:

    bind -T multiKeyBinding1 G split-window "vim"
    bind v switch-client -T multiKeyBinding1

    bind -T multiKeyBinding2 m resize-pane -Z
    bind -n m switch-client -T multiKeyBinding2
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.