Ctrl-s hang terminal emulator?












276















I came across a sentence in vimdoc:



Note: CTRL-S does not work on all terminals and might block
further input, use CTRL-Q to get going again.


and this key indeed hangs my vim. I was thinking that it was the fault of vim,
since there was no problem when I use C-s/C-x C-s in emacs nox. However
just now when I was reading a manpage and pressed the Ctrl-s, it hangs man
as well(I am setting less as the PAGER).



So can someone tell me what's happening?



The terminal emulators are xterm and lxterminal, and tty also
has this problem. And a Ctrl+q puts the process right again in all the cases.










share|improve this question




















  • 6





    This might be a stupid question but you didn't mention what you have tried in your question. You tried C-q to re-enable scrolling, right?

    – h3rrmiller
    Apr 11 '13 at 15:40








  • 2





    @h3rrmiller yeah, that's right. But I just would like to know why ctrl-s cause the process to hang.

    – Hongxu Chen
    Apr 11 '13 at 15:41











  • before there were keyboards with the scroll lock key C-s and C-q were the old days "scroll lock toggle". you can disable this functionality by adding stty ixany and stty ixoff -ixon to your .bashrc

    – h3rrmiller
    Apr 11 '13 at 15:42








  • 2





    This is a nowadays stupid historical setting in terminal emulators; see this related question for how to fix your terminal.

    – Ingo Karkat
    Apr 11 '13 at 15:45






  • 1





    @IngoKarkat I wouldn't say it's stupid... I still use it from time to time

    – h3rrmiller
    Apr 11 '13 at 15:57
















276















I came across a sentence in vimdoc:



Note: CTRL-S does not work on all terminals and might block
further input, use CTRL-Q to get going again.


and this key indeed hangs my vim. I was thinking that it was the fault of vim,
since there was no problem when I use C-s/C-x C-s in emacs nox. However
just now when I was reading a manpage and pressed the Ctrl-s, it hangs man
as well(I am setting less as the PAGER).



So can someone tell me what's happening?



The terminal emulators are xterm and lxterminal, and tty also
has this problem. And a Ctrl+q puts the process right again in all the cases.










share|improve this question




















  • 6





    This might be a stupid question but you didn't mention what you have tried in your question. You tried C-q to re-enable scrolling, right?

    – h3rrmiller
    Apr 11 '13 at 15:40








  • 2





    @h3rrmiller yeah, that's right. But I just would like to know why ctrl-s cause the process to hang.

    – Hongxu Chen
    Apr 11 '13 at 15:41











  • before there were keyboards with the scroll lock key C-s and C-q were the old days "scroll lock toggle". you can disable this functionality by adding stty ixany and stty ixoff -ixon to your .bashrc

    – h3rrmiller
    Apr 11 '13 at 15:42








  • 2





    This is a nowadays stupid historical setting in terminal emulators; see this related question for how to fix your terminal.

    – Ingo Karkat
    Apr 11 '13 at 15:45






  • 1





    @IngoKarkat I wouldn't say it's stupid... I still use it from time to time

    – h3rrmiller
    Apr 11 '13 at 15:57














276












276








276


78






I came across a sentence in vimdoc:



Note: CTRL-S does not work on all terminals and might block
further input, use CTRL-Q to get going again.


and this key indeed hangs my vim. I was thinking that it was the fault of vim,
since there was no problem when I use C-s/C-x C-s in emacs nox. However
just now when I was reading a manpage and pressed the Ctrl-s, it hangs man
as well(I am setting less as the PAGER).



So can someone tell me what's happening?



The terminal emulators are xterm and lxterminal, and tty also
has this problem. And a Ctrl+q puts the process right again in all the cases.










share|improve this question
















I came across a sentence in vimdoc:



Note: CTRL-S does not work on all terminals and might block
further input, use CTRL-Q to get going again.


and this key indeed hangs my vim. I was thinking that it was the fault of vim,
since there was no problem when I use C-s/C-x C-s in emacs nox. However
just now when I was reading a manpage and pressed the Ctrl-s, it hangs man
as well(I am setting less as the PAGER).



So can someone tell me what's happening?



The terminal emulators are xterm and lxterminal, and tty also
has this problem. And a Ctrl+q puts the process right again in all the cases.







terminal vim emacs keyboard-shortcuts man






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Apr 11 '13 at 17:05









Michael Mrozek

61.6k29192211




61.6k29192211










asked Apr 11 '13 at 15:35









Hongxu ChenHongxu Chen

2,04451624




2,04451624








  • 6





    This might be a stupid question but you didn't mention what you have tried in your question. You tried C-q to re-enable scrolling, right?

    – h3rrmiller
    Apr 11 '13 at 15:40








  • 2





    @h3rrmiller yeah, that's right. But I just would like to know why ctrl-s cause the process to hang.

    – Hongxu Chen
    Apr 11 '13 at 15:41











  • before there were keyboards with the scroll lock key C-s and C-q were the old days "scroll lock toggle". you can disable this functionality by adding stty ixany and stty ixoff -ixon to your .bashrc

    – h3rrmiller
    Apr 11 '13 at 15:42








  • 2





    This is a nowadays stupid historical setting in terminal emulators; see this related question for how to fix your terminal.

    – Ingo Karkat
    Apr 11 '13 at 15:45






  • 1





    @IngoKarkat I wouldn't say it's stupid... I still use it from time to time

    – h3rrmiller
    Apr 11 '13 at 15:57














  • 6





    This might be a stupid question but you didn't mention what you have tried in your question. You tried C-q to re-enable scrolling, right?

    – h3rrmiller
    Apr 11 '13 at 15:40








  • 2





    @h3rrmiller yeah, that's right. But I just would like to know why ctrl-s cause the process to hang.

    – Hongxu Chen
    Apr 11 '13 at 15:41











  • before there were keyboards with the scroll lock key C-s and C-q were the old days "scroll lock toggle". you can disable this functionality by adding stty ixany and stty ixoff -ixon to your .bashrc

    – h3rrmiller
    Apr 11 '13 at 15:42








  • 2





    This is a nowadays stupid historical setting in terminal emulators; see this related question for how to fix your terminal.

    – Ingo Karkat
    Apr 11 '13 at 15:45






  • 1





    @IngoKarkat I wouldn't say it's stupid... I still use it from time to time

    – h3rrmiller
    Apr 11 '13 at 15:57








6




6





This might be a stupid question but you didn't mention what you have tried in your question. You tried C-q to re-enable scrolling, right?

– h3rrmiller
Apr 11 '13 at 15:40







This might be a stupid question but you didn't mention what you have tried in your question. You tried C-q to re-enable scrolling, right?

– h3rrmiller
Apr 11 '13 at 15:40






2




2





@h3rrmiller yeah, that's right. But I just would like to know why ctrl-s cause the process to hang.

– Hongxu Chen
Apr 11 '13 at 15:41





@h3rrmiller yeah, that's right. But I just would like to know why ctrl-s cause the process to hang.

– Hongxu Chen
Apr 11 '13 at 15:41













before there were keyboards with the scroll lock key C-s and C-q were the old days "scroll lock toggle". you can disable this functionality by adding stty ixany and stty ixoff -ixon to your .bashrc

– h3rrmiller
Apr 11 '13 at 15:42







before there were keyboards with the scroll lock key C-s and C-q were the old days "scroll lock toggle". you can disable this functionality by adding stty ixany and stty ixoff -ixon to your .bashrc

– h3rrmiller
Apr 11 '13 at 15:42






2




2





This is a nowadays stupid historical setting in terminal emulators; see this related question for how to fix your terminal.

– Ingo Karkat
Apr 11 '13 at 15:45





This is a nowadays stupid historical setting in terminal emulators; see this related question for how to fix your terminal.

– Ingo Karkat
Apr 11 '13 at 15:45




1




1





@IngoKarkat I wouldn't say it's stupid... I still use it from time to time

– h3rrmiller
Apr 11 '13 at 15:57





@IngoKarkat I wouldn't say it's stupid... I still use it from time to time

– h3rrmiller
Apr 11 '13 at 15:57










2 Answers
2






active

oldest

votes


















325














This feature is called Software Flow Control (XON/XOFF flow control)



When one end of the data link (in this case the terminal emulator) can't receive any more data (because the buffer is full or nearing full or the user sends C-s) it will send an "XOFF" to tell the sending end of the data link to pause until the "XON" signal is received.



What is happening under the hood is the "XOFF" is telling the TTY driver in the kernel to put the process that is sending data into a sleep state (like pausing a movie) until the TTY driver is sent an "XON" to tell the kernel to resume the process as if it were never stopped in the first place.



C-s enables terminal scroll lock. Which prevents your terminal from scrolling (By sending an "XOFF" signal to pause the output of the software).



C-q disables the scroll lock. Resuming terminal scrolling (By sending an "XON" signal to resume the output of the software).



This feature is legacy (back when terminals were very slow and did not allow scrolling) and is enabled by default.



To disable this feature you need the following in either ~/.bash_profile or ~/.bashrc:



stty -ixon





share|improve this answer





















  • 10





    Actually I think it goes at last as far back as the 70's, if not the 60's.

    – Keith
    Apr 11 '13 at 18:17











  • However it seems not working on Ubuntu 16.04.

    – Robert
    Nov 23 '17 at 2:32











  • "stty -ixon" <----- this is one of the most important things I've read on the internet in the last week. thank you.

    – Brad P.
    Jan 23 at 13:08











  • Actually, the history of this starts several decades earlier than 80's. See The TTY demystified.

    – RoboAlex
    Feb 4 at 8:41



















19














At the end of my .bashrc script I have added:



#so as not to be disturbed by Ctrl-S ctrl-Q in terminals:
stty -ixon





share|improve this answer























    Your Answer








    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "106"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f72086%2fctrl-s-hang-terminal-emulator%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    325














    This feature is called Software Flow Control (XON/XOFF flow control)



    When one end of the data link (in this case the terminal emulator) can't receive any more data (because the buffer is full or nearing full or the user sends C-s) it will send an "XOFF" to tell the sending end of the data link to pause until the "XON" signal is received.



    What is happening under the hood is the "XOFF" is telling the TTY driver in the kernel to put the process that is sending data into a sleep state (like pausing a movie) until the TTY driver is sent an "XON" to tell the kernel to resume the process as if it were never stopped in the first place.



    C-s enables terminal scroll lock. Which prevents your terminal from scrolling (By sending an "XOFF" signal to pause the output of the software).



    C-q disables the scroll lock. Resuming terminal scrolling (By sending an "XON" signal to resume the output of the software).



    This feature is legacy (back when terminals were very slow and did not allow scrolling) and is enabled by default.



    To disable this feature you need the following in either ~/.bash_profile or ~/.bashrc:



    stty -ixon





    share|improve this answer





















    • 10





      Actually I think it goes at last as far back as the 70's, if not the 60's.

      – Keith
      Apr 11 '13 at 18:17











    • However it seems not working on Ubuntu 16.04.

      – Robert
      Nov 23 '17 at 2:32











    • "stty -ixon" <----- this is one of the most important things I've read on the internet in the last week. thank you.

      – Brad P.
      Jan 23 at 13:08











    • Actually, the history of this starts several decades earlier than 80's. See The TTY demystified.

      – RoboAlex
      Feb 4 at 8:41
















    325














    This feature is called Software Flow Control (XON/XOFF flow control)



    When one end of the data link (in this case the terminal emulator) can't receive any more data (because the buffer is full or nearing full or the user sends C-s) it will send an "XOFF" to tell the sending end of the data link to pause until the "XON" signal is received.



    What is happening under the hood is the "XOFF" is telling the TTY driver in the kernel to put the process that is sending data into a sleep state (like pausing a movie) until the TTY driver is sent an "XON" to tell the kernel to resume the process as if it were never stopped in the first place.



    C-s enables terminal scroll lock. Which prevents your terminal from scrolling (By sending an "XOFF" signal to pause the output of the software).



    C-q disables the scroll lock. Resuming terminal scrolling (By sending an "XON" signal to resume the output of the software).



    This feature is legacy (back when terminals were very slow and did not allow scrolling) and is enabled by default.



    To disable this feature you need the following in either ~/.bash_profile or ~/.bashrc:



    stty -ixon





    share|improve this answer





















    • 10





      Actually I think it goes at last as far back as the 70's, if not the 60's.

      – Keith
      Apr 11 '13 at 18:17











    • However it seems not working on Ubuntu 16.04.

      – Robert
      Nov 23 '17 at 2:32











    • "stty -ixon" <----- this is one of the most important things I've read on the internet in the last week. thank you.

      – Brad P.
      Jan 23 at 13:08











    • Actually, the history of this starts several decades earlier than 80's. See The TTY demystified.

      – RoboAlex
      Feb 4 at 8:41














    325












    325








    325







    This feature is called Software Flow Control (XON/XOFF flow control)



    When one end of the data link (in this case the terminal emulator) can't receive any more data (because the buffer is full or nearing full or the user sends C-s) it will send an "XOFF" to tell the sending end of the data link to pause until the "XON" signal is received.



    What is happening under the hood is the "XOFF" is telling the TTY driver in the kernel to put the process that is sending data into a sleep state (like pausing a movie) until the TTY driver is sent an "XON" to tell the kernel to resume the process as if it were never stopped in the first place.



    C-s enables terminal scroll lock. Which prevents your terminal from scrolling (By sending an "XOFF" signal to pause the output of the software).



    C-q disables the scroll lock. Resuming terminal scrolling (By sending an "XON" signal to resume the output of the software).



    This feature is legacy (back when terminals were very slow and did not allow scrolling) and is enabled by default.



    To disable this feature you need the following in either ~/.bash_profile or ~/.bashrc:



    stty -ixon





    share|improve this answer















    This feature is called Software Flow Control (XON/XOFF flow control)



    When one end of the data link (in this case the terminal emulator) can't receive any more data (because the buffer is full or nearing full or the user sends C-s) it will send an "XOFF" to tell the sending end of the data link to pause until the "XON" signal is received.



    What is happening under the hood is the "XOFF" is telling the TTY driver in the kernel to put the process that is sending data into a sleep state (like pausing a movie) until the TTY driver is sent an "XON" to tell the kernel to resume the process as if it were never stopped in the first place.



    C-s enables terminal scroll lock. Which prevents your terminal from scrolling (By sending an "XOFF" signal to pause the output of the software).



    C-q disables the scroll lock. Resuming terminal scrolling (By sending an "XON" signal to resume the output of the software).



    This feature is legacy (back when terminals were very slow and did not allow scrolling) and is enabled by default.



    To disable this feature you need the following in either ~/.bash_profile or ~/.bashrc:



    stty -ixon






    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited Feb 12 at 19:33

























    answered Apr 11 '13 at 16:23









    h3rrmillerh3rrmiller

    9,31542238




    9,31542238








    • 10





      Actually I think it goes at last as far back as the 70's, if not the 60's.

      – Keith
      Apr 11 '13 at 18:17











    • However it seems not working on Ubuntu 16.04.

      – Robert
      Nov 23 '17 at 2:32











    • "stty -ixon" <----- this is one of the most important things I've read on the internet in the last week. thank you.

      – Brad P.
      Jan 23 at 13:08











    • Actually, the history of this starts several decades earlier than 80's. See The TTY demystified.

      – RoboAlex
      Feb 4 at 8:41














    • 10





      Actually I think it goes at last as far back as the 70's, if not the 60's.

      – Keith
      Apr 11 '13 at 18:17











    • However it seems not working on Ubuntu 16.04.

      – Robert
      Nov 23 '17 at 2:32











    • "stty -ixon" <----- this is one of the most important things I've read on the internet in the last week. thank you.

      – Brad P.
      Jan 23 at 13:08











    • Actually, the history of this starts several decades earlier than 80's. See The TTY demystified.

      – RoboAlex
      Feb 4 at 8:41








    10




    10





    Actually I think it goes at last as far back as the 70's, if not the 60's.

    – Keith
    Apr 11 '13 at 18:17





    Actually I think it goes at last as far back as the 70's, if not the 60's.

    – Keith
    Apr 11 '13 at 18:17













    However it seems not working on Ubuntu 16.04.

    – Robert
    Nov 23 '17 at 2:32





    However it seems not working on Ubuntu 16.04.

    – Robert
    Nov 23 '17 at 2:32













    "stty -ixon" <----- this is one of the most important things I've read on the internet in the last week. thank you.

    – Brad P.
    Jan 23 at 13:08





    "stty -ixon" <----- this is one of the most important things I've read on the internet in the last week. thank you.

    – Brad P.
    Jan 23 at 13:08













    Actually, the history of this starts several decades earlier than 80's. See The TTY demystified.

    – RoboAlex
    Feb 4 at 8:41





    Actually, the history of this starts several decades earlier than 80's. See The TTY demystified.

    – RoboAlex
    Feb 4 at 8:41













    19














    At the end of my .bashrc script I have added:



    #so as not to be disturbed by Ctrl-S ctrl-Q in terminals:
    stty -ixon





    share|improve this answer




























      19














      At the end of my .bashrc script I have added:



      #so as not to be disturbed by Ctrl-S ctrl-Q in terminals:
      stty -ixon





      share|improve this answer


























        19












        19








        19







        At the end of my .bashrc script I have added:



        #so as not to be disturbed by Ctrl-S ctrl-Q in terminals:
        stty -ixon





        share|improve this answer













        At the end of my .bashrc script I have added:



        #so as not to be disturbed by Ctrl-S ctrl-Q in terminals:
        stty -ixon






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Apr 11 '13 at 16:17









        Stephane RollandStephane Rolland

        1,71532437




        1,71532437






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Unix & Linux Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f72086%2fctrl-s-hang-terminal-emulator%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            How to reconfigure Docker Trusted Registry 2.x.x to use CEPH FS mount instead of NFS and other traditional...

            is 'sed' thread safe

            How to make a Squid Proxy server?