[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ next ]


Debian Reference
Chapter 11 - Editors


11.1 Popular editors

Linux offers many alternatives for console text editors. Among them:

Use update-alternatives --config editor to change the default editor. Also, many programs use environment variables EDITOR or VISUAL to decide which editor to use. See Editor in MC, Section 4.2.5.

Also a few X-based text editors are noteworthy:

These xclient commands take standard options such as -fn a24, which makes life easy for older folks like me :) See X clients, Section 9.4.4.


11.2 Rescue editors

There are a few editors which reside in /bin/. One of these should be installed to ease editing files when /usr/ is not accessible.


11.3 Emacs and Vim


11.3.1 Vim hints

Read the "VIM - main help file" document by pressing <F1> while running the program.

<F1> Help <esc> Back to normal mode V Visual mode i Insert mode : Command-line commands :set tw=72 Set text width to 72 <F11> Insert (paste) mode :r! date -R Insert RFC-822 date qa Record keystrokes into register a q Stop keystroke recording @a Execute keystrokes from register a :edit foo.txt Edit another file by loading foo.txt :wnext Write current file and edit next file

q and @ can be used for simple macro recording and playback. For instance, to create a macro that inserts HTML italics tags around the word at the cursor, you could enter qii<i>^[ea</i>^[q (where ^[ is the ESC key). Then typing @i at the start of a word would add the tags <i> and </i>.

See also Using GnuPG with Vim, Section 14.4.2.


11.3.2 Emacs hints

<F1> Help <F10> Menu C-u M-! date -R Insert RFC-822 date

11.3.3 Starting the editor

start editor: emacs filename vim filename start in vi compatible: vim -C start in vi non-compatible: vim -N start with compile default: emacs -q vim -N -u NONE

11.3.4 Editor command summary (Emacs, Vim)

exit: C-x C-c :qa /:wq /:xa /:q! Get back/command mode: C-g <esc> Backward(left): C-b h Forward(right): C-f l Next(down): C-n j Previous(up): C-p k stArt of line(^): C-a 0 End of line($): C-e $ mUltiple commands: C-u nnn cmd nnn cmd Multiple commands: M-digitkey cmd save File: C-x C-s :w file beginning of buffer: M-< 1G end of buffer: M-> G scroll forward 1 screen: C-v ^F scroll forward 1/2 screen: ^D scroll forward 1 line: ^E scroll backward 1 screen: M-v ^B scroll backward 1/2 screen: ^U scroll backward 1 line: ^Y scroll the other window: M-C-v delete under cursor: C-d x delete from cursor to eol: C-k D iSearch forward: C-s isearch Reverse: C-r Search forward: C-s enter / search Reverse: C-r enter ? isearch regexp: M-C-s isearch backward regexp: M-C-r search regexp: M-C-s enter / search backward regexp: M-C-r enter ? Help: C-h C-h :help Help Apropos: C-h a Help key Bindings: C-h b :help [key] Help Info: C-h i Help Major mode: C-h m Help tutorial: C-h t :help howto Undo: C-_ u Redo: C-f ^R Mark cursor position: C-@ m{a-zA-Z} eXchange Mark and position: C-x C-x goto mark in current file: '{a-z} goto mark in any file: '{A-Z} copy region: M-w {visual}y kill region: C-w {visual}d Yank and keep buffer: C-y Yank from kill buffer: M-y p convert region to Upper: C-x C-u {visual}U convert region to Lower: C-x C-l {visual}u Insert special char: C-q octalnum/keystroke ^V decimal/keystroke replace: M-x replace-string :%s/aaa/bbb/g replace regexp: M-x replace-regexp :%s/aaa/bbb/g query replace: M-% :%s/aaa/bbb/gc query replace: M-x query-replace query replace regexp: M-x query-replace-regexp Open file: C-x C-f :r file Save file: C-x C-s :w Save all buffers: C-x s :wa Save as: C-x C-w file :w file Prompt for buffer: C-x b List buffers: C-x C-b :buffers Toggle read-only: C-x C-q :set ro Prompt and kill buffer: C-x k Split vertical: C-x 2 :split Split horizontal: C-x 3 :vsplit (ver. 6) Move to other window: C-x o ^Wp Delete this window: C-x 0 :q Delete other window(s): C-x 1 ^Wo run shell in bg: M-x compile kill shell run in bg: M-x kill-compilation run make: :make Makefile check error message: C-x` :echo errmsg run shell and record: M-x shell :!script -a tmp ...clean BS, ... :!col -b <tmp >record ...save/recall shell record: C-x C-w record :r record run shell: M-! sh :sh run command: M-! cmd :!cmd run command and insert: C-u M-! cmd :r!cmd run filter: M-| file {visual}:w file run filter and insert: C-u M-| filter {visual}:!filter show option :se[t] {option}? reset option to default :se[t] {option}& reset boolean option :se[t] no{option} toggle boolean option :se[t] inv{option} wrap text at column 72 :se tw=72 do not wrap :se tw=0 autoindent :se ai expand tab :se et specify comment (mail) :se comments=n:>,n:\| run GDB M-x gdb describe GDB mode C-h m step one line M-s next line M-n step one instruction (stepi) M-i finish current stack frame C-c C-f continue M-c up arg frames M-u down arg frames M-d copy number from point, insert at the end C-x & set break point C-x SPC

11.3.5 Vim configuration

In order to use all Vim features and syntax highlighting, include the following lines in ~/.vimrc or /etc/vimrc:

set nocompatible set nopaste set pastetoggle=<f11> syn on

Paste mode enables one to avoid autoindent interfering with cut-and-paste operations on a console terminal. It does more than just a simple ":set noai".

See Using GnuPG with Vim, Section 14.4.2 for GnuPG integration.


11.3.6 Ctags

apt-get install exuberant-ctags and run ctags on the source files. Type :tag function_name in Vim to jump to the line where function_name starts. The tags work for C, C++, Java, Python, and many other languages.

Emacs has the same ctags capabilities.


11.3.7 Convert a syntax-highlighted screen to HTML source

so \$VIMRUNTIME/syntax/2html.vim from Vim command mode will convert highlighted text to HTML text. Save with :w file.html and :q. Useful for C code, etc.


11.3.8 Split screen with vim

vim can edit multiple files in a multi-split-screen environment. Type :help usr_08.txt for details.

To split the screen display between different files, type at the vi command prompt:

:split another-file :vsplit another-file

Or at a shell prompt:

$ vi -o file1.txt file2.txt # Horizontal split $ vi -O file1.txt file2.txt # Vertical split

will provide multiwindow vi.

$ vimdiff file.txt~ file.txt # check recent changes of file.txt $ vimdiff file.en.sgml file.fr.sgml # check changes of translation $ gvimdiff file.txt~ file.txt # in X

will provide a nice view of differences between an original and a backup file. In SGML it matches tags, so comparing translations in this mode works very well.

Special cursor movements with Ctrl-W commands:

Ctrl-W + increase the size of a window Ctrl-W - decrease the size of a window Ctrl-W h move to the window left Ctrl-W j move to the window below Ctrl-W k move to the window above Ctrl-W l move to the window right ...

Use the following to control screen scrolling:

:set scrollbind :set noscrollbind

[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ next ]


Debian Reference

CVS, Mon Jun 16 21:20:26 UTC 2008

Osamu Aoki osamu#at#debian.org
Authors, Section A.1