On 08/25/2011 10:02 PM, Steve Jones wrote: > Since I finally got a "round tuit", I've been studying readline. The > inputrc file in the current book has gotten a bit long in the tooth. > Some of the settings are now the default and readline uses better > defaults and also uses termcap to map certain keys in different > terminals. Here is the current LFS inputrc file with my comments. > >> # Begin /etc/inputrc >> # Modified by Chris Lynn<[email protected]> >> >> # Allow the command prompt to wrap to the next line >> set horizontal-scroll-mode Off > This is now the default setting. It is redundant. > >> # Enable 8bit input >> set meta-flag On >> set input-meta On > These are the same thing, setting one sets both. > >> # Turns off 8th bit stripping >> set convert-meta Off >> >> # Keep the 8th bit for display >> set output-meta On > Nothing wrong here. > >> # none, visible or audible >> set bell-style none > Since this one is a personal preference how about leaving it in but > commented out. > >> # All of the following map the escape sequence of the >> # value contained inside the 1st argument to the >> # readline specific functions >> >> "\eOd": backward-word >> "\eOc": forward-word > These are by default mapped to backward-char and forward-char. What are > these keys? The only clue is a comment in the code about common arrow > keys. Does anybody really want some special keyboard to use the arrow > keys differently. Meta-b and Meta-f already do these. > >> # for linux console >> "\e[1~": beginning-of-line > Default one linux terminal. > >> "\e[4~": end-of-line > Default one linux terminal. > >> "\e[5~": beginning-of-history >> "\e[6~": end-of-history > These two are needed. > >> "\e[3~": delete-char > Default one linux terminal. > >> "\e[2~": quoted-insert > Use the INSERT key for quoted-insert. I think overwrite-mode is a > better default. quoted-insert already has 2 default key sequences. > >> # for xterm >> "\eOH": beginning-of-line >> "\eOF": end-of-line > Readline already does the right thing here in xterm. > >> # for Konsole >> "\e[H": beginning-of-line >> "\e[F": end-of-line > I don't use Konsole but the readline does these also. > >> # End /etc/inputrc > Here is my new inputrc file. I've gone to a lot of effort to find out > exactly what readline really does in the default case without any inputrc > file. Since LFS doesn't use emacs and I don't either, this is set up > for vi mode, but includes commands to switch back and forth. All the > info on the web about readline and the inputrc file is old and does not > really explain what readline is really doing with these commands. > > NOTE: There are some bash specific bindable functions that are bound by > default in emacs mode but are not bound at all in vi mode while others > are bound. > >> # Begin ~/.inputrc >> # By Steve Jones<[email protected]> >> >> # Set these for modern 8bit terminals. >> set input-meta On >> set convert-meta Off >> set output-meta On >> >> # none, visible or audible >> set bell-style audible >> >> # Don't match hidden files on tab complete. >> set match-hidden-files Off >> >> # Set emacs mode, even though it is the default before setting the keymap. >> set editing-mode emacs >> # Although emacs mode has 3 different keymaps, they are all >> # concatenated together, so we only need to set stuff in one keymap. >> set keymap emacs >> # Use this to see the editing mode and keymap. >> "\e\C-v": dump-variables >> # Change to vi mode. >> "\e\C-j": vi-editing-mode >> # Change to overwrite. Changes back to insert after new line. >> "\e[2~": overwrite-mode # INSERT >> # Use Page-Up/Down to help navigate history. >> "\e[5~": beginning-of-history # PAGE-UP >> "\e[6~": end-of-history # PAGE-DOWN >> # Set forward-search-history to M-C-s since \C-s is >> # caught by the kernel to stop the terminal. >> "\e\C-s": forward-search-history >> $if term=linux >> # These do not work in {E,x}term, Caught by e16. >> "\e\C-f": dump-functions # Ctr-Alt-f >> "\e\C-m": dump-macros >> "\e\C-r": re-read-init-file >> $endif >> $if bash >> # F1: Get the man 1 page for the command on the line. >> # Remove any options that may still be there. >> # NOTE: This does not work correctly on commands that >> # contain dashes (-) or other word brake characters in >> # their name. >> "\e[[A": "\C-aman 1 \ef\C-k\C-m" >> $endif >> >> # Set vi editing mode and leave it as the mode to use. >> set editing-mode vi >> # Since the vi keymaps are different, we need different mappings for >> # each. >> set keymap vi-insert >> "\C-l": clear-screen # CTRL-L >> "\e\C-v": dump-variables >> # Change to emacs mode. >> "\e\C-j": emacs-editing-mode >> # Overstrike in vi-insert. >> "\e[2~": vi-replace # Insert >> "\e[3~": vi-delete # Delete >> # Use Page-Up/Down to help navigate history. >> "\e[5~": beginning-of-history # PAGE-UP >> "\e[6~": end-of-history # PAGE-DOWN >> # Set forward-search-history to M-C-s since \C-s is >> # caught by the kernel to stop the terminal. >> "\e\C-s": forward-search-history >> $if term=linux >> # These do not work in {E,x}term, Caught by e16. >> "\e\C-f": dump-functions # Ctr-Alt-f >> "\e\C-m": dump-macros >> "\e\C-r": re-read-init-file >> $endif >> $if bash >> # F1: Get the man 1 page for the command on the line. >> # Remove any options that may still be there. >> # NOTE: If there is no trailing space on a command with >> # no options, the `a' command complains with a bell. >> "\e[[A": "\e0iman 1 \eEa \ed$\C-m" >> $endif >> >> set keymap vi-command >> "\e\C-v": dump-variables >> "\e\C-j": emacs-editing-mode >> # Change to vi-insert mode. >> "\e[2~": vi-editing-mode # Insert >> # Use Page-Up/Down to help navigate history. >> "\e[5~": beginning-of-history # PAGE-UP >> "\e[6~": end-of-history # PAGE-DOWN >> # Set forward-search-history to M-C-s since \C-s is >> # caught by the kernel to stop the terminal. >> "\e\C-s": forward-search-history >> $if term=linux >> # These do not work in {E,x}term, Caught by e16. >> "\e\C-f": dump-functions # Ctr-Alt-f >> "\e\C-m": dump-macros >> "\e\C-r": re-read-init-file >> $endif >> $if bash >> # F1: Get the man 1 page for the command on the line. >> # Remove any options that may still be there. >> # NOTE: If there is no trailing space on a command with >> # no options, the `a' command complains with a bell. >> "\e[[A": "0iman 1 \eEa \ed$\C-m" >> $endif >> >> # End ~/.inputrc > I also have built an authoritative inputrc file, one with all the variables > and bindable functions for readline with the bash add ons. Also all the > default keymaps are included. Not all the functions or variables are > documented, What I could find and so far figure out from reading the > code is included. If anyone is interested I can post it later (2233 > lines long). > Looks good to me! And I'm interested in good documentation about these things. The existing inputrc is indeed very basic, and knowing what is possible is always a plus!
Stef -- http://linuxfromscratch.org/mailman/listinfo/lfs-chat FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page
