8.7. Command-Line Manipulation
csh and tcsh
offer a certain amount of functionality in manipulating the command
line. Both shells offer word or command completion, and
tcsh allows you to edit
a command line.
8.7.1. Completion
Both tcsh and
csh provide word completion.
tcsh
automatically completes words and commands when the Tab key is
hit; csh does so only when the
filec variable is set, after the Esc key is hit. If the
completion is ambiguous (i.e.,
more than one file matches the provided string), the shell
completes as much as possible and beeps to notify you that the
completion is not finished. You may request a list of possible
completions with Ctrl-D.
tcsh also notifies you when a
completion is finished by appending a space to complete filenames or
commands and a / to complete directories.
Both csh and
tcsh recognize
~ notation for home directories. The shells
assume that words at the beginning of a line and subsequent to
|, &,
;,
||, or
&& are commands and modify
their search paths appropriately. Completion can be done midword; only
the letters to the left of the prompt are checked for completion.
8.7.2. Related Shell Variables
autolist fignore listmax listmaxrows
8.7.3. Related Command-Line Editor Commands
complete-word-back complete-word-forward expand-glob list-glob
8.7.4. Related Shell Built-ins
8.7.5. Command-Line Editing with tcsh
tcsh
lets you move your cursor around in the command line, editing the line as
you type. There are two main modes for editing the command line,
based on the two most common text editors: Emacs and vi. Emacs mode is the default; you can switch
between the modes with:
bindkey -e Select Emacs bindings
bindkey -v Select vi bindings
The main difference between the Emacs and
vi bindings
is that the Emacs bindings are modeless (i.e., they
always work). With the vi bindings,
you must switch between insert and command modes; different commands
are useful in each mode. Additionally:
Emacs mode is simpler; vi mode allows
finer control. Emacs mode allows you to yank cut text and set a mark;
vi mode does not. The command-history-searching capabilities differ.
8.7.5.1. Emacs mode
Table 8-1 through Table 8-3 describe the various editing keystrokes available
in Emacs mode.
Table 8-1. Cursor Positioning Commands (Emacs Mode)
Command |
Description
|
Ctrl-B |
Move cursor back (left) one character. |
Ctrl-F |
Move cursor forward (right) one character. |
Esc b |
Move cursor back one word. |
Esc f |
Move cursor forward one word. |
Ctrl-A |
Move cursor to beginning of line. |
Ctrl-E |
Move cursor to end of line. |
Table 8-2. Text Deletion Commands (Emacs Mode)
Command |
Description
|
Del or Ctrl-H |
Delete character to left of cursor. |
Ctrl-D |
Delete character under cursor. |
Esc d |
Delete word. |
Esc Del or Esc Ctrl-H |
Delete word backward. |
Ctrl-K |
Delete from cursor to end-of-line. |
Ctrl-U |
Delete entire line. |
Table 8-3. Command Control (Emacs Mode)
Command |
Description
|
Ctrl-P |
Previous command. |
Ctrl-N |
Next command. |
Up arrow |
Previous command. |
Down arrow |
Next command. |
cmd-fragment Esc p |
Search history for cmd-fragment, which must be the beginning of
a command. |
cmd-fragment Esc n |
Like Esc p, but search forward. |
Esc num |
Repeat next command num times. |
Ctrl-Y |
Yank previously deleted string. |
8.7.5.2. vi mode
vi mode has two submodes, insert mode and command mode. The default mode
is insert. You can toggle modes by pressing Esc; alternatively, in command mode,
typing a (append) or i (insert) will return you to insert mode.
Tables 8-4 through 8-10 describe the editing keystrokes available in
vi mode.
Table 8-4. Commands Available (vi's Insert and Command Mode)
Command |
Description
|
Ctrl-P |
Previous command |
Ctrl-N |
Next command |
Up arrow |
Previous command |
Down arrow |
Next command |
Esc |
Toggle mode |
Table 8-5. Editing Commands (vi Insert Mode)
Command |
Description
|
Ctrl-B |
Move cursor back (left) one character. |
Ctrl-F |
Move cursor forward (right) one character. |
Ctrl-A |
Move cursor to beginning of line. |
Ctrl-E |
Move cursor to end-of-line. |
DEL or Ctrl-H |
Delete character to left of cursor. |
Ctrl-W |
Delete word backward. |
Ctrl-U |
Delete from beginning of line to cursor. |
Ctrl-K |
Delete from cursor to end-of-line. |
Table 8-6. Cursor Positioning Commands (vi Command Mode)
Command |
Description
|
h or Ctrl-H |
Move cursor back (left) one character. |
l or SPACE |
Move cursor forward (right) one character. |
w |
Move cursor forward (right) one word. |
b |
Move cursor back (left) one word. |
e |
Move cursor to next word ending. |
W, B,
E |
Like w, b, and e, but treat just whitespace as word
separator instead of any non-alphanumeric character. |
^ or Ctrl-A |
Move cursor to beginning of line (first nonwhitespace character). |
0 |
Move cursor to beginning of line. |
$ or Ctrl-E |
Move cursor to end-of-line. |
Table 8-7. Text Insertion Commands (vi Command Mode)
Command |
Description
|
a |
Append new text after cursor until Esc. |
i |
Insert new text before cursor until Esc. |
A |
Append new text after end of line until Esc. |
I |
Insert new text before beginning of line until Esc. |
Table 8-8. Text Deletion Commands (vi Command Mode)
Command |
Description
|
x |
Delete character under cursor. |
X or Del |
Delete character to left of cursor. |
dm |
Delete from cursor to end of motion command m. |
D |
Same as d$. |
Ctrl-W |
Delete word backward. |
Ctrl-U |
Delete from beginning of line to cursor. |
Ctrl-K |
Delete from cursor to end of line. |
Table 8-9. Text Replacement Commands (vi Command Mode)
Command |
Description
|
cm |
Change characters from cursor to end of motion command m until Esc. |
C |
Same as c$. |
rc |
Replace character under cursor with character c. |
R |
Replace multiple characters until Esc. |
s |
Substitute character under cursor with characters typed until Esc.
|
Table 8-10. Character-Seeking Motion Commands (vi Command Mode)
Command |
Description
|
fc |
Move cursor to next instance of c in line. |
Fc |
Move cursor to previous instance of c in line. |
tc |
Move cursor just before next instance of c in line. |
Tc |
Move cursor just after previous instance of c in line. |
; |
Repeat previous f or F command. |
, |
Repeat previous f or F command in opposite direction. |
| | | 8.6. Command History | | 8.8. Job Control |
Copyright © 2001 O'Reilly & Associates. All rights reserved.
|
|