aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man1/window.1
blob: b5a840c60967433e31c36f7125f56e38abc4ff1d (plain) (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
.\" Copyright (c) 1985, 1990, 1993
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" This code is derived from software contributed to Berkeley by
.\" Edward Wang at The University of California, Berkeley.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"	@(#)window.1	8.2 (Berkeley) 12/30/93
.\" %FreeBSD: src/usr.bin/window/window.1,v 1.5.2.6 2002/06/21 15:30:19 charnier Exp %
.\" $FreeBSD$
.\"
.Dd December 30, 1993
.Dt WINDOW 1
.Os
.Sh 名称
.Nm window
.Nd ウィンドウ環境を実現します
.Sh 書式
.Nm
.Op Fl t
.Op Fl f
.Op Fl d
.Op Fl e Ar escape-char
.Op Fl c Ar command
.Sh 解説
.Nm
ユーティリティは、
.Tn ASCII
端末上でウィンドウ環境を実装します。
.Pp
ウィンドウとは物理的な端末スクリーンの中の部分的な長方形部分を指し、
ここをプロセスの集合が利用します。その大きさと位置はユーザがいつでも
変更できます。プロセスは
標準入力、標準出力、標準エラー出力を通して端末と通信する通常の方法と
同じ方法で、そのウィンドウと通信します。
ウィンドウプログラムはそのウィンドウに対する入力と出力のリダイレクトに関する
細かい処理を行います。どんな時でも、 1 つのウィンドウだけがキーボードからの
入力を受けることが出来ますが、全てのウィンドウが同時にディスプレイへの出力を
送ることが可能です。
.Pp
.Nm
が立ち上がった時、ユーザのホームディレクトリにある
.Pa .windowrc
内のコマンドが実行されます。もしこのファイルが存在しない時は、
デフォルトとして同じ大きさのウィンドウが 2 つ作成されます。
.Pp
コマンドラインオプションには以下のものがあります。
.Bl -tag -width Fl
.It Fl t
terse モードをオンにします
(以下の
.Ic terse
コマンドを参照)。
.It Fl f
高速モードです。スタートアップ動作は何もしません。
.It Fl d
.Pa .windowrc
を無視する代わりに 2 つのデフォルトウィンドウを作成します。
.It Fl e Ar escape-char
エスケープ文字を
.Ar escape-char
にします。
.Ar escape-char
は文字 1 つか、もしくは
.Ic ^X
.Ns ( No control\- Ns Ar X
) のような形式です
.Ns ( Ar X
はどんな文字でも構いません)。
.It Fl c Ar command
.Ar command
をロングコマンド(以下参照)として最初に実行します。
.El
.Pp
ウィンドウはオーバラップ可能で、枠が必要です。
各ウィンドウには、``1'' から ``9'' の数字のうちの一つの名前が
付いています。この一文字の識別子は、ユーザが定義できるラベル文字と
同じように、ウィンドウのフレームの上の辺に表示されます。
ウィンドウは
.Ar フォアグラウンド
にあるように設計されています。フォアグランドウィンドウは、
普通の他のフォアグラウンドではないウィンドウよりもつねに上にあります。
このウィンドウより上になるのは、他のフォアグランドウィンドウだけです。
ウィンドウは、端末画面の辺内に完全に入っている必要はありません。
したがって、(画面よりも大きくても良い)大きいウィンドウは、その全画面の
一部分だけが表示されるでしょう。
.Pp
各ウィンドウは、カーソルと制御機能を持っています。最も知的な端末操作、
すなわち行や文字消去や挿入が提供されています。下線を引いたり反転表示等の
ディスプレイモードは、端末によって提供されている場合には、利用可能です。
更に、複数ページ分のメモリがある端末と同じように、各ウィンドウは
ウィンドウ画面に表示されるよりも多くの行を保持できるテキストバッファを
持っています。
.Ss プロセス環境
新しく作成されたウィンドウでは、
呼び出されたウィンドウからプロセス環境を引き継いで、
シェルプログラムが実行されます。
標準入力・出力・エラー出力は、仮想端末 (
.Xr pty 4
参照) または、
.Ux
ドメインのソケット (
.Xr socketpair 2
参照)と結びつけられます。
仮想端末が使われている場合、特別な文字やモード(
.Xr stty 1
参照)は、物理端末から複製されます。
このウィンドウに対する
.Xr termcap 5
のエントリが作成されて、環境として(
.Xr environ 7
参照)変数
.Ev TERMCAP
に渡されます。
termcap エントリには、下線・反転表示・その他の表示モード・
可能であれば端末のファンクションキーによって生み出されるコード等の
物理端末からの情報と同じように、ウィンドウの大きさや特徴が含まれています。
更に、仮想端末のウィンドウサイズ属性は、ウィンドウの大きさを反映するように
設定され、その大きさが変更された場合はその情報が更新されます。
特に、エディタ
.Xr vi 1
は、この情報を画面を再表示するために利用します。
.Ss 操作
普通の実行中には、
.Nm
は、二つの状態の内の一つの状態にあります。
この二つの状態は、会話モードとコマンドモードです。
会話モードでは、端末の実際のカーソルは、特定のウィンドウのカーソル位置
に位置します。この特定のウィンドウはカレントウィンドウと呼ばれます。
そして、キーボードからの入力は、そのウィンドウにあるプロセスに
送られます。カレントウィンドウは、他のウィンドウがフォアグランドに
ある時を除いて、いつも他のウィンドウよりも上にあります。
更に、その識別子とラベルは反転表示で強調されています。
.Pp
.Nm
のエスケープ文字 (通常は、
.Ic ^P
です) を入力することで、会話モードからコマンドモードへ移行します。
コマンドモードでは、端末画面の一番上の行は
コマンドプロンプトウィンドウに変わり、
.Nm
はキーボードからの入力をウィンドウを操作するコマンドであると解釈します。
.Pp
二つの種類のコマンドがあります。短いコマンドは普通 1文字ないし 2文字
から構成されます。長いコマンドはコマンドウィンドウ (以下の
.Dq Ic \&:
コマンドを参照) で入力される文字列もしくは、ファイル (以下の
.Ic source
参照) から読み込まれます。
.Ss 短いコマンド
以下では、
.Ar \&#
は、ウィンドウ 1 から 9 に結びつけられた、
数字の ``1'' から ``9'' のひとつを表現します。
.Ic ^X
は、
.No control\- Ns Ar X
を意味します。ここで、
.Ar X
は任意の文字です。
特に、
.Ic ^^
は、
.Li control\-^
です。
.Ar escape
はエスケープキーもしくは、
.Ic ^\&[
です。
.Bl -tag -width Ds
.It Ar #
ウィンドウ
.Ar #
をカレントウィンドウとして選択し、会話モードに戻ります。
.It Ic \&% Ns Ar #
ウィンドウ
.Ar #
を選択しますが、コマンドモードのままです。
.It Ic ^^
一つ前のウィンドウを選択し、会話モードに戻ります。
これは、二つのウィンドウの間を交互に移動する時に便利です。
.It Ic escape
会話モードに戻ります。
.It Ic ^P
会話モードに戻り、現在のウィンドウに
.Ic ^P
を書き込みます。したがって、会話モード中で二つの
.Ic ^P
を入力することで、一つを現在のウィンドウに送ることができます。
.Nm
のエスケープを別の文字に変更している場合には、その文字がここでいう
.Ic ^P
と同じ動作をします。
.It Ic \&?
コマンドの短いまとめを表示します。
.It Ic ^L
画面を再描画します。
.It Ic q
.Nm
を終了します。
確認が行われます。
.It Ic ^Z
.Nm
を中断します。
.It Ic w
新しいウィンドウを作成します。ユーザはウィンドウの左上の場所と
右下の場所を指定します。カーソルが画面上に表示され、
``h'', ``j'', ``k'', ``l'' キーでカーソルをそれぞれ 左 , 下 , 上 , 右
に移動します。
``H'', ``J'', ``K'', ``L'' キーでは、カーソルはそれぞれの方向の
画面の限界まで移動します。移動キーの前に数字を入力することで、
移動を数字の回数だけ繰り返します。リターンでカーソル位置をウィンドウの
左上の位置として入力します。右下の角も同じような方法で入力します。
この手続き中には、新しいウィンドウの位置は画面に表示される長方形の
箱として示されます。この枠が、新しいウィンドウが表示される枠です。
エスケープキーを入力することで、どの時点でも、このコマンドを
キャンセルします。
.Pp
このウィンドウはカレントウィンドウになります。そして、最初に利用可能な
ID が与えられます。また、デフォルトのバッファサイズが使われます (以下の
.Ar default_nline
コマンドを参照)。
.Pp
完全に見ることのできるウィンドウだけがこの方法で作成できます。
.It Ic c Ns Ar #
ウィンドウ
.Ar #
を閉じます。
ウィンドウ中のプロセスには、回線切断シグナル (
.Xr kill 1
参照) が送られます。
.Xr csh 1
は、このシグナルを正しく扱うべきで、そうであれば問題は起こりません。
.It Ic m Ns Ar #
ウィンドウ
.Ar #
を別の位置に移動します。
ウィンドウの形をした箱が新しい位置を示すために画面に表示され、
.Ic w
コマンドで使われたのと同じようなキーで箱の位置を指定できます。
ウィンドウは一部が画面の外にでても構いません。
.It Ic M Ns Ar #
ウィンドウ
.Ar #
を以前の位置に動かします。
.It Ic s Ns Ar #
ウィンドウ
.Ar #
の大きさを変更します。
ウィンドウの新しい右下の角を指定する必要があります。
新しいウィンドウの大きさを示すために、箱が書かれます。
.Ic w
や
.Ic m
コマンドで使われたのと同じキーが位置を入力するために使われます。
.It Ic S Ns Ar #
ウィンドウ
.Ar #
を以前の大きさに変更します。
.It Ic ^Y
カレントウィンドウを一行上にスクロールします。
.It Ic ^E
カレントウィンドウを一行下にスクロールします。
.It Ic ^U
カレントウィンドウを画面の半分上にスクロールします。
.It Ic ^D
カレントウィンドウを画面の半分下にスクロールします。
.It Ic ^B
カレントウィンドウを一画面分、上にスクロールします。
.It Ic ^F
カレントウィンドウを一画面分、下にスクロールします。
.It Ic h
カレントウィンドウのカーソルを一カラム左に動かします。
.It Ic j
カレントウィンドウのカーソルを一行下に動かします。
.It Ic k
カレントウィンドウのカーソルを一行上に動かします。
.It Ic l
カレントウィンドウのカーソルを一カラム右に動かします。
.It Ic y
ヤンクします。ユーザはカレントウィンドウの 2点を指定します。
この 2点で示される内容がヤンクバッファに保存されます。
.It Ic p
プットです。ヤンクバッファの内容を、現在のウィンドウに入力として
書き込みます。
.It Ic ^S
カレントウィンドウの出力を停止します。
.It Ic ^Q
カレントウィンドウの出力を開始します。
.It Ic :
長いコマンドとして実行する行を入力します。
通常の行編集文字 (エスケープ文字、単語の消去、行の消去) が提供されます。
.El
.Ss 長いコマンド
ロングコマンドはプログラム言語の様に解釈される文の列です。
この文法は C 言語に似ています。数字や文字列の表現や変数が、
条件分岐と同じように提供されています。
.Pp
二つのデータ型があります。文字列と数字です。
文字列は、文字で始まる文字や数字の列です。 ``_'' と ``.'' は文字と
考えられます。別の方法として、アルファベットや数字に含まれない文字を
``"''で括るか、``\\''でエスケープすることで、文字列に含めることもできます。
更に、 C言語で提供されている ``\\'' シーケンスがクオートの内外で
利用可能です
(例えば、 ``\\n'' は改行を、``\\r'' はキャリッジリターンを表現します)。
以下の例は規則にあった文字列です。
abcde01234, "&#$^*&#", ab"$#"cd, ab\\$\\#cd, "/usr/ucb/window"
.Pp
数字は、以下の3つの形式のうちの一つの整数値です。
10進数・``0'' に続いて表現される 8 進数・``0x'' もしくは ``0X'' に続いて
表現される 16 進数です。機械にとって自然な整数サイズが使われます
(つまり、 Cコンパイラの符号付き整数型です)。 C 言語と同じように、
非ゼロの表現が論理的な真をあらわします。
.Pp
文字 ``#'' は、行末までのコメントの始まりを表現します。
.Pp
文は条件式もしくは式です。式文は改行
もしくは ``;'' で終りになります。式を次の行に継続するためには、
最初の行を ``\\'' で終らせます。
.Ss 条件文
.Nm
ユーティリティは、単一の制御構造を持ちます:
それは完全にまとめられた if 文で、以下の形式です
.Pp
.Bd -literal -offset indent -compact
if <expr> then
\t<statement>
\t...
elsif <expr> then
\t<statement>
\t...
else
\t<statement>
\t...
endif
.Ed
.Pp
.Ic else
や
.Ic elsif
部分はオプションです。
.Ic elsif
は、必要なだけ繰り返して利用することができます。
<expr>
は数値である必要が有ります。
.Ss 式
.Nm
における式は、 C 言語中のものと似ており、ほとんどの C の演算子が
数値オペランドとして提供されています。更に、いくつかの演算子は、
文字列を操作するために拡張されています。
.Pp
ある式が文として使われている時、その値は評価の後で
捨てられます。したがって、(代入や関数呼び出しの様な)
副作用を持った式のみが文として有用です。
.Pp
(配列でない) 一つの値の変数が、数値と文字列に対して提供されています。
いくつかの変数は、あらかじめ定義されています。
これらは後でに示してあります。
.Pp
優先順序が増加していくように、演算子を以下に示します。
.Bl -tag -width Fl
.It Xo
.Aq Va expr1
.Ic =
.Aq Va expr2
.Xc
代入です。名前が
.Aq Va expr1
で文字列を値として持つ変数に、
.Aq Va expr2
の結果が代入されます。
.Aq Va expr2
の値を返します。
.It Xo
.Aq Va expr1
.Ic ?
.Aq Va expr2
.Ic :
.Aq Va expr3
.Xc
.Aq Va expr1
の評価値が真 (非 0 数値) である時、
.Aq Va expr2
の値を返します。そうでない場合は、
.Aq Va expr3
の値を返します。
.Aq Va expr2
と
.Aq Va expr3
のどちらか一方だけが、評価されます。
.Aq Va expr1
は数値表現でなくてはなりません。
.It Xo
.Aq Va expr1
.Ic \&|\&|
.Aq Va expr2
.Xc
論理的和 (or) です。数値だけが使えます。短絡評価が提供されています
(つまり、
.Aq Va expr1
が評価されて真である場合は、
.Aq Va expr2
は評価されません)。
.It Xo
.Aq Va expr1
.Ic \&&\&&
.Aq Va expr2
.Xc
短絡評価付きの論理的積 (and) です。数値だけが使えます。
.It Xo
.Aq Va expr1
.Ic \&|
.Aq Va expr2
.Xc
ビット毎の論理和 (or) です。数値だけが使えます。
.It Xo
.Aq Va expr1
.Ic ^
.Aq Va expr2
.Xc
ビット毎の排他的論理和 (xor) です。数値だけが使えます。
.It Xo
.Aq Va expr1
.Ic \&&
.Aq Va expr2
.Xc
ビット毎の論理積 (and) です。数値だけが使えます。
.It Xo
.Aq Va expr1
.Ic ==
.Aq Va expr2 ,
.Aq Va expr1
.Ic !=
.Aq expr2
.Xc
(それぞれ、等価と非等価の) 比較です。ブール値の結果 (1 か 0 のどちらか)
が比較の結果として返されます。
オペランドは、数値もしくは文字列です。片一方が文字列の場合、
他のオペランドも必要であれば変換されます。
.It Xo
.Aq Va expr1
.Ic <
.Aq Va expr2 ,
.Aq Va expr1
.Ic >
.Aq Va expr2 ,
.Aq Va expr1
.Ic <=
.Aq Va expr2 ,
.Aq Va expr1
.Ic >=
.Aq Va expr2
.\" >= を補足
.\" Aug 31 1997 <horikawa@jp.freebsd.org>
.Xc
それぞれ、より小さい・より大きい・以下・以上をあらわします。
数値と文字列の両方が利用可能です。
上で述べたように、自動的な変換が行われます。
.It Xo
.Aq Va expr1
.Ic <<
.Aq Va expr2 ,
.Aq Va expr1
.Ic >>
.Aq Va expr2
.Xc
両方のオペランドが数値である場合、
.Aq Va expr1
は、左 (もしくは、右) に
.Aq Va expr2
ビットシフトされます。
.Aq Va expr1
が文字列で、最初 (もしくは、最後) の
.Aq Va expr2
文字が返されます(
.Aq Va expr2
も文字列の場合、その長さがその値として利用されます)。
.It Xo
.Aq Va expr1
.Ic +
.Aq Va expr2 ,
.Aq Va expr1
.Ic -
.Aq Va expr2
.Xc
数値においては、加算と減算です。
``+'' に対して、片方が文字列の場合、他方は文字列に変換され、
結果は二つの文字列の結合となります。
.It Xo
.Aq Va expr1
.Ic \&*
.Aq Va expr2 ,
.Aq Va expr1
.Ic \&/
.Aq Va expr2 ,
.Aq Va expr1
.Ic \&%
.Aq Va expr2
.Xc
かけ算・割算・モジュロ演算 (余りの計算) です。 数字だけが利用可能です。
.\".(訳注)モジュロ演算の後ろのカッコは訳で付け加えました。
.\" 2.2.1R 対象(1997/06/02) Takeshi MUTOH <mutoh@info.nara-k.ac.jp>
.It Xo
.Ic \- Ns Aq Va expr ,
.Ic ~ Ns Aq Va expr ,
.Ic \&! Ns Aq Va expr ,
.Ic \&$ Ns Aq Va expr ,
.Ic \&$? Ns Aq Va expr
.Xc
最初の 3つは、単項演算子のマイナス・ビット毎の補をとる (ビットの反転)
・論理的な否定であり、数値だけを取ります。
演算子 ``$'' は
.Aq Va expr
を取り、その名前の変数の値を返します。
.Aq Va expr
が値
.Ar n
を持った数値で、それが (後述の) 別名マクロ中に現れた場合、
別名呼び出しの n 番目の引数を参照します。
``$?'' は変数
.Aq Va expr
の存在を調べ、存在する場合は 1 を、それ以外では 0 を返します。
.It Xo
.Ao Va expr Ac Ns Pq Aq Ar arglist
.Xc
関数呼び出しです。
.Aq Va expr
は文字列でなくてはならず、
.Nm
の組み込み関数名の区別できる範囲でのプレフィックスであるか、
ユーザ定義の別名マクロの完全な名前でなくてはなりません。
組み込み関数の場合、
.Aq Ar arglist
は以下の 2つの形式のどちらか一方です。
.Bd -literal -offset indent
<expr1>, <expr2>, ...
argname1 = <expr1>, argname2 = <expr2>, ...
.Ed
.Pp
実際、両方の形式はお互い混ぜて使うことができますが、その結果は
予想できません。ほとんどの引数は省略可能です。デフォルトの値が
それらに対しては適用されます。
.Ar argnames
は、引数名を区別できる範囲でのプレフィックスとすることができます。
引数を分離するコンマは、曖昧さを避けるためだけに用いられ、
通常は省略できます。
.Pp
最初の引数の形式は、ユーザ定義別名のために有効です。別名は、
.Ic alias
組み込み関数を使うことで定義されます(以下参照)。
引数は、変数機能の変種を使ってアクセスされます (前述の ``$''
演算子を参照)。
.Pp
ほとんどの関数は値を返しますが、いくつかは副作用のためだけに
使われるため文として使われなければなりません。
関数や別名が文として使われた時、引数リストを囲むカッコは
省略可能です。別名は値を返しません。
.El
.Ss  組み込み関数
引数は自然な順番で名前で並べられます。
オプション引数は、四角カッコ
.Sq Op
で囲みます。名前の無い引数は、角カッコ
.Sq <>
内に書きます。
ブール値のフラグを意味する引数 (しばしば
.Ar flag
という名前を付けられます) は、意味が明らかである
.Ar on ,
.Ar off ,
.Ar yes ,
.Ar no ,
.Ar true ,
.Ar false ,
の内の一つの値をもつか、数値表現においては非ゼロの値が真となります。
.Bl -tag -width Fl
.It Ic alias Ns Po
.Bq Aq Ar string ,
.Bq Aq Ar string\-list
.Pc
引数が与えられない場合は、全ての現在定義されている別名マクロが
表示されます。そうでない場合、
.Aq Ar string
が表現
.Aq Ar string\-list
の別名として定義されます。もし存在すれば、以前の
.Aq Ar string
の定義が返されます。デフォルトでは、
.Aq Ar string\-list
は変更されません。
.It Ic close Ns Pq Aq Ar window\-list
.Aq Ar window\-list
で指定されたウィンドウを閉じます。
.Aq Ar window\-list
が単語
.Ar all
の場合、全てのウィンドウが閉じられます。値は返しません。
.It Ic cursormodes Ns Pq Bq Ar modes
ウィンドウカーソルを
.Ar modes
に設定します。
.Ar modes
は、変数
.Ar m_ul
(下線)、
.Ar m_rev
(反転表示)、
.Ar m_blk
(点滅)、
.Ar m_grp
(グラフィック、端末依存です。)で示される
モードビットのビット毎の論理和です。
以前のモードの値が返されます。引数に何も指定しないと変更を行いません。
例えば、
.Li cursor($m_rev$m_blk)
は、ウィンドウカーソルを点滅する反転表示に設定します。
.It Ic default_nline Ns Pq Bq Ar nline
デフォルトバッファサイズを
.Ar nline
に設定します。
初期設定では、 48 行になっています。古いデフォルトバッファサイズが
返されます。引数に何も指定しないと変更は行いません。とても大きなバッファを
使うと、プログラムの速度が低下します。
.It Ic default_shell Ns Pq Bq Aq Ar string\-list
デフォルトのウィンドウシェルプログラムを
.Aq Ar string\-list
に設定します。
最初の文字列として古いシェル設定が返されます。
引数に何も指定しないと変更を行いません。
初期設定では、デフォルトシェルは環境変数
.Ev SHELL
から取られます。
.It Ic default_smooth Ns Pq Bq Ar flag
コマンド
.Nm
(以下参照)への
.Ar smooth
引数のデフォルトの値を設定します。
引数はブール値フラグ (上記の
.Ar on  ,
.Ar off  ,
.Ar yes  ,
.Ar no  ,
.Ar true  ,
.Ar false
または数字のうちの一つ) です。引数に何も指定しないと変更を行いません。
古い値が (数字として) 返されます。
初期値は 1 (true) です。
.It Xo
.Ic echo Ns ( Op Ar window ,
.Bq Aq Ar string\-list )
.Xc
文字列のリスト
.Aq Ar string-list
を、空白で分割し最後に改行を付けて
.Nm
へ書き出します。
文字列はウィンドウにだけ表示され、ウィンドウ中のプロセスには
影響を与えません (以下の
.Ic write
を参照)。 値は返されません。デフォルトはカレントウィンドウです。
.It Ic escape Ns Pq Bq Ar escapec
エスケープ文字を
.Ar escape-char
に設定します。古いエスケープ文字を一文字の文字列として返します。
引数に何も指定しないと変更を行いません。
.Ar escapec
は、一文字の文字列か、
.No control\- Ns Ar X
を意味する
.Fl ^X
という形式です。
.It Xo
.Ic foreground Ns ( Bq Ar window ,
.Bq Ar flag )
.Xc
.Nm
をフォアグラウンドに動かしたり、フォアグラウンドから外したりします。
.Ar flag
はブール値です。古いフォアグランドフラグが返されます。
.Nm
に対するデフォルトはカレントウィンドウで、
.Ar flag
に対するデフォルトは無変更です。
.It Xo
.Ic label Ns ( Bq Ar window ,
.Bq Ar label )
.Xc
.Nm
のラベルを
.Ar label
に設定します。
古いラベル文字列が返されます。
.Nm
に対するデフォルトはカレントウィンドウで、
.Ar label
に対するデフォルトは無変更です。ラベルを無くすためには、
空文字列 ("") を設定します。
.It Ic list Ns Pq
引数はありません。 全てのウィンドウの ID と ラベルが表示されます。
値は返されません。
.It Ic select Ns Pq Bq Ar window
.Nm
をカレントウィンドウとします。以前のカレントウィンドウが返されます。
引数を指定しないと変更を行いません。
.It Ic source Ns Pq Ar filename
.Ar filename
内の長いコマンドを読み込み、実行します。
ファイルが読み込めない場合には -1 を返し、それ以外では 0 を返します。
.It Ic terse Ns Pq Bq flag
簡素 (terse) モードを
.Ar flag
に設定します。簡素モードでは、コマンドウィンドウはコマンドモード中
でさえ隠されたままで、エラーは端末のベルをならすことで報告されます。
.Ar flag
は、上記の
.Ar foreground
中の値と同じです。
古い簡素フラグが返されます。
引数を指定しないと変更は行いません。
.It Ic unalias Ns Pq Ar alias
別名定義
.Ar alias
を消去します。
別名がない場合には -1 を返します。それ以外の場合は 0 を返します。
.It Ic unset Ns Pq Ar variable
.Ar variable
変数の定義を消去します。
.Ar variable
が存在しない場合には -1 を返します。それ以外の場合は 0 を返します。
.It Ic variables Ns Pq
引数はありません。全ての変数を表示します。値は返されません。
.It Xo
.Ic window Ns ( Bq Ar row ,
.Bq Ar column ,
.Bq Ar nrow ,
.Bq Ar ncol ,
.Bq Ar nline ,
.Bq Ar label ,
.Bq Ar pty ,
.Bq Ar frame ,
.Bq Ar mapnl ,
.Bq Ar keepopen ,
.Bq Ar smooth ,
.Bq Ar shell ) .
.Xc
左上の角が
.Ar row  ,
.Ar column
で、大きさが
.Ar nrow  ,
.Ar ncol
のウィンドウを開きます。
.Ar nline
が指定された場合、テキストバッファにその行が割り当てられます。
そうでない場合は、デフォルトのバッファサイズが使われます。
.Ar row  ,
.Ar column  ,
.Ar nrow  ,
.Ar ncol
に対するデフォルトの値は、それぞれ画面の一番上, 一番左, 一番下, 一番右
になります。
.Ar label
は、ウィンドウのラベル文字列です。
.Ar frame  ,
.Ar pty  ,
.Ar mapnl
は、 (上記の)
.Ar foreground
への引数と同じ方法で解釈されるフラグの値です。
これはそれぞれ、このウィンドウの周りに枠を付けるか (デフォルトでは真)、
ウィンドウのためにソケットペアではなく仮想端末を割り当てるか
(デフォルトでは真)、改行文字をこのウィンドウでは 復帰と行送りに
マップするか (デフォルトではソケットペアの場合は真、それ以外は偽) です。
一般に、ウィンドウは、プロセスが終了した時に、自動的に閉じられます。
.Ar keepopen
を真に設定する (デフォルトでは偽) ことでこの動作は妨げられます。
.Ar smooth
が真である時、より端末らしい振舞いを実現するために、
画面は (このウィンドウに対して) より頻繁に更新されます。
.Ar smooth
のデフォルトの値は、 (上記)
.Ar default_smooth
コマンドで設定します。
.Ar shell
は、このウィンドウ内でシェルプログラムとして使われる文字列のリストです
(デフォルトは、上記
.Ar default_shell
で指定されたプログラムです)。 作成されたウィンドウの ID が数字で
返されます。
.It Xo
.Ic write Ns ( Bq Ar window ,
.Bq Aq Ar string\-list )
.Xc
.Nm
に空白で分割されているが最後に改行の無い文字列リスト
.Aq Ar string-list
を送ります。 文字列は、実際にウィンドウの入力として使われます。
値は返しません。 デフォルトはカレントウィンドウです。
.El
.Ss 定義済み変数
これらの変数は、情報のためだけにあります。これらを再定義しても、
.Nm
の内部操作には影響ありません。
.Bl -tag -width modes
.It Ar baud
50 から 38400の間のボーレートです。
.It Ar modes
物理端末で提供されている(反転表示・下線・点滅・グラフィック等の)
表示モードです。
.Ar modes
の値は、1 ビット値
.Ar m_blk ,
.Ar m_grp ,
.Ar m_rev ,
.Ar m_ul
(以下参照)のビット毎の論理和になっています。
これらの値は、ウィンドウのカーソルモードを設定する時に便利です (上の
.Ar cursormodes
参照)。
.It Ar m_blk
点滅モードのビットです。
.It Ar m_grp
グラフィックモードのビットです (それほど有用ではありません)。
.It Ar m_rev
反転表示モードのビットです。
.It Ar m_ul
下線モードのビットです。
.It Ar ncol
物理端末の列数です。
.It Ar nrow
物理端末の行数です。
.It Ar term
端末の形式です。
端末の
.Ev TERMCAP
エントリの 2番目のフィールドに書かれている標準名が使われます。
.El
.Sh 環境変数
.Nm
ユーティリティは、以下のような環境変数を利用します。
.Ev HOME ,
.Ev SHELL ,
.Ev TERM ,
.Ev TERMCAP ,
.Ev WINDOW_ID
.Sh 関連ファイル
.Bl -tag -width /dev/[pt]ty[pq]? -compact
.It Pa ~/.windowrc
スタートアップコマンドファイル
.It Pa /dev/[pt]ty[pq]?
仮想端末デバイス
.El
.Sh 歴史
.Nm
コマンドは、
.Bx 4.3
から導入されました。
.Sh 診断
自己説明的な診断メッセージになっています。