home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


Book HomeLinux in a NutshellSearch this book

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.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

  • complete

  • uncomplete

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.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.



Library Navigation Links

Copyright © 2001 O'Reilly & Associates. All rights reserved.