8.7 Command-Line Manipulation
tcsh offers a certain amount of
functionality in manipulating the command line, including word or
command completion and the ability to edit a command line.
8.7.1 Completion
The shell automatically completes
words and commands when you press the Tab key, and notifies you when
a completion is finished by appending a space to complete filenames
or commands and a / to complete
directories.
In addition, tcsh recognizes
~ notation for
home directories; it assumes that words at the beginning of a line
and subsequent to |, &, ;,
||, or && are commands, and modifies the
search path 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
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 input 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
Tables Table 8-1 through Table 8-3 describe
the various editing keystrokes available in Emacs mode.
Table 8-1. Cursor positioning (Emacs mode)
Ctrl-B
|
Move cursor back (left) one character.
|
Ctrl-F
|
Move cursor forward (right) one character.
|
M-b
|
Move cursor back one word.
|
M-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 (Emacs mode)
Del or Ctrl-H
|
Delete character to left of cursor.
|
Ctrl-D
|
Delete character under cursor.
|
M-d
|
Delete word.
|
M-Del or M-Ctrl-H
|
Delete word backward.
|
Ctrl-K
|
Delete from cursor to end-of-line.
|
Ctrl-U
|
Delete entire line.
|
Table 8-3. Command history (Emacs mode)
Ctrl-P
|
Previous command.
|
Ctrl-N
|
Next command.
|
Up arrow
|
Previous command.
|
Down arrow
|
Next command.
|
cmd-fragment M-p
|
Search history for cmd-fragment, which must be
the beginning of a command.
|
cmd-fragment M-n
|
Like M-p, but search forward.
|
M-num
|
Repeat next command num times.
|
Ctrl-Y
|
Yank previously deleted string.
|
8.7.5.2 vi mode
vi mode has two submodes, input mode and
command mode. The default mode is input. You can toggle modes by
pressing Esc; alternatively, in command mode, typing a (append) or i (insert) will return you to input mode.
Tables Table 8-4 through Table 8-10 describe the editing keystrokes available in
vi mode.
Table 8-4. Command history (vi input and command modes)
Ctrl-P
|
Previous command
|
Ctrl-N
|
Next command
|
Up arrow
|
Previous command
|
Down arrow
|
Next command
|
Esc
|
Toggle mode
|
Table 8-5. Editing (vi input mode)
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 (vi command mode)
h or Ctrl-H
|
Move cursor back (left) one character.
|
l or SPACE
|
Move cursor forward (right) one character.
|
w
|
Move cursor forward one word.
|
b
|
Move cursor back one word.
|
e
|
Move cursor to next word ending.
|
W, B, E
|
Like w, b, and e, but
treat only whitespace as word separator instead of any
nonalphanumeric 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 (vi command mode)
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 (vi command mode)
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 (vi command mode)
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 (vi command mode)
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.
|
|