Codebase list mg / fresh-snapshots/upstream mg.1
fresh-snapshots/upstream

Tree @fresh-snapshots/upstream (Download .tar.gz)

mg.1 @fresh-snapshots/upstreamraw · history · blame

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
.\"	$OpenBSD: mg.1,v 1.127 2022/10/20 18:59:24 op Exp $
.\" This file is in the public domain.
.\"
.Dd $Mdocdate: October 20 2022 $
.Dt MG 1
.Os
.Sh NAME
.Nm mg
.Nd emacs-like text editor
.Sh SYNOPSIS
.Nm mg
.Op Fl nR
.Op Fl b Ar file
.Op Fl f Ar mode
.Op Fl u Ar file
.Op + Ns Ar number
.Op Ar
.Sh DESCRIPTION
.Nm
is intended to be a small, fast, and portable editor for
people who can't (or don't want to) run emacs for one
reason or another, or are not familiar with the
.Xr vi 1
editor.
It is compatible with emacs because there shouldn't
be any reason to learn more editor types than emacs or
.Xr vi 1 .
.Pp
The options are as follows:
.Bl -tag -width Ds
.It + Ns Ar number
Go to the line specified by number (do not insert
a space between the
.Sq +
sign and the number).
If a negative number is specified, the line number counts
backwards from the end of the file i.e. +-1 will be the last
line of the file, +-2 will be second last, and so on.
.It Fl b Ar file
Turn on batch mode and execute the
.Nm
commands found in the specified
.Ar file
and then terminate.
.It Fl f Ar mode
Run the mode command for all buffers created from
arguments on the command line, including the
scratch buffer and all files.
.It Fl n
Turn off backup file generation.
.It Fl R
Files specified on the command line will be opened read-only.
.It Fl u Ar file
Use
.Ar file
as the startup file, instead of the default
.Pa ~/.mg .
.El
.Sh WINDOWS AND BUFFERS
When a file is loaded into
.Nm ,
it is stored in a
.Em buffer .
This buffer may be displayed on the screen in more than one window.
At present, windows may only be split horizontally, so each window is
delineated by a modeline at the bottom.
If changes are made to a buffer, it will be reflected in all open windows.
.Pp
If a file is changed outside
.Nm
and its buffer is about to be changed,
.Nm
prompts if the change should go ahead (y), not go ahead (n) or if the buffer
should be reverted (r) to the latest file on disk.
.Pp
If a buffer name begins and ends with an asterisk, the buffer is considered
throwaway; i.e. the user will not be prompted to save changes when
the buffer is killed.
.Sh POINT AND MARK
The current cursor location in
.Nm
is called the
.Em point
(or
.Em dot ) .
It is possible to define a window-specific region of text by setting a second
location, called the
.Em mark .
The
.Em region
is the text between point and mark inclusive.
Deleting the character at the mark position leaves
the mark at the point of deletion.
.Pp
Note: The point and mark are window-specific in
.Nm ,
not buffer-specific, as in other emacs flavours.
.Sh BACKUP FILES
Backup files have a
.Sq ~
character appended to the file name and
are created in the current working directory by default.
Whether to create backup files or not can be toggled with the
make-backup-files command.
The backup file location can either be in the current
working directory, or all backups can be moved to a
.Pa ~/.mg.d
directory where files retain their path name to retain uniqueness.
Use the backup-to-home-directory to alternate between these two locations.
Further, if any application creates backup files in
.Pa /tmp ,
these can be left with the leave-tmpdir-backups command.
.Sh TAGS
.Nm
supports tag files created by
.Xr ctags 1 ,
allowing the user to quickly locate various object definitions.
Note though that emacs uses etags, not ctags.
.Sh CSCOPE
.Nm
supports navigating source code using cscope.
However,
.Nm
requires cscope and cscope-indexer executables to be present in
.Ev PATH
for it to work.
.Sh DEFAULT KEY BINDINGS
Normal editing commands are very similar to GNU Emacs.
In the following examples, C-x means Control-x, and M-x means Meta-x,
where the Meta key may be either a special key on the keyboard
or the ALT key; otherwise ESC followed by the key X works as well.
.Pp
.Bl -tag -width xxxxxxxxxxxx -offset indent -compact
.It C-SPC
set-mark-command
.It C-a
beginning-of-line
.It C-b
backward-char
.It C-c s c
cscope-find-functions-calling-this-function
.It C-c s d
cscope-find-global-definition
.It C-c s e
cscope-find-egrep-pattern
.It C-c s f
cscope-find-this-file
.It C-c s i
cscope-find-files-including-file
.It C-c s n
cscope-next-symbol
.It C-c s p
cscope-prev-symbol
.It C-c s s
cscope-find-this-symbol
.It C-c s t
cscope-find-this-text-string
.It C-d
delete-char
.It C-e
end-of-line
.It C-f
forward-char
.It C-g
keyboard-quit
.It C-h C-h
help-help
.It C-h a
apropos
.It C-h b
describe-bindings
.It C-h c
describe-key-briefly
.It C-j
newline-and-indent
.It C-k
kill-line
.It C-l
recenter
.It RET
newline
.It C-n
next-line
.It C-o
open-line
.It C-p
previous-line
.It C-q
quoted-insert
.It C-r
isearch-backward
.It C-s
isearch-forward
.It C-t
transpose-chars
.It C-u
universal-argument
.It C-v
scroll-up
.It C-w
kill-region
.It C-x C-b
list-buffers
.It C-x C-c
save-buffers-kill-emacs
.It C-x C-f
find-file
.It C-x C-j
dired-jump
.It C-x C-g
keyboard-quit
.It C-x C-l
downcase-region
.It C-x C-o
delete-blank-lines
.It C-x C-q
toggle-read-only
.It C-x C-r
find-file-read-only
.It C-x C-s
save-buffer
.It C-x C-u
upcase-region
.It C-x C-v
find-alternate-file
.It C-x C-w
write-file
.It C-x C-x
exchange-point-and-mark
.It C-x (
start-kbd-macro
.It C-x \&)
end-kbd-macro
.It C-x 0
delete-window
.It C-x 1
delete-other-windows
.It C-x 2
split-window-vertically
.It C-x 4 C-f
find-file-other-window
.It C-x 4 C-g
keyboard-quit
.It C-x 4 b
switch-to-buffer-other-window
.It C-x 4 f
find-file-other-window
.It C-x =
what-cursor-position
.It C-x ^
enlarge-window
.It C-x `
next-error
.It C-x b
switch-to-buffer
.It C-x d
dired
.It C-x e
call-last-kbd-macro
.It C-x f
set-fill-column
.It C-x g
goto-line
.It C-x h
mark-whole-buffer
.It C-x i
insert-file
.It C-x k
kill-buffer
.It C-x n
other-window
.It C-x o
other-window
.It C-x p
previous-window
.It C-x s
save-some-buffers
.It C-x u
undo
.It C-y
yank
.It C-z
suspend-emacs
.It M-C-v
scroll-other-window
.It M-SPC
just-one-space
.It M-!
shell-command
.It M-.
find-tag
.It M-*
pop-tag-mark
.It M-%
query-replace
.It M-<
beginning-of-buffer
.It M->
end-of-buffer
.It M-\e
delete-horizontal-space
.It M-^
join-line
.It M-b
backward-word
.It M-c
capitalize-word
.It M-d
kill-word
.It M-f
forward-word
.It M-h
mark-paragraph
.It M-l
downcase-word
.It M-m
back-to-indentation
.It M-q
fill-paragraph
.It M-r
search-backward
.It M-s
search-forward
.It M-t
transpose-words
.It M-u
upcase-word
.It M-v
scroll-down
.It M-w
copy-region-as-kill
.It M-x
execute-extended-command
.It M-z
zap-to-char
.It M-{
backward-paragraph
.It M-|
shell-command-on-region
.It M-}
forward-paragraph
.It M-~
not-modified
.It M-DEL
backward-kill-word
.It C-_
undo
.It )
blink-and-insert
.It DEL
delete-backward-char
.El
.Pp
For a complete description of
.Nm
commands, see
.Sx MG COMMANDS .
To see the active keybindings at any time, type
.Dq M-x describe-bindings .
.Sh MG COMMANDS
Commands are invoked by
.Dq M-x ,
or by binding to a key.
Many commands take an optional numerical parameter,
.Va n .
This parameter is set either by
M-<n> (where
.Va n
is the numerical argument) before the command, or by
one or more invocations of the universal argument, usually bound to C-u.
When invoked in this manner, the value of the numeric parameter to
be passed is displayed in the minibuffer before the M-x.
One common use of the parameter is in mode toggles (e.g.\&
make-backup-files).
If no parameter is supplied, the mode is toggled to its
alternate state.
If a positive parameter is supplied, the mode is forced to on.
Otherwise, it is forced to off.
.\"
.Bl -tag -width xxxxx
.It apropos
Help Apropos.
Prompt the user for a string, open the *help* buffer,
and list all
.Nm
commands that contain that string.
.It audible-bell
Toggle the audible system bell.
.It auto-execute
Register an auto-execute hook; that is, specify a filename pattern
(conforming to the shell's filename globbing rules) and an associated
function to execute when a file matching the specified pattern
is read into a buffer.
.It auto-fill-mode
Toggle auto-fill mode (sometimes called mail-mode) in the current buffer,
where text inserted past the fill column is automatically wrapped
to a new line.
Can be set globally with set-default-mode.
.It auto-indent-mode
Toggle indent mode in the current buffer,
where indentation is preserved after a newline.
Can be set globally with set-default-mode.
.It back-to-indentation
Move the dot to the first non-whitespace character on the current line.
.It backup-to-home-directory
Save backup copies to a
.Pa ~/.mg.d
directory instead of working directory.
Requires make-backup-files to be on.
.It backward-char
Move cursor backwards one character.
.It backward-kill-word
Kill text backwards by
.Va n
words.
.It backward-paragraph
Move cursor backwards
.Va n
paragraphs.
Paragraphs are delimited by <NL><NL> or <NL><TAB> or <NL><SPACE>.
.It backward-word
Move cursor backwards by the specified number of words.
.It beginning-of-buffer
Move cursor to the top of the buffer.
If set, keep mark's position, otherwise set at current position.
A numeric argument
.Va n
will move n/10th of the way from the top.
.It beginning-of-line
Move cursor to the beginning of the line.
.It blink-and-insert
Self-insert a character, then search backwards and blink its
matching delimiter.
For delimiters other than
parenthesis, brackets, and braces, the character itself
is used as its own match.
Can be used in the startup file with the global-set-key command.
.It bsmap-mode
Toggle bsmap mode, where DEL and C-h are swapped.
.It c-mode
Toggle a KNF-compliant mode for editing C program files.
.It call-last-kbd-macro
Invoke the keyboard macro.
.It capitalize-word
Capitalize
.Va n
words; i.e. convert the first character of the word to
upper case, and subsequent letters to lower case.
.It cd
Change the global working directory.
See also global-wd-mode.
.It column-number-mode
Toggle whether the column number is displayed in the modeline.
.It copy-region-as-kill
Copy all of the characters in the region to the kill buffer,
clearing the mark afterwards.
This is a bit like a kill-region followed by a yank.
.It count-matches
Count the number of lines matching the supplied regular expression.
.It count-non-matches
Count the number of lines not matching the supplied regular expression.
.It cscope-find-this-symbol
List the matches for the given symbol.
.It cscope-find-global-definition
List global definitions for the given literal.
.It cscope-find-called-functions
List functions called from the given function.
.It cscope-find-functions-calling-this-function
List functions calling the given function.
.It cscope-find-this-text-string
List locations matching the given text string.
.It cscope-find-egrep-pattern
List locations matching the given extended regular expression pattern.
.It cscope-find-this-file
List filenames matching the given filename.
.It cscope-find-files-including-file
List files that #include the given filename.
.It cscope-next-symbol
Navigate to the next match.
.It cscope-prev-symbol
Navigate to the previous match.
.It cscope-next-file
Navigate to the next file.
.It cscope-prev-file
Navigate to the previous file.
.It cscope-create-list-of-files-to-index
Create cscope's List and Index in the given directory.
.It define-key
Prompts the user for a named keymap (mode),
a key, and an
.Nm
command, then creates a keybinding in the appropriate
map.
.It delete-backward-char
Delete backwards
.Va n
characters.
Like delete-char, this actually does a kill if presented
with an argument.
.It delete-blank-lines
Delete blank lines around dot.
If dot is sitting on a blank line, this command
deletes all the blank lines above and below the current line.
Otherwise, it deletes all of the blank lines after the current line.
.It delete-char
Delete
.Va n
characters forward.
If any argument is present, it kills rather than deletes,
saving the result in the kill buffer.
.It delete-horizontal-space
Delete any whitespace around the dot.
.It delete-leading-space
Delete leading whitespace on the current line.
.It delete-trailing-space
Delete trailing whitespace on the current line.
.It delete-matching-lines
Delete all lines after dot that contain a string matching
the supplied regular expression.
.It delete-non-matching-lines
Delete all lines after dot that don't contain a string matching
the supplied regular expression.
.It delete-other-windows
Make the current window the only window visible on the screen.
.It delete-window
Delete current window.
.It describe-bindings
List all global and local keybindings, putting the result in
the *help* buffer.
.It describe-key-briefly
Read a key from the keyboard, and look it up in the keymap.
Display the name of the function currently bound to the key.
.It diff-buffer-with-file
View the differences between buffer and its associated file.
.It digit-argument
Process a numerical argument for keyboard-invoked functions.
.It dired-jump
Open a dired buffer containing the current buffer's directory location.
.It downcase-region
Set all characters in the region to lower case.
.It downcase-word
Set characters to lower case, starting at the dot, and ending
.Va n
words away.
.It emacs-version
Return an
.Nm
version string.
.It end-kbd-macro
Stop defining a keyboard macro.
.It end-of-buffer
Move cursor to the end of the buffer.
If set, keep mark's position, otherwise set at current position.
A numeric argument
.Va n
will move n/10th of the way from the end.
.It end-of-line
Move cursor to the end of the line.
.It enlarge-window
Enlarge the current window by shrinking either the window above
or below it.
.It eval-current-buffer
Evaluate the current buffer as a series of
.Nm
commands.
Useful for testing
.Nm
startup files.
.It eval-expression
Get one line from the user, and run it.
Useful for testing expressions in
.Nm
startup files.
.It exchange-point-and-mark
Swap the values of "dot" and "mark" in the current window.
Return an error if no mark is set.
.It execute-extended-command
Invoke an extended command; i.e. M-x.
Call the message line routine to read in the command name and apply
autocompletion to it.
When it comes back, look the name up in the symbol table and run the
command if it is found, passing arguments as necessary.
Print an error if there is anything wrong.
.It fill-paragraph
Justify a paragraph, wrapping text at the current fill column.
.It find-file
Select a file for editing.
First check if the file can be found
in another buffer; if it is there, just switch to that buffer.
If the file cannot be found, create a new buffer, read in the
file from disk, and switch to the new buffer.
.It find-file-read-only
Same as find-file, except the new buffer is set to read-only.
.It find-alternate-file
Replace the current file with an alternate one.
Semantics for finding the replacement file are the same as
find-file, except the current buffer is killed before the switch.
If the kill fails, or is aborted, revert to the original file.
.It find-file-other-window
Opens the specified file in a second buffer.
Splits the current window if necessary.
.It find-tag
Jump to definition of tag at dot.
.It forward-char
Move cursor forwards (or backwards, if
.Va n
is negative)
.Va n
characters.
Returns an error if the end of buffer is reached.
.It forward-paragraph
Move forward
.Va n
paragraphs.
Paragraphs are delimited by <NL><NL> or <NL><TAB> or <NL><SPACE>.
.It forward-word
Move the cursor forward by the specified number of words.
.It global-set-key
Bind a key in the global (fundamental) key map.
.It global-unset-key
Unbind a key from the global (fundamental) key map; i.e. set it to 'rescan'.
.It global-wd-mode
Toggle global working-directory mode.
When enabled,
.Nm
defaults to opening files (and executing commands like compile and grep)
relative to the global working directory.
When disabled, a working directory is set for each buffer.
.It goto-line
Go to a specific line.
If an argument is present, then
it is the line number, else prompt for a line number to use.
.It help-help
Prompts for one of (a)propos, (b)indings, des(c)ribe key briefly.
.It insert
Insert a string, mainly for use from macros.
.It insert-buffer
Insert the contents of another buffer at dot.
.It insert-file
Insert a file into the current buffer at dot.
.It insert-with-wrap
Insert the bound character with word wrap.
Check to see if we're past the fill column, and if so,
justify this line.
.It isearch-backward
Use incremental searching, initially in the reverse direction.
isearch ignores any explicit arguments.
If invoked during macro definition or evaluation, the non-incremental
search-backward is invoked instead.
.It isearch-forward
Use incremental searching, initially in the forward direction.
isearch ignores any explicit arguments.
If invoked during macro definition or evaluation, the non-incremental
search-forward is invoked instead.
.It join-line
Join the current line to the previous.
If called with an argument,
join the next line to the current one.
.It just-one-space
Delete any whitespace around dot, then insert a space.
.It keyboard-quit
Abort the current action.
.It kill-buffer
Dispose of a buffer, by name.
If the buffer name does not start and end with an asterisk,
prompt the user if the buffer
has been changed.
.It kill-line
Kill line.
If called without an argument, it kills from dot to the end
of the line, unless it is at the end of the line, when it kills the
newline.
If called with an argument of 0, it kills from the start of the
line to dot.
If called with a positive argument, it kills from dot
forward over that number of newlines.
If called with a negative argument
it kills any text before dot on the current line, then it kills back
abs(n) lines.
.It kill-paragraph
Delete
.Va n
paragraphs starting with the current one.
.It kill-region
Kill the currently defined region.
.It kill-word
Delete forward
.Va n
words.
.It leave-tmpdir-backups
Modifies the behaviour of backup-to-home-directory.
Backup files that would normally reside in
.Pa /tmp
are left there and not moved to the
.Pa ~/.mg.d
directory.
.It line-number-mode
Toggle whether the line number is displayed in the modeline.
.It list-buffers
Display the list of available buffers.
The first column in the output indicates which buffer is active with a '>'
character.
The second column indicates which buffers are modified.
The third column indicates which buffers are read-only.
The remaining columns are self-explanatory.
.It load
Prompt the user for a filename, and then execute commands
from that file.
.It local-set-key
Bind a key mapping in the local (topmost) mode.
.It local-unset-key
Unbind a key mapping in the local (topmost) mode.
.It make-backup-files
Toggle generation of backup files.
Enabled by default.
.It make-directory
Prompt the user for a path or directory name which is then created.
.It mark-paragraph
Mark
.Va n
paragraphs.
.It mark-whole-buffer
Marks whole buffer as a region by putting dot at the beginning and mark
at the end of buffer.
.It meta-key-mode
When disabled, the meta key can be used to insert extended-ascii (8-bit)
characters.
When enabled, the meta key acts as usual.
.It negative-argument
Process a negative argument for keyboard-invoked functions.
.It newline
Insert a newline into the current buffer.
.It newline-and-indent
Insert a newline, then enough tabs and spaces to duplicate the indentation
of the previous line.
Assumes tabs are every eight characters.
.It next-line
Move forward
.Va n
lines.
.\" .It no-tab-mode
.\" Toggle notab mode.
.\" In this mode, spaces are inserted rather than tabs.
.It not-modified
Turn off the modified flag in the current buffer.
.It open-line
Open up some blank space.
Essentially, insert
.Va n
newlines, then back up over them.
.It other-window
The command to make the next (down the screen) window the current
window.
There are no real errors, although the command does nothing if
there is only 1 window on the screen.
.It overwrite-mode
Toggle overwrite mode in the current buffer,
where typing overwrites existing characters rather than inserting them.
Can be set globally with set-default-mode.
.It prefix-region
Inserts a prefix string before each line of a region.
The prefix string is settable by using 'set-prefix-string'.
.It previous-line
Move backwards
.Va n
lines.
.It previous-window
This command makes the previous (up the screen) window the
current window.
There are no errors, although the command does not do
a lot if there is only 1 window.
.It pop-tag-mark
Return to position where find-tag was previously invoked.
.It push-shell
Suspend
.Nm
and switch to alternate screen, if available.
.It pwd
Display current (global) working directory in the status area.
.It query-replace
Query Replace.
Search and replace strings selectively, prompting after each match.
.It replace-regexp
Replace regular expression globally without individual prompting.
.It replace-string
Replace string globally without individual prompting.
.It query-replace-regexp
Replace strings selectively.
Does a search and replace operation using regular
expressions for both patterns.
.It quoted-insert
Insert the next character verbatim into the current buffer; i.e. ignore
any function bound to that key.
.It re-search-again
Perform a regular expression search again, using the same search
string and direction as the last search command.
.It re-search-backward
Search backwards using a regular expression.
Get a search string from the user, and search, starting at dot
and proceeding toward the front of the buffer.
If found, dot is left
pointing at the first character of the pattern [the last character that
was matched].
.It re-search-forward
Search forward using a regular expression.
Get a search string from the user and search for it starting at dot.
If found, move dot to just after the matched characters.
display does all
the hard stuff.
If not found, it just prints a message.
.It recenter
Reposition dot in the current window.
By default, the dot is centered.
If given a positive argument (n), the display is repositioned to line
n.
If
.Va n
is negative, it is that line from the bottom.
.It redraw-display
Refresh the display.
Recomputes all window sizes in case something has changed.
.It revert-buffer
Revert the current buffer to the latest file on disk.
.It save-buffer
Save the contents of the current buffer if it has been changed,
optionally creating a backup copy.
.It save-buffers-kill-emacs
Offer to save modified buffers and quit
.Nm .
.It save-some-buffers
Look through the list of buffers, offering to save any buffer that
has been changed.
Buffers that are not associated with files (such
as *scratch*, *grep*, *compile*) are ignored.
.It scroll-down
Scroll backwards
.Va n
pages.
A two-line overlap between pages is
assumed.
If given a repeat argument, scrolls back lines, not pages.
.It scroll-one-line-down
Scroll the display down
.Va n
lines without changing the cursor position.
.It scroll-one-line-up
Scroll the display
.Va n
lines up without moving the cursor position.
.It scroll-other-window
Scroll the next window in the window list window forward
.Va n
pages.
.It scroll-up
Scroll forward one page.
A two-line overlap between pages is
assumed.
If given a repeat argument, scrolls back lines, not pages.
.It search-again
Search again, using the same search string and direction as the last
search command.
.It search-backward
Reverse search.
Get a search string from the user, and search, starting
at dot and proceeding toward the front of the buffer.
If found, dot is
left pointing at the first character of the pattern (the last character
that was matched).
.It search-forward
Search forward.
Get a search string from the user, and search for it
starting at dot.
If found, dot gets moved to just after the matched
characters, if not found, print a message.
.It self-insert-command
Insert a character.
.It sentence-end-double-space
Toggle double or single spaces for end of sentences.
Double is the default.
Currently only affects fill-paragraph.
.It set-case-fold-search
Set case-fold searching, causing case not to matter
in regular expression searches.
This is the default.
.It set-case-replace
Preserve the case of the replaced string.
This is the default.
.It set-default-mode
Append the supplied mode to the list of default modes
used by subsequent buffer creation.
Built in modes include: fill, indent and overwrite.
.It set-fill-column
Prompt the user for a fill column.
Used by auto-fill-mode.
.It set-mark-command
Sets the mark in the current window to the current dot location.
.It set-prefix-string
Sets the prefix string to be used by the 'prefix-region' command.
.It shell-command
Execute external command from mini-buffer.
.It shell-command-on-region
Provide the text in region to the shell command as input.
.It shrink-window
Shrink current window by one line.
The window immediately below is expanded to pick up the slack.
If only one window is present, this command has no effect.
.It split-window-vertically
Split the current window.
A window smaller than 3 lines cannot be split.
.It start-kbd-macro
Start defining a keyboard macro.
Macro definition is ended by invoking end-kbd-macro.
.It suspend-emacs
Suspend
.Nm
and switch back to alternate screen, if in use.
.It switch-to-buffer
Prompt and switch to a new buffer in the current window.
.It switch-to-buffer-other-window
Switch to buffer in another window.
.It toggle-read-only
Toggle the read-only flag on the current buffer.
.It toggle-read-only-all
Toggle the read-only flag on all non-ephemeral buffers.
A simple toggle that switches a global read-only flag either on
or off.
.It transpose-chars
Transpose the two characters in front of and under dot,
then move forward one character.
Treat newline characters the same as any other.
.It transpose-paragraphs
Transpose adjacent paragraphs.
If multiple iterations are requested, the current paragraph will
be moved
.Va n
paragraphs forward.
.It transpose-words
Transpose adjacent words.
.It undo
Undo the most recent action.
If invoked again without an intervening command,
move the undo pointer to the previous action and undo it.
.It undo-boundary
Add an undo boundary.
This is not usually done interactively.
.It undo-boundary-toggle
Toggle whether undo boundaries are generated.
Undo boundaries are often disabled before operations that should
be considered atomically undoable.
.It undo-enable
Toggle whether undo information is kept.
.It undo-list
Show the undo records for the current buffer in a new buffer.
.It universal-argument
Repeat the next command 4 times.
Usually bound to C-u.
This command may be stacked; e.g.\&
C-u C-u C-f moves the cursor forward 16 characters.
.It upcase-region
Upper case region.
Change all of the lower case characters in the region to
upper case.
.It upcase-word
Move the cursor forward by the specified number of words.
As it moves, convert any characters to upper case.
.It visible-bell
Toggle the visible bell.
If this toggle is on, the modeline will flash.
.It visit-tags-table
Record name of the tags file to be used for subsequent find-tag.
.It what-cursor-position
Display a bunch of useful information about the current location of
dot.
The character under the cursor (in octal), the current line, row,
and column, and approximate position of the cursor in the file (as a
percentage) is displayed.
The column position assumes an infinite
position display; it does not truncate just because the screen does.
.It write-file
Ask for a file name and write the contents of the current buffer to
that file.
Update the remembered file name and clear the buffer
changed flag.
.It yank
Yank text from kill-buffer.
Unlike emacs, the
.Nm
kill buffer consists only
of the most recent kill.
It is not a ring.
.It zap-to-char
Ask for a character and delete text from the current cursor position
until the next instance of that character, including it.
.It zap-up-to-char
Like zap-to-char but doesn't delete the target character.
.El
.Sh MG DIRED KEY BINDINGS
Specific key bindings are available in dired mode.
.Pp
.Bl -tag -width xxxxxxxxxxxxxxxxxx -offset indent -compact
.It DEL
dired-unmark-backward
.It RET, e, f and C-m
dired-find-file
.It SPC, n
dired-next-line
.It !
dired-shell-command
.It +
dired-create-directory
.It a
dired-find-alternate-file
.It c
dired-do-copy
.It d and C-d
dired-flag-file-deletion
.It g
dired-revert
.It j
dired-goto-file
.It o
dired-find-file-other-window
.It p
dired-previous-line
.It q
quit-window
.It r
dired-do-rename
.It u
dired-unmark
.It x
dired-do-flagged-delete
.It C-v
dired-scroll-down
.It M-v
dired-scroll-up
.El
.Sh MG DIRED COMMANDS
The following are a list of the commands specific to dired mode:
.Bl -tag -width Ds
.It dired-create-directory
Create a directory.
.It dired-do-copy
Copy the file listed on the current line of the dired buffer.
.It dired-do-flagged-delete
Delete the files that have been flagged for deletion.
.It dired-do-rename
Rename the file listed on the current line of the dired buffer.
.It dired-find-alternate-file
Replace the current dired buffer with an alternate one as specified
by the position of the cursor in the dired buffer.
.It dired-find-file
Open the file on the current line of the dired buffer.
If the cursor is on a directory, it will be opened in dired mode.
.It dired-flag-file-deletion
Flag the file listed on the current line for deletion.
This is indicated in the buffer by putting a D at the left margin.
No files are actually deleted until the function dired-do-flagged-delete
is executed.
.It dired-find-file-other-window
Open the file on the current line of the dired buffer in a
different window.
.It dired-goto-file
Move the cursor to a file name in the dired buffer.
.It dired-next-line
Move the cursor to the next line.
.It dired-other-window
This function works just like dired, except that it puts the
dired buffer in another window.
.It dired-previous-line
Move the cursor to the previous line.
.It dired-revert
Refresh the dired buffer while retaining any flags.
.It dired-scroll-down
Scroll down the dired buffer.
.It dired-scroll-up
Scroll up the dired buffer.
.It dired-shell-command
Pipe the file under the current cursor position through a shell command.
.It dired-unmark
Remove the deletion flag for the file on the current line.
.It dired-unmark-backward
Remove the deletion flag from the file listed on the previous line
of the dired buffer, then move up to that line.
.It quit-window
Close the current dired buffer.
.El
.Sh CONFIGURATION FILES
There are two configuration files,
.Pa .mg
and
.Pa .mg-TERM .
Here,
.Ev TERM
represents the name of the terminal type; e.g. if the terminal type
is set to
.Dq vt100 ,
.Nm
will use
.Pa .mg-vt100
as a startup file.
The terminal type startup file is used first.
.Pp
The startup file format is a list of commands, one per line, as used for
interactive evaluation.
Strings that are normally entered by the user at any subsequent prompts
may be specified after the command name; e.g.:
.Bd -literal -offset indent
global-set-key ")" self-insert-command
global-set-key "\e^x\e^f" find-file
global-set-key "\ee[Z" backward-char
set-default-mode fill
set-fill-column 72
auto-execute *.c c-mode
.Ed
.Pp
Comments can be added to the startup files by placing
.Sq ;\&
or
.Sq #
as the first character of a line.
.Sh FILES
.Bl -tag -width /usr/share/doc/mg/tutorial -compact
.It Pa ~/.mg
normal startup file
.It Pa ~/.mg-TERM
terminal-specific startup file
.It Pa ~/.mg.d
alternative backup file location
.It Pa /usr/share/doc/mg/tutorial
concise tutorial
.El
.Sh SEE ALSO
.Xr ctags 1 ,
.Xr vi 1
.Sh CAVEATS
Since it is written completely in C, there is currently no
language in which extensions can be written;
however, keys can be rebound and certain parameters can be changed
in startup files.
.Pp
In order to use 8-bit characters (such as German umlauts), the Meta key
needs to be disabled via the
.Dq meta-key-mode
command.
.Pp
Multi-byte character sets, such as UTF-8, are not supported.