bashのデフォルトもviのコマンドモードもemacs風らしいよね
あー。僕の言いたかったのはコマンドモードじゃない。コマンドモードで : 押すと始まる最下行の編集のやつ。えーと、←
@zundan それがコマンドモードで、: を押すまでの状態はノーマルモードです。で、コマンドモードでも i とか a とか p とかも書ける(ed のコマンド体系や sed のコマンドも概ね同じ)
@zundan p は paste ではなく print(カーソル行ないし prefix 指定している行を出力)とかにはなりますが(なぜなら元々のラインエディター時代はテレタイプ端末なので、出力を意図的に指定しないとなにを編集しているかわからなくなるため
@orumin あー合ってましたか(間違えたと思って検索したページがだいたい間違えてたのかな…)。僕が感じたのは、C-a とか C-n/p とかでの行や履歴の編集がbashとかemacsとかと似ているなぁということでした。
@zundan コマンドモードの中の行内編集、はたぶん vi にはそもそも存在しないですね……。
Vim の場合は(設定次第で)そういうことはできる気がしますが、Vim の編集体型をコマンドモードの中で適用するとコマンドモードの中にさらにノーマルモード、インサートモード、を作らないといけなくなって厳しいので、一番手頃な Emacs キーバインドをお手本にした、はありそう
@orumin たしかにviには行内編集は無さそうでした。手元では素のviは試しづらいのですが、GNU ed 1.18ではC-aもC-p/nも効きませんでした。
少なくともbashはGNU readlineで行編集や履歴の参照を実装していて、そこから歴史を確認できるかとman readlineするとemacsモードとviモードがあることがわかりましたw 先は長い…
@zundan readline、考えてみるといつからあるのかよくしらないですね。気になってきた……!
@zundan ちなみに、.bashrc でなく .inputrc で設定すると bash に限らず readline 使う任意のツールで vi 編集モードつかえます!(上手くつかえないやつでも rlwrap コマンドに食わせるとうまく使えるように