আমি কীভাবে টিএমাক্সে স্ক্রোলব্যাক বাফার সাফ করতে পারি?


উত্তর:


211

এই একই প্রশ্নটি বেশ কিছুদিন ধরে আমাকে জর্জরিত করে চলেছে। আমি এখানে এসেছি সেরা। এটি আপনার .tmux.conf ফাইলে রাখুন:

bind -n C-k clear-history

এটি ctrl-k কে tmux ক্লিয়ার-ইতিহাস কমান্ডের সাথে আবদ্ধ করে। -N বাইন্ড বাইন্ড তৈরি করে যাতে আপনাকে tmux কমান্ড প্রিফিক্স (সিটিআরএল-বি ডিফল্ট) জারি করতে হবে না। আমি ব্যাশ ব্যবহার করি, সুতরাং ctrl-l ইতিমধ্যে কমান্ড লাইনে "ক্লিয়ার" টাইপের সমতুল্য কাজ করে। এই দুটি কী দিয়ে আমি একটি দুর্দান্ত ctrl-l, ctrl-k কম্বো পেয়ে যা স্ক্রোলের সমস্ত স্ক্রোল বাফার সরিয়ে দেয় ("ক্লিয়ার") এবং তারপরে সমস্ত ইতিহাস মুছে ফেলা হয় (tmux "ক্লিয়ার-ইতিহাস" কমান্ড)।

এটি পরিষ্কার করার জন্য এটি টার্মিনাল, আইটির্মস বা কনসোলের 1-কী সংমিশ্রণের মতো মোটেই সুন্দর নয়, তবে এটি সমস্ত সময় পরিষ্কার-ইতিহাসে টাইপ করার চেয়ে আরও ভাল একটি বিশ্ব।


15
খুশী হলাম। আমি bind k send-keys "clear"\; send-keys "Enter"সাফ করার অংশটির জন্য করছি , তবে অন্তর্নির্মিতটি ব্যবহার ctrl+lকরা সহজ, এবং clear-historyস্ক্রোলব্যাকের ইতিহাস থেকে মুক্তি পাওয়ার জন্য এটি একটি ভাল সংযোজন।
হেনরিক এন

1
এই বাঁধাই আমার পেনগুলি স্ক্রু করে, সমস্ত পেন থেকে সমস্ত পাঠ্য সরিয়ে দেয় এবং তাদের চারপাশের সীমানা সরিয়ে দেয়! এর সাথে কি সম্পর্কে কোনও ধারণা?
ইয়ান ভাগান

বাবা। আপনি কোন শেল প্রোগ্রাম ব্যবহার করেন? এটি কি ইতিমধ্যে সিটিআরএল + কে এর জন্য কিছু আচরণ সংজ্ঞায়িত করেছে?
juanpaco

iTerm2। সবেমাত্র দেখেছি যে ctrl + k টি ইতিমধ্যে tmux বাইন্ডিং সেট ব্যতীত এটি করে, সুতরাং এটি অবশ্যই একটি আইটার্ম 2 ম্যাপিং হওয়া উচিত।
ইয়ান ভাগান

রহস্যময়। আমি আইটিার্ম 2ও ব্যবহার করি। আমি এটি কিছু সময়ের জন্য আপডেট করেছি না, সুতরাং এটির সংস্করণ পার্থক্য হতে পারে। আমি আর সি কে আর ব্যবহার করি না, কারণ এটি আমার ভিম বাইন্ডিংগুলিতে সমস্যা সৃষ্টি করেছিল। আমি এখন সিএন ব্যবহার করি।
juanpaco

58

@ জুয়ানপাকো যেমন সঠিকভাবে বলেছেন, clear-historyস্ক্রোলব্যাক বাফার সাফ করার জন্য আদেশটি।
আমি যুক্ত করব যে একই কমান্ডের পর্দায় কী আছে তাও পরিষ্কার করতে চাই। একটি জারি send-keys -Rরিসেট (মুছে ফেলা হবে) স্ক্রিন, তাই আমি নিম্নোক্ত ব্যবহার আমার.tmux.conf

bind-key b send-keys -R \; clear-history

এটি স্ক্রিন এবং স্ক্রোলব্যাক বাফার সাফ করে।


1
Tmux ডকুমেন্টেশন থেকে সরাসরি এতে send-keys: "-আর পতাকাটি টার্মিনাল রাষ্ট্রটিকে পুনরায় সেট করার কারণ করে।" আপনার সম্ভবত কেবল আপডেট করা দরকার।
z5h

20
-আর ব্যবহারের অপূর্ণতা হ'ল আপনার বর্তমান ইনপুট-লাইনটি লুকানো হয়ে যায়, আপনি যখন Ctrl + l দিয়ে আপনার টার্মিনালটি সাফ করেন তখন থেকে আলাদা। আমি যা করেছি তা হলbind -n C-l send-keys C-l \; clear-history
ভলপেটো ২

6
আপনারা যারা জানেন না তাদের জন্য (যেমন আমি করিনি), clear-historyকমান্ডটি প্রবেশ করতে রাষ্ট্রটিতে পৌঁছে , টিপুন Ctrl+B, এবং তারপরে একটি কর্নেল ( :) দিয়ে কমান্ডটি শুরু করুন ।
পালসুইম

1
@ ভোলপাটো আমার আপনার পছন্দটি পছন্দ হয়েছে তবে আমি দেখতে পাচ্ছি যে এটি এখনও স্ক্রোলের পিছনে বাফারের একটি 'স্ক্রিন' রেখে গেছে। কেন জানি না। -আর প্রম্পটটি ফাঁকা করে দেয়, তবে আমি শেষে একটি অতিরিক্ত সেন্টিমিটার যোগ করে এটি সমাধান করেছি (তবে তারপরে এটি দ্বিতীয় লাইনে রাখে)।
Gdogg

2
আপনি এটি ঘনীভূত করতে পারেন send-keys -R C-l \; clear-history
আইভান

34

এখানে প্রতিটি উত্তর নতুন কী বাইন্ডিং যুক্ত করার বিষয়ে কথা বলে।

আপনি যদি মাঝে মাঝে এটি করতে চান তবে আপনার কোনও ম্যাপিংয়ের দরকার নেই ...

উপসর্গ ডিফল্ট <Ctrl-b>

কেবলমাত্র <prefix>:প্রাসঙ্গিক ফলকটি টাইপ করুন clear-historyএবং তারপরে টাইপ করুন এবং এন্টার টিপুন।

Tmux সম্পর্কে একটি দুর্দান্ত জিনিস হ'ল আপনি ঠিক এর মতো যে কোনও কমান্ড চালাতে পারেন tmux command... বা তাদের পছন্দ মতো শেল / স্ক্রিপ্টে চালাতে পারেন ... বা তাদের জন্য একটি কীবোর্ড শর্টকাট তৈরি করতে পারেন।


7
প্রথম তিনটি অক্ষর টাইপ করা সম্ভব হয় cleএবং তারপরে <tab>প্রথম বারের সাথে স্বতঃপূরণ হয় , তারপরে দ্বিতীয় সময়ে <up arrow>পূর্ববর্তী এন্ট্রিটি অ্যাক্সেস করতে ব্যবহার করে। এইভাবে এটি বেশ দ্রুত।
বিসিটি

1
এটি আমার পক্ষে কাজ করে না কারণ <Ctrl-b> the সিটি কী চাপার পরে আমি যখন টাইপ করা শুরু করি তখন একটি নতুন উইন্ডো তৈরি করতে সেট করা হয়।
ফ্রেমচার

@ সংশ্লেষ আমার মনে হয় আপনি ভুল বুঝেছেন - আপনি <সিটিআরএল - টিপুন চাপার পরে :এটি আপনাকে একটি ইন্টারেক্টিভ প্রম্পট দেয় - সেখানেই আপনি 'সি' টাইপ করেন
জনিআআআআআআ

21

আপনি যদি ক্লাস CTRL-L-ক্লিয়ার-ইতিহাস একত্রিত করতে চান তবে এটিতে আপনার যুক্ত করুন ~/.tmux.conf:

bind u send-keys C-l \; run-shell "sleep .3s" \; clear-history

এমনকি আপনি উদাহরণস্বরূপ কোনও মাইএসকিউএল শেল এ থাকলেও এটি কাজ করে।


1
এই সময় কাজ করে বলে মনে হচ্ছে না tail -f some.log, ঠিক আছে? এর সাথে একত্রিত করার কোনও উপায় আছে কি ctrl-Z? এটি ঠিক আছে বলে মনে হচ্ছে।
অ্যারন জিব্রাল্টার

19

আমি 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

ইতিহাস থেকে পর্দার বর্তমান পাঠ্য সাফ করতে ব্যর্থ হয়েছে - ক্লিয়ার-ইতিহাস কমান্ডটি প্রেরণ-কীগুলিতে পৃথক থ্রেডে চলতে দেখা যাচ্ছে।


5
এই পদ্ধতির সাথে একটি সতর্কতা রয়েছে এবং এটি কেবল স্থানীয় শেলগুলিতে কাজ করে, কারণ এটি সক্রিয় ফলকে লেখার জন্য স্ট্রিং হিসাবে tmux স্পষ্ট-ইতিহাস প্রেরণ করে। আমি এটিকে রূপান্তর করেছি:bind-key E send-keys "C-k" \; send-keys "C-u" \; send-keys "clear" \; send-keys "Enter" \; run-shell "sleep .3s; tmux clear-history"
সান্তি পি।

12

সবচেয়ে সহজ উপায়, আমি সবেমাত্র একটি শেল স্ক্রিপ্ট তৈরি করেছি cls এবং যখনই আমি আমার স্ক্রিন এবং স্ক্রোলব্যাক বাফার সাফ করতে চাই তখন এটি চালান।

সবই এটি:

CLS

clear;
tmux clear-history;

3
তবে যদি আপনার কমান্ড লাইনে অ্যাক্সেস না থাকে। যেমন যখন কোনও সার্ভার চলছে এবং আপনি লগগুলি দেখছেন।
zudduz

আপনি কোথা থেকে লগ দেখতে হবে? একটি ওয়েব সার্ভারের ওপরে? যদি তাই হয়, তবে আমি কেন পাই না যে টিএমএক্স জড়িত?
ব্র্যাড পার্কস

1
সার্ভার লগগুলি এবং আপনার ভিআইএম সম্পাদক একই সাথে দেখতে সক্ষম হওয়ায় খুব ভাল।
zudduz

আপনি কি tmux বিভক্ত ব্যবহার করেন? যদি তা না হয় তবে কেবল আপনার উইন্ডোটি 2 তে বিভক্ত করুন এবং একটিতে আপনার লগগুলি দেখুন এবং অন্যটিতে ভিএম ব্যবহার করুন আপনার টিএমউक्स সেশনের ভিতরে "tmux বিভাজন" চালিয়ে ... তবে সম্ভবত আপনি যা করছেন তা পাচ্ছি না?
ব্র্যাড পার্কগুলি

10

এটি TMUX 2.6 এ স্ক্রিনব্যাক, স্ক্রোলব্যাক সাফ করার পরে সবচেয়ে ভাল কাজ করে তবে প্রম্পটটি পরে প্রদর্শিত হবে।

Ctrl-L ব্যবহার করে

bind-key -n C-l send-keys C-l \; send-keys -R \; clear-history

6

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 বিকল্পটি চালু থাকতে হবে (এটি এটি ডিফল্টরূপে)।


3

আমি উপরোক্ত কিছু প্লাস অন্যান্য উত্সগুলি ব্যবহার করার জন্য ব্যবহার করেছি:

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 ব্যতীত সত্যিকারের সিআরটিএল-কে সমস্যা নেই যদি আপনি বর্তমানে প্রম্পটে কিছু টাইপ করেন এবং স্ক্রিন সাফ করার সময় আপনি যা টাইপ করেছেন তা সংরক্ষণ করবে। উল্লিখিত হিসাবে, এই পদ্ধতির কী টাইপ হয়েছে তা পরিষ্কার করা দরকার যাতে "ক্লিয়ার ..." কমান্ড ব্যর্থ হয় না। তবে এটা খুব খারাপ!


2

কেন না? bind -n C-l send-keys C-l


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

2
প্রথমত, এটি প্রয়োজনীয় নয়: -n C-lমূলত 'এটিকে ধর' বলে এবং তারপরে আপনি তত্ক্ষণাত্ সেই একই জিনিসটি অতিক্রম করছেন। (উদাহরণস্বরূপ, এটি কোনও অপশন নেই)… দ্বিতীয়ত, আপনার উদ্দেশ্য বন্ধ রয়েছে, কারণ স্ক্রোলটি ⌃Lসাফ করে , পিছনে স্ক্রোলটি না: আপনি যদি আঘাত করেন ⌃B [এবং তারপরে স্ক্রোল আপ করেন তবে আপনি দেখতে পাবেন যে সমস্ত স্ক্রোলব্যাক এখনও রেকর্ড করা আছে; এই প্রশ্নের লক্ষ্যটি স্পষ্ট করা (tmux এর) স্ক্রোলব্যাক, দৃশ্যমান টার্মিনাল নয় clear
এলিওটিটিসিবল

2

অনেক গবেষণা এবং সময় ব্যয় করার পরে। আমি 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

2

স্বতন্ত্র tmux প্যানগুলি সাফ করার জন্য দ্রুত ফিক্সের জন্য আপনি একটি উপন্যাস সেট আপ করতে পারেন ...

# Tmux Clear pane
alias tc='clear; tmux clear-history; clear'

1

সুতরাং, আমি কিছুক্ষণের জন্য উপর থেকে প্লুর পদ্ধতির ব্যবহার করছি , তবে আমি এর সীমাবদ্ধতায় বিরক্ত হয়ে পড়েছি (মূলত, কোনও প্রোগ্রামে পাইপ না করা যদি না হয় তবে তা অর্থহীন))⌃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}'

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