এফওয়াইআই, আমি ম্যাক ওএস এক্স টার্মিনাল অ্যাপের মাধ্যমে টিমাক্স ব্যবহার করছি।
এফওয়াইআই, আমি ম্যাক ওএস এক্স টার্মিনাল অ্যাপের মাধ্যমে টিমাক্স ব্যবহার করছি।
উত্তর:
এই একই প্রশ্নটি বেশ কিছুদিন ধরে আমাকে জর্জরিত করে চলেছে। আমি এখানে এসেছি সেরা। এটি আপনার .tmux.conf ফাইলে রাখুন:
bind -n C-k clear-history
এটি ctrl-k কে tmux ক্লিয়ার-ইতিহাস কমান্ডের সাথে আবদ্ধ করে। -N বাইন্ড বাইন্ড তৈরি করে যাতে আপনাকে tmux কমান্ড প্রিফিক্স (সিটিআরএল-বি ডিফল্ট) জারি করতে হবে না। আমি ব্যাশ ব্যবহার করি, সুতরাং ctrl-l ইতিমধ্যে কমান্ড লাইনে "ক্লিয়ার" টাইপের সমতুল্য কাজ করে। এই দুটি কী দিয়ে আমি একটি দুর্দান্ত ctrl-l, ctrl-k কম্বো পেয়ে যা স্ক্রোলের সমস্ত স্ক্রোল বাফার সরিয়ে দেয় ("ক্লিয়ার") এবং তারপরে সমস্ত ইতিহাস মুছে ফেলা হয় (tmux "ক্লিয়ার-ইতিহাস" কমান্ড)।
এটি পরিষ্কার করার জন্য এটি টার্মিনাল, আইটির্মস বা কনসোলের 1-কী সংমিশ্রণের মতো মোটেই সুন্দর নয়, তবে এটি সমস্ত সময় পরিষ্কার-ইতিহাসে টাইপ করার চেয়ে আরও ভাল একটি বিশ্ব।
bind k send-keys "clear"\; send-keys "Enter"
সাফ করার অংশটির জন্য করছি , তবে অন্তর্নির্মিতটি ব্যবহার ctrl+l
করা সহজ, এবং clear-history
স্ক্রোলব্যাকের ইতিহাস থেকে মুক্তি পাওয়ার জন্য এটি একটি ভাল সংযোজন।
@ জুয়ানপাকো যেমন সঠিকভাবে বলেছেন, clear-history
স্ক্রোলব্যাক বাফার সাফ করার জন্য আদেশটি।
আমি যুক্ত করব যে একই কমান্ডের পর্দায় কী আছে তাও পরিষ্কার করতে চাই। একটি জারি send-keys -R
রিসেট (মুছে ফেলা হবে) স্ক্রিন, তাই আমি নিম্নোক্ত ব্যবহার আমার.tmux.conf
bind-key b send-keys -R \; clear-history
এটি স্ক্রিন এবং স্ক্রোলব্যাক বাফার সাফ করে।
send-keys
: "-আর পতাকাটি টার্মিনাল রাষ্ট্রটিকে পুনরায় সেট করার কারণ করে।" আপনার সম্ভবত কেবল আপডেট করা দরকার।
bind -n C-l send-keys C-l \; clear-history
clear-history
কমান্ডটি প্রবেশ করতে রাষ্ট্রটিতে পৌঁছে , টিপুন Ctrl+B
, এবং তারপরে একটি কর্নেল ( :
) দিয়ে কমান্ডটি শুরু করুন ।
send-keys -R C-l \; clear-history
।
এখানে প্রতিটি উত্তর নতুন কী বাইন্ডিং যুক্ত করার বিষয়ে কথা বলে।
আপনি যদি মাঝে মাঝে এটি করতে চান তবে আপনার কোনও ম্যাপিংয়ের দরকার নেই ...
উপসর্গ ডিফল্ট <Ctrl-b>
কেবলমাত্র <prefix>:
প্রাসঙ্গিক ফলকটি টাইপ করুন clear-history
এবং তারপরে টাইপ করুন এবং এন্টার টিপুন।
Tmux সম্পর্কে একটি দুর্দান্ত জিনিস হ'ল আপনি ঠিক এর মতো যে কোনও কমান্ড চালাতে পারেন tmux command
... বা তাদের পছন্দ মতো শেল / স্ক্রিপ্টে চালাতে পারেন ... বা তাদের জন্য একটি কীবোর্ড শর্টকাট তৈরি করতে পারেন।
cle
এবং তারপরে <tab>
প্রথম বারের সাথে স্বতঃপূরণ হয় , তারপরে দ্বিতীয় সময়ে <up arrow>
পূর্ববর্তী এন্ট্রিটি অ্যাক্সেস করতে ব্যবহার করে। এইভাবে এটি বেশ দ্রুত।
<Ctrl-b> the
সিটি কী চাপার পরে আমি যখন টাইপ করা শুরু করি তখন একটি নতুন উইন্ডো তৈরি করতে সেট করা হয়।
:
এটি আপনাকে একটি ইন্টারেক্টিভ প্রম্পট দেয় - সেখানেই আপনি 'সি' টাইপ করেন
আপনি যদি ক্লাস CTRL-L
-ক্লিয়ার-ইতিহাস একত্রিত করতে চান তবে এটিতে আপনার যুক্ত করুন ~/.tmux.conf
:
bind u send-keys C-l \; run-shell "sleep .3s" \; clear-history
এমনকি আপনি উদাহরণস্বরূপ কোনও মাইএসকিউএল শেল এ থাকলেও এটি কাজ করে।
tail -f some.log
, ঠিক আছে? এর সাথে একত্রিত করার কোনও উপায় আছে কি ctrl-Z
? এটি ঠিক আছে বলে মনে হচ্ছে।
আমি send-keys -R
কিছুটা ধীর হয়ে গিয়েছিলাম - একক কমান্ড দিয়ে পর্দা এবং ইতিহাস সাফ করার আরও একটি উপায় এখানে here
bind-key C send-keys "clear && tmux clear-history" \; send-keys "Enter"
আরও স্পষ্ট হিসাবে একটি নেস্টেড tmux কল ব্যবহৃত হয়
bind-key C send-keys "clear" \; send-keys "Enter" \; clear-history
ইতিহাস থেকে পর্দার বর্তমান পাঠ্য সাফ করতে ব্যর্থ হয়েছে - ক্লিয়ার-ইতিহাস কমান্ডটি প্রেরণ-কীগুলিতে পৃথক থ্রেডে চলতে দেখা যাচ্ছে।
bind-key E send-keys "C-k" \; send-keys "C-u" \; send-keys "clear" \; send-keys "Enter" \; run-shell "sleep .3s; tmux clear-history"
সবচেয়ে সহজ উপায়, আমি সবেমাত্র একটি শেল স্ক্রিপ্ট তৈরি করেছি cls
এবং যখনই আমি আমার স্ক্রিন এবং স্ক্রোলব্যাক বাফার সাফ করতে চাই তখন এটি চালান।
সবই এটি:
CLS
clear;
tmux clear-history;
এটি TMUX 2.6 এ স্ক্রিনব্যাক, স্ক্রোলব্যাক সাফ করার পরে সবচেয়ে ভাল কাজ করে তবে প্রম্পটটি পরে প্রদর্শিত হবে।
Ctrl-L ব্যবহার করে
bind-key -n C-l send-keys C-l \; send-keys -R \; clear-history
Ctrl-L স্ক্রিনটি পুনরায় আঁকতে কনসোল অ্যাপ্লিকেশনগুলিতে ব্যবহৃত হয়। আমি এটি আবদ্ধ যখন খুঁজেsend-keys -R
এটিতে সাথে কিছু অ্যাপ্লিকেশনগুলিতে (যেমন, ভিআইএম, এমসি) সঠিকভাবে আর্য কীগুলি কাজ করবে না।
কনসোল অ্যাপ্লিকেশনগুলিতে পুনরায় আঁকার কার্যকারিতা ধরে রাখতে, আমি ব্যবহার করেছি:
bind-key -n C-l if-shell -F '#{alternate_on}' 'send-keys C-l' 'send-keys -R C-l; clear-history'
alternate-screen
এটিতে tmux বিকল্পটি চালু থাকতে হবে (এটি এটি ডিফল্টরূপে)।
আমি উপরোক্ত কিছু প্লাস অন্যান্য উত্সগুলি ব্যবহার করার জন্য ব্যবহার করেছি:
bind k send-keys C-u \; send-keys C-k \; send-keys " clear && tmux clear-history" \; send-keys "Enter" \; run-shell "sleep .3s" \; send-keys "Up" \; send-keys C-u
"ক্লিয়ার অ্যান্ড অ্যান্ড টিমাক্স ক্লিয়ার-হিস্ট্রি" শীর্ষস্থানীয় স্থান হিস্ট্রি ফাইলটিতে কমান্ডটি রচনা করা থেকে বাধা দেয় (আপনার শেল সেটআপটি এইভাবে শীর্ষস্থানীয় স্থানগুলির চিকিত্সার জন্য সরবরাহ করে; গুগল "হিস্ট স্পেস উপেক্ষা করুন" + আপনার শেলের নাম আরও বেশি তথ্য)। টার্মিনালে ctrl-k এর সাথে এটি আরও ইনলাইন হওয়ায় আমি এই কমান্ডটি আমার ইতিহাসে প্রদর্শিত না হতে চাই।
"ক্লিয়ার && tmux ক্লিয়ার-ইতিহাস" সফল হয়েছে তা নিশ্চিত করার জন্য প্রম্পটে বর্তমানে যা টাইপ করা হয়েছে তা প্রথম প্রেরণ-কী সিউ এবং প্রেরণ-কী সি কে পরিষ্কার করবে (যেমন, আপনি যদি প্রম্পটে "ABCDEFG" টাইপ করেছেন এবং ডি এবং ই এর মধ্যে আপনার কার্সারটি এটি নিশ্চিত করে যে "এবিসিডি ক্লিয়ার অ্যান্ড & tmux ক্লিয়ার-হিস্টোরিএফজি" শেলের কাছে প্রেরণ করা হয়নি যা ব্যর্থ হবে)।
প্রেরণ-কীগুলি "আপ" এবং সর্বশেষ প্রেরণ কীগুলি আপনার শাঁসের অভ্যন্তরীণ ইতিহাস থেকে শেষ আইটেমগুলি সাফ করে। এমনকি শেলের অভ্যন্তরীণ ইতিহাসের উপরে উল্লিখিত পিছনের স্থানের সাথে "সাফ ..." লাইন অন্তর্ভুক্ত থাকবে। পাঠানো হচ্ছে এবং Ctrl-u এ থেকে মুক্তি পাবে।
শেষ অবধি, আইটিআরমে আমি সিটিআরএল-কে সেট করলাম মানচিত্রের জন্য সিটিআরএল-এ-কে (আমার টিএমউक्स উপসর্গটি সিটিআরএল-এ সেট করা আছে), তাই আমি সিটিআরএল-কে টাইপ করতে পারি যা আমার হাতগুলি এত বছর যা করতে চেয়েছিল তা করতে চায় তাই। আমি এটি করেছি, আইটিআরএম> পছন্দসমূহ> প্রোফাইল> কীগুলিতে গিয়ে এবং হেক্স কোড "0x01 0x6B" প্রেরণে একটি শর্টকাট যুক্ত করে। এখানে একটি দুর্দান্ত নিবন্ধ রয়েছে যা tmux এবং iTerm সহ হেক্স কোড ব্যবহারের বিষয়ে আরও তথ্য দেয়: http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/
এটি বেশিরভাগ tmux সহ আমাকে ctrl-k দেয়। আমার কাছে এখনও কৃপা করার একমাত্র জিনিসটি হ'ল tmux ব্যতীত সত্যিকারের সিআরটিএল-কে সমস্যা নেই যদি আপনি বর্তমানে প্রম্পটে কিছু টাইপ করেন এবং স্ক্রিন সাফ করার সময় আপনি যা টাইপ করেছেন তা সংরক্ষণ করবে। উল্লিখিত হিসাবে, এই পদ্ধতির কী টাইপ হয়েছে তা পরিষ্কার করা দরকার যাতে "ক্লিয়ার ..." কমান্ড ব্যর্থ হয় না। তবে এটা খুব খারাপ!
কেন না? bind -n C-l send-keys C-l
-n C-l
মূলত 'এটিকে ধর' বলে এবং তারপরে আপনি তত্ক্ষণাত্ সেই একই জিনিসটি অতিক্রম করছেন। (উদাহরণস্বরূপ, এটি কোনও অপশন নেই)… দ্বিতীয়ত, আপনার উদ্দেশ্য বন্ধ রয়েছে, কারণ স্ক্রোলটি ⌃L
সাফ করে , পিছনে স্ক্রোলটি না: আপনি যদি আঘাত করেন ⌃B [
এবং তারপরে স্ক্রোল আপ করেন তবে আপনি দেখতে পাবেন যে সমস্ত স্ক্রোলব্যাক এখনও রেকর্ড করা আছে; এই প্রশ্নের লক্ষ্যটি স্পষ্ট করা (tmux এর) স্ক্রোলব্যাক, দৃশ্যমান টার্মিনাল নয় clear
অনেক গবেষণা এবং সময় ব্যয় করার পরে। আমি zsh এবং টার্মিনাল.এপ এ আমার জন্য সবচেয়ে ভাল উপায় খুঁজে পেয়েছি
আমি prefix-c
পর্দা সাফ করতে ব্যবহার করছি এবংprefix-C
জন্য এবং ইতিহাস এবং স্ক্রোল বাফারটি সাফ করার জন্য এবং উপরে কোনও রেখা ছাড়ছি না কারণ আমি এটিকে বিরক্তিকর বলে মনে করি।
# clear screen
bind c send-keys 'C-l'
# clear screen and history
bind C send-keys -R \; send-keys C-l \; clear-history \; send-keys
# check if the pane is running vim
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \ | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
# clear screen
bind c if-shell "$is_vim" "send-keys c" "send-keys 'C-l'"
# clear screen and history
bind C send-keys -R \; send-keys C-l \; clear-history \; send-keys
সুতরাং, আমি কিছুক্ষণের জন্য উপর থেকে প্লুর পদ্ধতির ব্যবহার করছি , তবে আমি এর সীমাবদ্ধতায় বিরক্ত হয়ে পড়েছি (মূলত, কোনও প্রোগ্রামে পাইপ না করা যদি না হয় তবে তা অর্থহীন))⌃L
সুতরাং আমি এই থ্রেডের বিভিন্ন উত্তরে বিভিন্ন পদ্ধতির উপরে উন্নতি করেছি; জটিল হলেও, এই পদ্ধতির দুটি শেল এবং অন্যান্য কমান্ডের সাথে কাজ করে :
# ⌃K: Clears the current pane (from <https://stackoverflow.com/a/34162098>)
bind-key -n C-k \
if-shell "test \"$(printf '#{pane_current_command}' | tail -c 2)\" = sh" \
"send-keys C-l ; run-shell 'sleep .3s' ; clear-history" \
"split-window -vp 100 ; clear-history -t ! ; kill-pane"
এটি দিয়ে চেষ্টা করুন tail -f /private/var/log/system.log
বা কিছু!
এখানে একটি গুরুত্বপূর্ণ নোট রয়েছে: এটি অদৃশ্যভাবে ফলকটি সাফ হয়ে যাওয়ার আকারটি পরিবর্তন করছে, যদি এটি শেল না হয়। এটি কিছু কমান্ড-লাইন অ্যাপ্লিকেশনগুলিতে শোনার জন্য আকার পরিবর্তনকে ট্রিগার করতে পারে SIGWINCH
; তবে আমার যুক্তিটি হ'ল এটি কোনও বড় সমস্যা নয়, কারণ এগুলি এমন প্রোগ্রাম যা আপনি সম্ভবত সম্ভবত 'পরিষ্কার' করার চেষ্টা করছেন না ।
তদ্ব্যতীত, শেল-উদ্ধৃতি পরিস্থিতি ইতিমধ্যে একটি জগাখিচুড়ি এবং এম্বেড করার সময় সহজেই একের বেশি হয়ে উঠতে #{pane_current_command}
পারে, তাই সাবধানতা অবলম্বন করুন, আপনার উপর ভিত্তি করে আপনাকে এটি সংশোধন করতে হতে পারেdefault-command
সেটিংয়ের ।
একই কমান্ডের মিলের শেষের পরীক্ষার ক্ষেত্রেও এটি প্রযোজ্য "sh"
; আপনি একটি আছে default-command
মত কিছু /bin/bash --login
বা কিছু জটিল জড়িত exec
, প্রকৃত কমান্ড দিয়ে শেষ হতে পারে "sh"
; আপনি কি পরীক্ষা করতে চান তা দেখতে চাইলে ⌃B :
এক্সিকিউট করতে ব্যবহার করুন display-message '#{pane_current_command}'
।