1. Trang chủ
  2. » Ngoại Ngữ

Running Linux phần 5 docx

34 283 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 513,46 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Place the cursor on the word Diet and type dw: 9.1.4 Changing Text You can replace text using the R command, which overwrites the text beginning at the cursor.. For example, placing t

Trang 1

Text that is deleted may be reinserted using the p command (for "put") Pressing p now will return the deleted line to the buffer after the current line Using P (uppercase) instead will insert the text before the current line By default, p and P insert text from the "undo buffer";

you can also yank and replace text from other buffers, as we'll see later

The u command undoes the latest change (in this case, pressing u after dd is equivalent to p)

If you inserted a large amount of text using the i command, pressing u immediately after

returning to command mode would undo it

To delete the word beneath the cursor, use the dw command Place the cursor on the word

Diet and type dw:

9.1.4 Changing Text

You can replace text using the R command, which overwrites the text beginning at the cursor

Place the cursor on the first letter in pizza, press R, and type:

The r command replaces the single character under the cursor r does not place you in insert

mode per se, so there is no reason to use Escape to return to command mode

The ~ command changes the case of the letter under the cursor from upper- to lowercase, and

vice versa If you place the cursor on the o in Now in the previous example, and repeatedly

press ~, you end up with the following:

Another useful command for changing words is the cw command, which lets you simply type

in the new word and — after pressing Escape — removes anything that might be left over from the original word If the new text is longer than the one being changed, the space is automatically expanded as needed

Trang 2

9.1.5 Moving Commands

You already know how to use the arrow keys to move around the document In addition, the w

command moves the cursor to the beginning of the next word, and b moves it to the beginning

of the current word The 0 (that's a zero) command moves the cursor to the beginning of the current line, and the $ command moves it to the end of the line

When editing large files, you'll want to move forward or backward through the file one screen

at a time Pressing Ctrl-F moves the cursor one screen forward, and Ctrl-B moves it one screen backward

In order to move the cursor to the end of the file, type G You can also move to an arbitrary line: the command 10G would move the cursor to line 10 in the file To move to the beginning of the file, use 1G

Typing / followed by a pattern and the Enter key causes you to jump to the first occurrence of that pattern in the text following the cursor For example, placing the cursor on the first line of text in our example and typing /burg moves the cursor to the beginning of the word

"burgers." Using ? instead of / searches backward through the file

The pattern following a / or ? command is actually a regular expression Regular expressions

are a powerful way to specify patterns for search and replace operations and are used by many Unix utilities You can find more information about regular expressions in the upcoming section, Section 9.2.9 Using regular expressions, you could, for example, search for the next uppercase letter, using the command:

9.1.6 Saving Files and Quitting vi

Most of the commands dealing with files within vi are invoked from ex mode You enter ex

mode when you press the : key from command mode This places the cursor on the last line of the display, allowing you to enter various extended commands

For example, to write the file being edited, use the command :w Typing : causes you to

enter ex mode, and typing w followed by the Enter key completes the command The command :wq writes the file and exits vi (The command ZZ — from command mode, without the ":" — is similar to :wq, but checks first if the file has been changed, and writes it only in this case.)

Trang 3

To quit vi without saving changes to the file, use the command :q! Using :q alone will quit

vi, but only if modifications to the file have been saved The ! in :q! means to quit vi — and

that you really mean it

9.1.7 Editing Another File

To edit another file, use the :e command For example, to stop editing test, and edit the file foo instead, use the command shown at the bottom of the following box:

If you use :e without writing the file first, you'll get the error message:

No write since last change (:edit! overrides)

At this point, you can use :w to save the original file, and then use :e, or you can use the command :e! foo, which tells vi to edit the new file without saving changes to the original

This can be useful if you edit a file and realize that you have screwed up You can then use the :e! command; if you don't specify a filename, vi discards the changes and re-edits the

current file

9.1.8 Including Other Files

If you use the :r command, you can include the contents of another file in the vi buffer For

example, the command:

:r foo.txt

inserts the contents of the file foo.txt after the current line

9.1.9 Running Shell Commands

The :! command allows you to enter the name of a command, which is executed within vi

For example, the command:

:!ls -F

executes the ls command and displays the results on your screen

The :r! command is similar to :!, but includes the standard output of the command in the buffer The command:

:r!ls -F

produces the following:

Trang 4

If you need to execute a series of shell commands, it's often easier to use the suspend key

(usually Ctrl-Z), provided you're using a shell that supports job control, such as tcsh or bash

9.1.10 Global Searching and Replacing

There are many more features of vi than are documented here; most of these features are

implemented through combinations of the simple features we've seen Here are one or two

other tidbits most vi users find useful

The command:

:[x,y]s/pattern/replacement/flags

searches for pattern between lines x and y in the buffer, and replaces instances of

pattern with the replacement text pattern is a regular expression; replacement is literal text but can contain several special characters to refer to elements in the original

pattern The following command replaces the first occurrence of weeble with wobble on lines 1 through 10, inclusive:

:1,10s/weeble/wobble

Instead of giving line-number specification, you can use the % symbol to refer to the entire file Other special symbols can be used in place of x and y $ refers to the last line of the file Leave x or y blank to refer to the current line

Among the flags you can use are g to replace all instances of pattern on each line, and c to ask for confirmation for each replacement In most instances, you will want to use the g flag, unless you want to replace only the first occurrence of pattern on each line

You can also use marks to refer to lines Marks are just single-letter names that are given to

cursor locations within the document Moving the cursor to a location in the file and typing

ma will set the mark a at that point (Marks may be named any of the letters a-z or A-Z.) You can move the cursor directly to the mark a with the command `a (with a backquote) Using a regular single quote (as in 'a) will move the cursor to the beginning of the line that the mark a

is on

Marks allow you to "remember" cursor locations that denote a region of text For example, if you want to search and replace a block of text, you can move the cursor to the beginning of the text, set a mark, move the cursor to the end of the text, and use the command:

:'a,.s/weeble/wobble/

Trang 5

9.1.11 Moving Text and Using Registers

One way to copy and move text is to delete it (using the d or dd commands) and then replace

it with the P command, as described earlier For example, if you want to delete 10 lines, starting with the line that contains your cursor, and paste them somewhere else, just use the command 10dd (to delete 10 lines), move the cursor to the new location for the text, and type

p You can copy text in this way as well: typing 10dd followed by P (at the same cursor location) deletes the text and immediately replaces it You can then paste the text elsewhere

by moving the cursor and using p multiple times

Similar to dd is the yy command, which "yanks" text without deleting it You use p to paste the yanked text as with dd But note that each yank operation will delete the previously yanked text from the "clipboard."

The deletion and yank commands can be used on more general regions than lines Recall that the d command deletes text through a move command; for example, d$ deletes text from the cursor to the end of the line Similarly, y$ yanks text from the cursor to the end of the line Let's say you want to yank (or delete) a region of text This can be done with marks as well Move the cursor to the beginning of the text to be yanked and set a mark, as in ma Move the cursor to the end of the text to be yanked and use the command y'a This yanks text from the cursor position to the mark a (Remember that the command 'a moves the cursor to the mark

a.) Using d instead of y deletes the text from the cursor to the mark

The most convenient way to cut, copy, and paste portions of text within vi is to use registers

A register is just a named temporary storage space for text you wish to copy between locations, cut and paste within the document, and so forth

Registers are given single letter names; any of the characters a-z or A-Z are valid The "

command (a quotation mark) specifies a register; it is followed by the name of the register, as

in "a for register a The lowercase letters and their uppercase counterparts refer to the same registers: using the lowercase letter overwrites the previous contents of the register and using the uppercase letter appends to it

For instance, if we move the cursor to the first line in our example:

and use the command "ayy, the current line is yanked into the register a We can then move the cursor to the second line, and use the command "ap to paste the text from register a after the current line:

Trang 6

Similarly, the command "ay'a yanks text from the cursor to mark a into register a Note that there is no correspondence between mark and register names!

Using registers allows you to copy text between files Just copy the text to a register, use the

:e command to edit a new file, and paste the text from the register

9.1.12 Extending vi

vi is extensible in many ways Most of the commands we've introduced can be generalized to

arbitrary regions of text As we've already seen, commands such as d and y operate on the text from the cursor to a move operation, such as $ or G (dG deletes text from the cursor to the end of the file.) Many other commands operate on text through a move command in the same way Using marks you can operate on any region of text

As we mentioned before, vi is just a text editor; it doesn't have facilities for spell checking text, compiling programs, and other such features However, vi executes other programs that

you can use to extend the editor The command:

:x,y!command

executes the named command with the text on lines x through y as standard input, and replaces the lines with the standard output of the command As with the s (search and replace) command, other specifications, such as % and $, can be used for the line numbers

For example, let's say you want to prepend a quote character (>) to all the lines in a region of text One way to do this is to write a short shell or Perl script (see Section 1.5.4) that reads

lines of input and outputs those same lines with the quote character prepended (Or use a sed

command; there are many alternatives.) You can then send lines of text through this filter,

which replaces them with the quoted text within vi If the script is called quote, just use a

command, such as:

:`a,.!quote

which quotes the region of text between the cursor location and the mark a

Be familiar with the various ex commands that are available The :set command allows you

to set various options; for example, :set ai turns on auto indentation of text (:set noai

turns it off.)

You can specify ex commands (such as :set) to execute when starting up vi in the file exrc

in your home directory (The name of this file can be changed with the EXINIT environment

Trang 7

set ai

to turn on autoindentation You don't need the : before ex commands in this file

A number of good tutorials and references for vi are available — both online as well as in print Learning the vi Editor is a good place to look for more information If you have Internet access, the comp.editors archives for vi contain a number of reference and tutorial documents,

as well as interesting vi hacks ftp://alf.uib.no:/pub/vi is the archive home site; it is mirrored at cs.uwp.edu and elsewhere The home of vim on the Web is http://www.vim.org

9.2 The Emacs Editor

Text editors are among the most important applications in the Unix world They are used so often that many people spend more time within an editor than anywhere else on their Unix system The same holds true for Linux

The choice of an editor can be a religious one Many editors exist, but the Unix community

has arranged itself into two major groups: the Emacs camp and the vi camp Because of vi's

somewhat nonintuitive user interface, many people (newcomers and seasoned users alike)

prefer Emacs over vi However, long-time users of vi (and single-finger typists) use it more

efficiently than a more complex editor such as Emacs

If vi is one end of the text-editor spectrum, Emacs is the other; they are widely different in

their design and philosophy Emacs is partly the brainchild of Richard Stallman, founder of the Free Software Foundation and author of much of the GNU software

Emacs is a very large system with more features than any single Unix application to date (some people would even go so far as not to call it an editor but an "integrated environment")

It contains its own LISP language engine that you can use to write extensions for the editor (Many of the functions within Emacs are written in Emacs LISP.) Emacs includes extensions for everything from compiling and debugging programs to reading and sending electronic mail to X Window System support and more Emacs also includes its own online tutorial and

documentation The book Learning GNU Emacs by Debra Cameron, Bill Rosenblatt, and Eric

Raymond (O'Reilly) is a popular guide to the editor

Most Linux distributions include two variants of Emacs GNU Emacs is the original version, which is still being developed, but development seems to have slowed down XEmacs is larger, but much more user-friendly and better integrated with the X Window System (even though you can also use it from the command line, despite its name) If you are not tight on memory and have a reasonably fast computer, we suggest using XEmacs Another advantage

of XEmacs is that many useful packages that you would need to download and install separately with GNU Emacs are already shipped with XEmacs We will not cover the differences here, though; the discussion in this section applies to both Whenever we talk

about Emacs in this section, we mean either version

9.2.1 Firing It Up

GNU Emacs is simply invoked as:

$ emacs options

Trang 8

Likewise, XEmacs is invoked as:

file; let's call the file wibble.txt We now see the following:

The mode line at the bottom indicates the name of the file as well as the type of buffer you're

in (which here is Fundamental) Emacs supports many kinds of editing modes;

Fundamental is the default for plain-text files, but other modes exist for editing C and TEX source, modifying directories, and so on Each mode has certain key bindings and commands associated with it, as we'll see soon Emacs typically determines the mode of the buffer based

on the filename extension

To the right of the buffer type is the word All, which means that you are currently looking at the entire file (which is empty) Typically, you will see a percentage, which represents how far into the file you are

If you're running Emacs under the X Window System, a new window will be created for the editor with a menu bar at the top, scrollbars, and other goodies In Section 11.6.2 in Chapter

11, we discuss Emacs's special features when used within X

9.2.2 Simple Editing Commands

Emacs is more straightforward than vi when it comes to basic text editing The arrow keys

should move the cursor around the buffer; if they don't (in case Emacs is not configured for your terminal), use the keys C-p (previous line), C-n (next line), C-f (forward character), and C-b (backward character)

Trang 9

If you find using the Alt key uncomfortable, press Escape and then p Pressing and releasing Escape is equivalent to holding down Alt

Already we must take the first aside on our tour of Emacs Literally every command and key within Emacs is customizable That is, with a "default" Emacs configuration, C-p maps to the

internal function previous-line, which moves the cursor (also called "point") to the previous

line However, you can easily rebind different keys to these functions, or write new functions and bind keys to them, and so forth Unless otherwise stated, the keys we introduce here work for the default Emacs configuration Later we'll show you how to customize the keys for your own use

Back to editing: using the arrow keys or one of the equivalents moves the cursor around the current buffer Just start typing text, and it is inserted at the current cursor location Pressing the Backspace or Delete key should delete text at the cursor If it doesn't, we'll show how to fix it in Section 9.2.8 later in this chapter Now begin to type:

The keys C-a and C-e move the cursor to the beginning and end of the current line, respectively C-v moves forward a page; M-v moves back a page There are many more basic editing commands, but we'll allow the Emacs online documentation (discussed shortly) to fill those in

In order to get out of Emacs, use the command C-x C-c This is the first of the extended commands we've seen; many Emacs commands require several keys C-x alone is a "prefix"

to other keys In this case, pressing C-x followed by C-c quits Emacs, first asking for confirmation if you want to quit without saving changes to the buffer

You can use C-xC-s to save the current file, and C-xC-f to "find" another file to edit For example, typing C-xC-f presents you with a prompt, such as:

Find file: /home/loomer/mdw/

where the current directory is displayed After this, type the name of the file to find Pressing

the Tab key will do filename completion similar to that used in bash and tcsh For example,

entering:

Find file: /home/loomer/mdw/.bash

and pressing Tab opens another buffer, showing all possible completions, as so:

Trang 10

After you complete the filename, the *Completions* buffer goes away and the new file is displayed for editing This is one example of how Emacs uses temporary buffers to present information

Emacs allows you to use multiple buffers when editing text; each buffer may contain a different file you're editing When you load a file with C-x C-f, a new buffer is created to edit the file, but the original buffer isn't deleted

You can switch to another buffer using the C-xb command, which asks you for the name of the buffer (usually the name of the file within the buffer) For example, pressing C-x b

presents the prompt:

Switch to buffer: (default wibble.txt)

The default buffer is the previous one visited Press Enter to switch to the default buffer, or type another buffer name Using C-xC-b will present a buffer list (in a buffer of its own), as so:

Popping up the buffer menu splits the Emacs screen into two "windows," which you can switch between using C-x o More than two concurrent windows are possible as well In order to view just one window at a time, switch to the appropriate one and press C-x1 This hides all the other windows, but you can switch to them later using the C-xb command just described Using C-xk actually deletes a buffer from Emacs's memory

Trang 11

9.2.3 Tutorial and Online Help

Already Emacs looks a bit complex; that is simply because it's such a flexible system Before

we go any further, it is instructive to introduce Emacs's built-in online help and tutorial This

documentation has also been published in book form as the GNU Emacs Manual, by Richard

M Stallman (GNU Press)

Using the C-h command gives you a list of help options on the last line of the display Pressing C-h again describes what they are In particular, C-h followed by t drops you into the Emacs tutorial It should be self-explanatory, and an interactive tutorial about Emacs tells you more about the system than we can hope to cover here

After going through the Emacs tutorial you should get accustomed to the Info system, where the rest of the Emacs documentation resides C-h followed by i enters the Info reader A mythical Info page might look like this:

File: intercal.info, Node: Top, Next: Instructions, Up: (dir)

This file documents the Intercal interpreter for Linux

* Menu:

* Instructions:: How to read this manual

* Overview:: Preliminary information

* Examples:: Example Intercal programs and bugs

* Concept Index:: Index of concepts

As you see, text is presented along with a menu to other "nodes." Pressing m and then entering

a node name from the menu will allow you to read that node You can read nodes sequentially

by pressing the spacebar, which jumps to the next node in the document (indicated by the information line at the top of the buffer) Here, the next node is Instructions, which is the first node in the menu

Each node also has a link to the parent node (Up), which here is (dir), meaning the Info page directory Pressing u takes you to the parent node In addition, each node has a link to the previous node, if it exists (in this case, it does not) The p command moves to the previous node The l command returns you to the node most recently visited

Within the Info reader, pressing ? gives you a list of commands and pressing h presents you with a short tutorial on using the system Since you're running Info within Emacs, you can use Emacs commands as well (such as C-x b to switch to another buffer)

If you think that the Info system is arcane and obsolete, please keep in my mind that it was designed to work on all kinds of systems, including those lacking graphics or powerful processing capabilities

Other online help is available within Emacs Pressing C-h C-h gives you a list of help options One of these is C-h k, after which you press a key, and documentation about the function that is bound to that key appears

Trang 12

9.2.4 Deleting, Copying, and Moving Text

There are various ways to move and duplicate blocks of text within Emacs These methods

involve use of the mark, which is simply a "remembered" cursor location you can set using various commands The block of text between the current cursor location (point) and the mark

is called the region

You can set the mark using the key C-@ (or C-Space on most systems) Moving the cursor

to a location and pressing C-@ sets the mark at that position You can now move the cursor to another location within the document, and the region is defined as the text between mark and point

Many Emacs commands operate on the region The most important of these commands deal with deleting and yanking text The command C-w deletes the current region and saves it in

the kill ring The kill ring is a list of text blocks that have been deleted You can then paste (yank) the text at another location, using the C-y command (Note that the semantics of the

term yank differ between vi and Emacs In vi, "yanking" text is equivalent to adding it to the

undo register without deleting it, while in Emacs, "yank" means to paste text.) Using the kill ring, you can paste not only the most recently deleted block of text, but also blocks of text that were deleted previously

For example, type the following text into an Emacs buffer:

Now, move the cursor to the beginning of the second line ("Here is a line "), and set the mark with C-@ Move to the end of the line (with C-e), and delete the region using C-w The buffer should now look like the following:

Trang 13

In order to yank the text just deleted, move the cursor to the end of the buffer and press C-y The line should be pasted at the new location:

Pressing C-y repeatedly will insert the text multiple times

You can copy text in a similar fashion Using M-w instead of C-w will copy the region into the kill ring without deleting it (Remember that M- means holding down the Alt key or pressing Escape before the w.)

Text that is deleted using other kill commands, such as C-k, is also added to the kill ring This means that you don't need to set the mark and use C-w to move a block of text; any command that deletes more than one character will do

In order to recover previously deleted blocks of text (which are saved on the kill ring), use the command M-y after yanking with C-y M-y replaces the yanked text with the previous block from the kill ring Pressing M-y repeatedly cycles through the contents of the kill ring This feature is useful if you wish to move or copy multiple blocks of text

Emacs also provides a more general register mechanism, similar to that found in vi Among

other things, you can use this feature to save text you want to paste in later A register has a one-character name; let's use a for this example:

1 At the beginning of the text you want to save, set the mark by pressing the Control key and spacebar together (or if that doesn't work, press C-@)

2 Move point (the cursor) to the end of the region you want to save

3 Press C-x x followed by the name of the register (a in this case)

4 When you want to paste the text somewhere, press C-x g followed by the name of the register, a

9.2.5 Searching and Replacing

The most common way to search for a string within Emacs is to press C-s This starts what is

called an incremental search You then start entering the characters you are looking for Each

time you press a character, Emacs searches forward for a string matching everything you've typed so far If you make a mistake, just press the Delete key and continue typing the right characters If the string cannot be found, Emacs beeps If you find an occurrence but you want

to keep searching for another one, press C-s again

Trang 14

You can also search backward this way using the C-r key Several other types of searches exist, including a regular expression search that you can invoke by pressing M-C-s This lets you search for something like jo.*n, which matches names like John, Joan, and Johann (By default, searches are not case-sensitive.)

To replace a string, enter M-% You are prompted for the string that is currently in the buffer, and then the one with which you want to replace it Emacs displays each place in the buffer where the string is and asks you if you want to replace this occurrence Press the spacebar to replace the string, the Delete key to skip this string, or a period to stop the search

If you know you want to replace all occurrences of a string that follow your current place in the buffer, without being queried for each one, enter M-x replace-string (The M-x key allows you to enter the name of an Emacs function and execute it, without use of a key binding Many Emacs functions are available only via M-x, unless you bind them to keys yourself.) A regular expression can be replaced by entering M-xreplace-regexp

9.2.6 Macros

The name Emacs comes partly from the word "macros." A macro is a simple but powerful feature that makes Emacs a pleasure to use If you plan on doing anything frequently and repetitively, just press C-x (, perform the operation once, and then press C-x ) The two

C-x commands with the opening and closing parentheses remember all the keys you pressed Then you can execute the commands over and over again by pressing C-x e

Here's a example you can try on any text file; it capitalizes the first word of each line

1 Press C-x ( to begin the macro

2 Press C-a to put point at the beginning of the current line It's important to know where you are each time a macro executes By pressing C-a you are making sure the macro will always go to the beginning of the line, which is where you want to be

3 Press M-c to make the first letter of the first word a capital letter

4 Press C-a again to return to the beginning of the line and C-n or the down arrow to go

to the beginning of the following line This ensures that the macro will start execution

at the right place next time

5 Press C-x ) to end the macro

6 Press C-x e repeatedly to capitalize the following lines Or press C-u several times, followed by C-x e The repeated uses of C-u are prefix keys, causing the following command to execute many times If you get to the end of the document while the macro is still executing, no harm is done; Emacs just beeps and stops executing the macro

9.2.7 Running Commands and Programming within Emacs

Emacs provides interfaces for many programs, which you can run within an Emacs buffer For example, Emacs modes exist for reading and sending electronic mail, reading Usenet news, compiling programs, and interacting with the shell In this section, we'll introduce some

of these features

Trang 15

To send electronic mail from within Emacs, press C-x m This opens up a buffer that allows you to compose and send an email message:

Simply enter your message within this buffer and use C-c C-s to send it You can also insert text from other buffers, extend the interface with your own Emacs LISP functions, and so on Furthermore, an Emacs mode called RMAIL lets you read your electronic mail right within Emacs, but we won't discuss it here because most people prefer standalone mailers (Usually, these mailers let you choose Emacs as your editor for email messages.)

Similar to the RMAIL mail interface is GNUS, the Emacs-based newsreader, which you can start with the M-x gnus command After startup (and a bit of chewing on your newsrc file),

a list of newsgroups will be presented, along with a count of unread articles for each:

GNUS is an example of the power of using Emacs interfaces to other tools You get all the convenience of Emacs's navigation, search, and macro capabilities, along with specific key sequences appropriate for the tool you're using

Using the arrow keys, you can select a newsgroup to read Press the spacebar to begin reading articles from that group Two buffers will be displayed, one containing a list of articles and the other displaying the current article

Using n and p move to the next and previous articles, respectively Then use f and F to post a follow-up to the current article (either including or excluding the current article), and r and R

to reply to the article via electronic mail There are many other GNUS commands; use C-h m

to get a list of them If you're used to a newsreader, such as rn, GNUS will be somewhat

familiar

Emacs provides a number of modes for editing various types of files For example, there is C mode for editing C source code, and TEX mode for editing (surprise) TEX source Each mode boasts features that make editing the appropriate type of file easier

Trang 16

For example, within C mode, you can use the command M-x compile, which, by default,

runs make -k in the current directory and redirects errors to another buffer For example, the

compilation buffer may contain:

cd /home/loomer/mdw/pgmseq/

make -k

gcc -O -O2 -I -I /include -c stream_load.c -o stream_load.o

stream_load.c:217: syntax error before `struct'

stream_load.c:217: parse error before `struct'

You can move the cursor to a line containing an error message and press C-c C-c to make the cursor jump to that line in the corresponding source buffer Emacs opens a buffer for the appropriate source file if one does not already exist Now you can edit and compile programs entirely within Emacs

Emacs also provides a complete interface to the gdb debugger, which is described in Section

14.1.6.3 in Chapter 14

Usually, Emacs selects the appropriate mode for the buffer based on the filename extension

For example, editing a file with the extension c in the filename automatically selects C mode

for that buffer

Shell mode is one of the most popular Emacs extensions Shell mode allows you to interact with the shell in an Emacs buffer, using the command M-x shell You can edit, cut, and paste command lines with standard Emacs commands You can also run single shell commands from Emacs using M-! If you use M-| instead, the contents of the current region are piped to the given shell command as standard input This is a general interface for running subprograms from within Emacs

The Emacs personal customization file is emacs, which should reside in your home directory

This file should contain code, written in Emacs LISP, which runs or defines functions to customize your Emacs environment (If you've never written LISP before, don't worry; most customizations using it are quite simple.)

One of the most common things users customize are key bindings For instance, if you use Emacs to edit SGML documents, you can bind the key C-c s to switch to SGML mode Put

this in your emacs file:

; C-c followed by s will put buffer into SGML mode."

(global-set-key "\C-cs" 'sgml-mode)

Comments in Emacs LISP start with a semicolon The command that follows runs the

command global-set-key Now you don't have to type in the long sequence

Trang 17

Emacs — no matter what mode your buffer is in — because it is global (Of course, Emacs may also recognize an SGML or XML file by its suffix and put it in SGML mode for you automatically.)

A customization that you might want to use is making the text mode the default mode and turning on the "auto-fill" minor mode (which makes text automatically wrap if it is too long for one line) like this:

; Make text mode the default, with auto-fill

(setq default-major-mode 'text-mode)

(add-hook 'text-mode-hook 'turn-on-auto-fill)

You don't always want your key mappings to be global As you use TEX mode, C mode, and other modes defined by Emacs, you'll find useful things you'd like to do only in a single mode Here, we define a simple LISP function to insert some characters into C code, and then bind the function to a key for our convenience:

We start the function by declaring it "interactive" so that we can invoke it (otherwise, it would

be used only internally by other functions) Then we use the insert function to put the

following characters into our C buffer:

Our whole goal was to make it easy to insert these characters, so now let's bind our function

to a key:

(define-key c-mode-map "\C-ci" 'start-if-block)

The define-key function binds a key to a function By specifying c-mode-map, we indicate that the key works only in C mode There is also a tex-mode-map for mode, a lisp-mode-map that you will want to know about if you play with your emacs file a lot

If you'd like to write your own Emacs LISP functions, you should read the Info pages for

elisp, which should be available on your system Two good books on writing Emacs LISP functions are An Introduction to Programming in Emacs Lisp, by Robert J Chassell (GNU Press) and Writing GNU Emacs Extensions, by Bob Glickstein (O'Reilly)

Ngày đăng: 24/07/2014, 02:20

TỪ KHÓA LIÊN QUAN