2016-08-06 9 views
0

でコマンドを交換するVIを配置する方法1次のコマンドVIにbashrcに

:%s/strtoreplace/replacedstr/g 

により、グローバル文字列を置き換えることができますすることは.bashrcの中でこれを入れて、それが可能です(一部の機能を通じて)(vireplaceを言うこともあります)、そのため、ファイルを開かずに端末で同じコマンドを実行することができます。また、文字列(strtoreplace、replacedstr)はプロンプト入力($ @)にする必要があります。 私は

function vireplace() { vim :%s/[email protected]/[email protected]/g [email protected] ;} 
+1

可能な重複http://stackoverflow.com/questions/ 23235112/vim-commands-from-command-prompt-command-promptコマンド) –

+0

こんにちは@Andy、あなたのリンクは非常に役に立ちます。しかし、bashrcに入れて、一般的なプロンプト入力を使う方法はありますか? –

+0

関数に 'sed'を使わないのはなぜですか? – cdarke

答えて

2

あなたは-c(コマンド)オプションを使用することができるような何かをしたいです。例:

vireplace() { vi -c "s/$1/$2/g" -c "wq" $3; } 

vireplace 1 x gash.txt 

これは、ファイルgash.txtの "1"と "x"を置き換えます。 -c "wq"はインタラクティブではないことを保証します。インタラクティブに使用する場合は省略してください。

しかし正直なところ、sedが同じことを簡単に行うことができる場合は、vimを使用する理由がわかりません。

+0

さて、vimの正規表現はsedよりも強力です。しかし、私はちょうどperlを使うだろう。 – melpomene

+0

'sed'は拡張REを' -E'オプションでサポートしていますが、5.10以降はPerlほど強力ではありません。しかし、具体的な問題は具体的には直接的なものです。 'sed'は' perl'よりはるかに小さなフットプリントを持っています。 – cdarke

+0

私の 'sed'は' -E'を受け付けますが、それを文書化しません( '-r'のみを表示します)。奇妙な。 POSIX ExtendedとBasic REの違いは、構文上の違いだけであり、機能の違いではありません。 Perl 5.0(1994)はすでに先読みを持っており、5.005(1998)は後ろ向きを追加しています。どちらもPOSIX REでサポートされていません。 – melpomene

1

vi(またはed)を呼び出す関数を作成できますが、作成したものを理解する必要がある場合は、sedを使用してください。

編集中は、.exrc(プライベートアカウントのみ)に配置できるいくつかのプライベートな調整を行うことができます。
$HOME/.exrcに関数を追加できます。

nnoremap <F2> :%s/strtoreplace/replacedstr/g<Enter> 

スクリプトをテストするための別の例は、あなたの作業:

nnoremap <F9> :w<Enter>:!%:p<Enter> 
([コマンドプロンプトからVimの一連のコマンドを実行する方法]の