mcedit.1.in 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. .TH MCEDIT 1 "January 2003" "MC Version 4.6.0" "GNU Midnight Commander"
  2. .SH NAME
  3. mcedit \- Internal file editor of GNU Midnight Commander.
  4. .SH USAGE
  5. .B mcedit
  6. [\-bcCdfhstVx?] [+number] file
  7. .SH DESCRIPTION
  8. .LP
  9. mcedit is a link to
  10. .BR mc ,
  11. the main GNU Midnight Commander executable. Executing GNU Midnight
  12. Commander under this name requests staring the internal editor and
  13. opening the
  14. .I file
  15. specified on the command line. The editor is based on the terminal
  16. version of
  17. .B cooledit
  18. \- standalone editor for X Window System.
  19. .SH OPTIONS
  20. .TP
  21. .I "+number"
  22. Go to the line specified by number (do not put a space between the
  23. .I "+"
  24. sign and the number).
  25. .TP
  26. .I "\-b"
  27. Force black and white display.
  28. .TP
  29. .I "\-c"
  30. Force ANSI color mode on terminals that don't seem to have color
  31. support.
  32. .TP
  33. .I "\-C <keyword>=<FGcolor>,<BGcolor>:<keyword>= ..."
  34. Specify a different color set. See the
  35. .B Colors
  36. section in mc(1) for more information.
  37. .TP
  38. .I "\-d"
  39. Disable mouse support.
  40. .TP
  41. .I "\-f"
  42. Display the compiled-in search path for GNU Midnight Commander data
  43. files.
  44. .TP
  45. .I "\-t"
  46. Force using termcap database instead of terminfo. This option is only
  47. applicable if GNU Midnight Commander was compiled with S-Lang library
  48. with terminfo support.
  49. .TP
  50. .I "\-V"
  51. Display the version of the program.
  52. .TP
  53. .I "\-x"
  54. Force xterm mode. Used when running on xterm-capable terminals (two
  55. screen modes, and able to send mouse escape sequences).
  56. .SH FEATURES
  57. The internal file editor is a full-featured full screen editor. It can
  58. edit files up to 64 megabytes. It is possible to edit binary files.
  59. The features it presently supports are: block copy, move, delete, cut,
  60. paste; key for key undo; pull-down menus; file insertion; macro
  61. commands; regular expression search and replace (and our own
  62. scanf-printf search and replace); shift-arrow text highlighting (if
  63. supported by the terminal); insert-overwrite toggle; word wrap;
  64. autoindent; tunable tab size; syntax highlighting for various file
  65. types; and an option to pipe text blocks through shell commands like
  66. indent and ispell.
  67. .SH KEYS
  68. The editor is easy to use and can be used without learning. The
  69. pull-down menu is invoked by pressing F9. You can learn other keys from
  70. the menu and from the button bar labels.
  71. .PP
  72. In addition to that, Shift combined with arrows does text highlighting
  73. (if supported by the terminal):
  74. .B Ctrl-Ins
  75. copies to the file
  76. .BR ~/.mc/cedit/cooledit.clip ,
  77. .B Shift-Ins
  78. pastes from
  79. .BR ~/.mc/cedit/cooledit.clip ,
  80. .B Shift-Del
  81. cuts to
  82. .BR ~/.mc/cedit/cooledit.clip ,
  83. and
  84. .B Ctrl-Del
  85. deletes highlighted text. Mouse highlighting also works on some
  86. terminals. To use the standard mouse support provided by your terminal,
  87. hold the Shift key. Please note that the mouse support in the terminal
  88. doesn't share the clipboard with
  89. .BR mcedit .
  90. .PP
  91. The completion key (usually
  92. .B "Alt-Tab"
  93. or
  94. .BR "Escape Tab" )
  95. completes the word under the cursor using the words used earlier in the
  96. file.
  97. .PP
  98. To define a macro, press
  99. .B Ctrl-R
  100. and then type out the keys you want to be executed. Press
  101. .B Ctrl-R
  102. again when finished. You can then assign the macro to any key you like
  103. by pressing that key. The macro is executed when you press
  104. .B Ctrl-A
  105. and then the assigned key. The macro is also executed if you press
  106. Meta, Ctrl, or Esc and the assigned key, provided that the key is not
  107. used for any other function. The macro commands are stored in the file
  108. .BR ~/.mc/cedit/cooledit.macros .
  109. Do NOT edit this file if you are going to use macros again in the same
  110. editing session, because
  111. .B mcedit
  112. caches macro key defines in memory.
  113. .B mcedit
  114. now overwrites a macro if a macro with the same key already exists,
  115. so you won't have to edit this file. You will also have to restart
  116. other running editors for macros to take effect.
  117. .P
  118. .B F19
  119. will format C, C++, Java or HTML code when it is highlighted. An executable
  120. file called
  121. .B ~/.mc/cedit/edit.indent.rc
  122. will be created for you from the default template. Feel free to edit it
  123. if you need.
  124. .PP
  125. .B C-p
  126. will run ispell on a block of text in a similar way. The script file
  127. will be called
  128. .BR ~/.mc/cedit/edit.spell.rc .
  129. .PP
  130. If some keys don't work, you can use
  131. .B Learn Keys
  132. in the
  133. .B Options
  134. menu.
  135. .SH SYNTAX HIGHLIGHTING
  136. .B mcedit
  137. supports syntax highlighting. This means that keywords and contexts
  138. (like C comments, string constants, etc) are highlighted in different
  139. colors. The following section explains the format of the file
  140. .BR ~/.mc/cedit/Syntax .
  141. If this file is missing, system-wide
  142. .B @prefix@/share/mc/syntax/Syntax
  143. is used.
  144. The file
  145. .B ~/.mc/cedit/Syntax
  146. is rescanned on opening of a any new editor file. The file contains
  147. rules for highlighting, each of which is given on a separate line, and
  148. define which keywords will be highlighted to what color.
  149. .PP
  150. The file is divided into sections, each beginning with a line with the
  151. .B file
  152. command. The sections are normally put into separate files using the
  153. .B include
  154. command.
  155. .PP
  156. The
  157. .B file
  158. command has three arguments. The first argument is a regular expression
  159. that is applied to the file name to determine if the following section
  160. applies to the file. The second argument is the description of the file
  161. type. It is used in
  162. .BR cooledit ;
  163. future versions of
  164. .B mcedit
  165. may use it as well. The third optional argument is a regular expression
  166. to match the first line of text of the file. The rules in the following
  167. section apply if either the file name or the first line of text matches.
  168. .PP
  169. A section ends with the start of another section. Each section is
  170. divided into contexts, and each context contains rules. A context is a
  171. scope within the text that a particular set of rules belongs to. For
  172. instance, the text within a C style comment (i.e. between
  173. .B /*
  174. and
  175. .BR */ )
  176. has its own color. This is a context, although it has no further rules
  177. inside it because there is probably nothing that we want highlighted
  178. within a C comment.
  179. .PP
  180. A trivial C programming section might look like this:
  181. .PP
  182. .nf
  183. file .\\*\\\\.c C\\sProgram\\sFile (#include|/\\\\\\*)
  184. wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_
  185. # default colors
  186. define comment brown
  187. context default
  188. keyword whole if yellow
  189. keyword whole else yellow
  190. keyword whole for yellow
  191. keyword whole while yellow
  192. keyword whole do yellow
  193. keyword whole switch yellow
  194. keyword whole case yellow
  195. keyword whole static yellow
  196. keyword whole extern yellow
  197. keyword { brightcyan
  198. keyword } brightcyan
  199. keyword '*' green
  200. # C comments
  201. context /\\* \\*/ comment
  202. # C preprocessor directives
  203. context linestart # \\n red
  204. keyword \\\\\\n brightred
  205. # C string constants
  206. context " " green
  207. keyword %d brightgreen
  208. keyword %s brightgreen
  209. keyword %c brightgreen
  210. keyword \\\\" brightgreen
  211. .fi
  212. .PP
  213. Each context starts with a line of the form:
  214. .PP
  215. .B context
  216. .RB [ exclusive ]
  217. .RB [ whole | wholeright | wholeleft ]
  218. .RB [ linestart ]
  219. .I delim
  220. .RB [ linestart ]
  221. .I delim
  222. .RI [ foreground ]
  223. .RI [ background ]
  224. .PP
  225. The first context is an exception. It must start with the command
  226. .PP
  227. .B context default
  228. .RI [ foreground ]
  229. .RI [ background ]
  230. .PP
  231. otherwise
  232. .B mcedit
  233. will report an error. The
  234. .B linestart
  235. option specifies that
  236. .I delim
  237. must start at the beginning of a line. The
  238. .B whole
  239. option tells that
  240. .I delim
  241. must be a whole word. To specify that a word must begin on the word
  242. boundary only on the left side, you can use the
  243. .B wholeleft
  244. option, and similarly a word that must end on the word boundary is specified by
  245. .BR wholeright .
  246. .PP
  247. The set of characters that constitute a whole word can be changed at any
  248. point in the file with the
  249. .B wholechars
  250. command. The left and right set of characters can be set separately
  251. with
  252. .PP
  253. .B wholechars
  254. .RB [ left | right ]
  255. .I characters
  256. .PP
  257. The
  258. .B exclusive
  259. option causes the text between the delimiters to be highlighted, but not
  260. the delimiters themselves.
  261. .PP
  262. Each rule is a line of the form:
  263. .PP
  264. .B keyword
  265. .RB [ whole | wholeright | wholeleft ]
  266. .RB [ linestart ]
  267. .I string foreground
  268. .RI [ background ]
  269. .PP
  270. Context or keyword strings are interpreted, so that you can include tabs
  271. and spaces with the sequences \\t and \\s. Newlines and backslashes are
  272. specified with \\n and \\\\ respectively. Since whitespace is used as a
  273. separator, it may not be used as is. Also, \\* must be used to specify
  274. an asterisk. The * itself is a wildcard that matches any length of
  275. characters. For example,
  276. .PP
  277. .nf
  278. keyword '*' green
  279. .fi
  280. .PP
  281. colors all C single character constants green. You also could use
  282. .PP
  283. .nf
  284. keyword "*" green
  285. .fi
  286. .PP
  287. to color string constants, but the matched string would not be allowed
  288. to span across multiple newlines. The wildcard may be used within
  289. context delimiters as well, but you cannot have a wildcard as the last
  290. or first character.
  291. .PP
  292. Important to note is the line
  293. .PP
  294. .nf
  295. keyword \\\\\\n brightgreen
  296. .fi
  297. .PP
  298. This line defines a keyword containing the backslash and newline
  299. characters. Since the keywords are matched before the context
  300. delimiters, this keyword prevents the context from ending at the end of
  301. the lines that end in a backslash, thus allowing C preprocessor
  302. directive to continue across multiple lines.
  303. .PP
  304. The possible colors are: black, gray, red, brightred, green,
  305. brightgreen, brown, yellow, blue, brightblue, magenta, brightmagenta,
  306. cyan, brightcyan, lightgray and white. If the syntax file is shared
  307. with
  308. .BR cooledit ,
  309. it is possible to specify different colors for
  310. .B mcedit
  311. and
  312. .B cooledit
  313. by separating them with a slash, e.g.
  314. .PP
  315. .nf
  316. keyword #include red/Orange
  317. .fi
  318. .PP
  319. .B mcedit
  320. uses the color before the slash. See cooledit(1) for supported
  321. .B cooledit
  322. colors.
  323. .PP
  324. Comments may be put on a separate line starting with the hash sign (#).
  325. .PP
  326. Because of the simplicity of the implementation, there are a few
  327. intricacies that will not be dealt with correctly but these are a minor
  328. irritation. On the whole, a broad spectrum of quite complicated
  329. situations are handled with these simple rules. It is a good idea to
  330. take a look at the syntax file to see some of the nifty tricks you can
  331. do with a little imagination. If you cannot get by with the rules I
  332. have coded, and you think you have a rule that would be useful, please
  333. email me with your request. However, do not ask for regular expression
  334. support, because this is flatly impossible.
  335. .PP
  336. A useful hint is to work with as much as possible with the things you
  337. can do rather than try to do things that this implementation cannot deal
  338. with. Also remember that the aim of syntax highlighting is to make
  339. programming less prone to error, not to make code look pretty.
  340. .SH COLORS
  341. The default colors may be changed by appending to the
  342. .B MC_COLOR_TABLE
  343. environment variable. Foreground and background colors pairs may be
  344. specified for example with:
  345. .PP
  346. .nf
  347. MC_COLOR_TABLE="$MC_COLOR_TABLE:\\
  348. editnormal=lightgray,black:\\
  349. editbold=yellow,black:\\
  350. editmarked=black,cyan"
  351. .fi
  352. .SH OPTIONS
  353. Most options can now be set from the editors options dialog box. See
  354. the
  355. .B Options
  356. menu. The following options are defined in
  357. .B ~/.mc/ini
  358. and have obvious counterparts in the dialog box. You can modify them to
  359. change the editor behavior, by editing the file. Unless specified, a 1
  360. sets the option to on, and a 0 sets it to off, as is usual.
  361. .TP
  362. .I use_internal_edit
  363. This option is ignored when invoking
  364. .BR mcedit .
  365. .TP
  366. .I editor_key_emulation
  367. 1 for
  368. .B Emacs
  369. keys, and 0 for normal
  370. .B Cooledit
  371. keys.
  372. .TP
  373. .I editor_tab_spacing
  374. Interpret the tab character as being of this length.
  375. Default is 8. You should avoid using
  376. other than 8 since most other editors and text viewers
  377. assume a tab spacing of 8. Use
  378. .B editor_fake_half_tabs
  379. to simulate a smaller tab spacing.
  380. .TP
  381. .I editor_fill_tabs_with_spaces
  382. Never insert a tab space. Rather insert spaces (ascii 20h) to fill to the
  383. desired tab size.
  384. .TP
  385. .I editor_return_does_auto_indent
  386. Pressing return will tab across to match the indentation
  387. of the first line above that has text on it.
  388. .TP
  389. .I editor_backspace_through_tabs
  390. Make a single backspace delete all the space to the left
  391. margin if there is no text between the cursor and the left
  392. margin.
  393. .TP
  394. .I editor_fake_half_tabs
  395. This will emulate a half tab for those who want to program
  396. with a tab spacing of 4, but do not want the tab size changed
  397. from 8 (so that the code will be formatted the same when displayed
  398. by other programs). When editing between text and the left
  399. margin, moving and tabbing will be as though a tab space were
  400. 4, while actually using spaces and normal tabs for an optimal fill.
  401. When editing anywhere else, a normal tab is inserted.
  402. .TP
  403. .I editor_option_save_mode
  404. Possible values 0, 1 and 2. The save mode (see the options menu also)
  405. allows you to change the method of saving a file. Quick save (0) saves
  406. the file by immediately, truncating the disk file to zero length (i.e.
  407. erasing it) and the writing the editor contents to the file. This
  408. method is fast, but dangerous, since a system error during a file save
  409. will leave the file only partially written, possibly rendering the data
  410. irretrievable. When saving, the safe save (1) option enables creation
  411. of a temporary file into which the file contents are first written. In
  412. the event of an problem, the original file is untouched. When the
  413. temporary file is successfully written, it is renamed to the name of the
  414. original file, thus replacing it. The safest method is create backups
  415. (2). Where a backup file is created before any changes are made. You
  416. can specify your own backup file extension in the dialog. Note that
  417. saving twice will replace your backup as well as your original file.
  418. .SH MISCELLANEOUS
  419. You can use scanf search and replace to search and replace a C format
  420. string. First take a look at the
  421. .B sscanf
  422. and
  423. .B sprintf
  424. man pages to see what a format string is and how it works. Here's an
  425. example: suppose that you want to replace all occurrences of an open
  426. bracket, three comma separated numbers, and a close bracket, with the
  427. word
  428. .IR apples ,
  429. the third number, the word
  430. .I oranges
  431. and then the second number. You would fill in the Replace dialog box as
  432. follows:
  433. .PP
  434. .nf
  435. .B Enter search string
  436. (%d,%d,%d)
  437. .B Enter replace string
  438. apples %d oranges %d
  439. .B Enter replacement argument order
  440. 3,2
  441. .fi
  442. .PP
  443. The last line specifies that the third and then the second number are to
  444. be used in place of the first and second.
  445. .PP
  446. It is advisable to use this feature with Prompt On Replace on, because a
  447. match is thought to be found whenever the number of arguments found
  448. matches the number given, which is not always a real match. Scanf also
  449. treats whitespace as being elastic. Note that the scanf format %[ is
  450. very useful for scanning strings, and whitespace.
  451. .PP
  452. The editor also displays non-us characters (160+). When editing
  453. binary files, you should set
  454. .B display bits
  455. to 7 bits in the Midnight Commander options menu to keep the spacing
  456. clean.
  457. .SH FILES
  458. .I @prefix@/share/mc/mc.hlp
  459. .IP
  460. The help file for the program.
  461. .PP
  462. .I @prefix@/share/mc/mc.ini
  463. .IP
  464. The default system-wide setup for GNU Midnight Commander, used only if
  465. the user's own ~/.mc/ini file is missing.
  466. .PP
  467. .I @prefix@/share/mc/mc.lib
  468. .IP
  469. Global settings for the Midnight Commander. Settings in this file
  470. affect all users, whether they have ~/.mc/ini or not.
  471. .PP
  472. .I @prefix@/share/mc/syntax/*
  473. .IP
  474. The default system-wide syntax files for mcedit, used only if
  475. the corresponding user's own ~/.mc/cedit/ file is missing.
  476. .PP
  477. .I $HOME/.mc/ini
  478. .IP
  479. User's own setup. If this file is present then the setup is loaded
  480. from here instead of the system-wide setup file.
  481. .PP
  482. .I $HOME/.mc/cedit/
  483. .IP
  484. User's own directory where block commands are processed and saved and
  485. user's own syntax files are located.
  486. .SH LICENSE
  487. This program is distributed under the terms of the GNU General Public
  488. License as published by the Free Software Foundation. See the built-in
  489. help of the Midnight Commander for details on the License and the lack
  490. of warranty.
  491. .SH AVAILABILITY
  492. The latest version of this program can be found at
  493. ftp://ftp.ibiblio.org/pub/Linux/utils/file/managers/mc/.
  494. .SH SEE ALSO
  495. cooledit(1), mc(1), gpm(1), terminfo(1), scanf(3).
  496. .SH AUTHORS
  497. Paul Sheer (psheer@obsidian.co.za) is the original author of
  498. the Midnight Commander's internal editor.
  499. .SH BUGS
  500. Bugs should be reported to mc-devel@gnome.org