このようなテストブロックでは
cron.allow
cron.deny
cronの代わりにatを使いたいです。ビジュアルモード(ctrl + v)で選択した範囲内でのみctrl + vを押すと!プロンプト「Okay, I do」が表示されます。
sed s:cron:at:gc
ただし、このエラーのみが表示されます。
:'<,'>! sed s:cron:at:gc
shell end return code 1
7 lines filteerd
そして戻った後の結果
sed: expression -e #1, caracther 12: option `s' unknown
なぜ?
答え1
visual block
ライン選択モードになっている場合は、以下を試してください。
:'<,'>s/cron/at/g
Vimには、外部コマンドを呼び出す必要がない検索と置換機能があります。
答え2
コマンドラインで成功を観察します。
$ echo cron | sed s:cron:at:
at
しかし、そうではありません:
$ echo cron | sed s:cron:at:c
sed: -e expression #1, char 11: unknown option to `s'
c
オプションではありませんsed
。しかし、以下はうまくいきます。
:'<,'>! sed s:cron:at:g
しかし、もちろん、sed
vimではそれほど簡単な交換を行う必要はありません。また、必要に応じてc
(確認)vimの組み込み代替コマンドを使用してください。
:'<,'>s/cron/at/gc
答え3
sedや代替を全く使う必要がないようです。変更(c
)コマンドを使用してください。ドキュメントから:
Visual-block change *v_b_c* All selected text in the block will be replaced by the same text string. When using "c" the selected text is deleted and Insert mode started. You can then enter text (without a line break). When you hit <Esc>, the same string is inserted in all previously selected lines.
ここで鍵は、クリックすると、<Esc>
以前に選択したすべての行に同じ文字列が挿入されます。したがって、あなたがする必要があるのは、テキストを選択してcron
、キーを押して、入力し、挿入モードを終了することだけです。これにより、cブロック内のat
各項目をに置き換える必要な結果を得ることができます。cron
at
ブロックに対して置換コマンドを実行するには、ブロックを切り取り、空白行に貼り付け、その行に対して置換を実行し、結果のブロックを切り取り、元の場所に再貼り付けます。
あなたの質問のコマンドの問題は、外部を使用しようとしていますが、コマンドがフラグを受け入れないことですsed
。s
sed
c