動機
bashのエイリアス/関数定義ファイルに追加する際、テンプレートを追加してから編集したい。
あるいは、下記記事でサラッと使ったオプションの補足。
Vimの起動オプション
Vim(MacVim)は、起動時に+
(-c
)オプションを追加することで、起動直後に指定のEXコマンドを実行させることができる。
これを利用して、バッファにテンプレートを書き込む。
使用するEXコマンド
$
最終行に移動。
:$
+(数字)/-(数字)
(数字)行下/上に移動。
:+1:-10" これだと10行目に移動:10
a
続けて入力したテキストをカレント行の下に追加。
EXモードでは同じ方法は使えないが、起動オプションではパイプを使ってワンライナーで表現できる。
$ vim hoge.txt +"a|aaa"
EXモードで実行すると、入力を求められた後、'aaa'コマンドが実行される(エラーになる)。
なお、EXモードでaコマンド(iコマンド)でテキストを挿入するには、コマンド実行後にテキストを入力してから、⌃+cを押す。
:a|aaa
bashで改行すれば複数行のテキストも挿入できる。ただし、関数またはシェルスクリプトでインデントすると、インデントごと挿入される。
# >はヒアドキュメントのプロンプトであり入力テキストではない$ vim hoge.txt +"a|aaa> bbb # この行はインデントされる> ccc"
normal(norm)
引数をノーマルモードのコマンドとして実行。行内の移動や、空行の挿入に便利。
" 行末に移動:normal $
" ;の位置に移動:normal f;
" 空行を挿入:norm o
ただし、この方法で挿入モードに変更することはできない。
" 何も起こらない(0文字を挿入する):normal i" hogeを挿入する:normal ihoge
r (!)
ファイルの内容、または外部コマンドの実行結果をカレント行の下に追加。
調べたので書いたが、今回は使わない。
bashの関数定義ファイルに雛形を追加する例
function-init.bash
# in ~/.bashrc
# export bash_function=~/.bash/conf/function-init.bash
# source "$bash_function"
afunc () {
vim "$bash_function" +$ +"a|$1 () {" +"a| " +"a|}" +-1 +"normal $"
source "$bash_function"
}
$ afunc somefunc