1

私は次のような行を持っています:

contact.psu_code = row[:psu_code] unless row[:psu_code].blank?

そして、私は次のように置き換えたいと思いpsu_codeますcontact_disposition

contact.contact_dispositon = row[:contact_disposition] unless row[:contact_disposition].blank?

確認なしで、私がいる1行だけで置き換えられます。私は知って%s/orig/subいますが、それは面倒です。

4

3 に答える 3

5

どういう意味ですか、面倒ですか?1行で検索と置換を行う場合は、を使用する必要はありません%

:s/psu_code/contact_disposition/g

がないgと、Vimは1回のオカレンスを置き換えた後に停止します。を指定するgと、行全体で置換が行われます。

確認が必要な場合はc、の後にオプションを追加しますg

そのための便利な関数は次のとおりです。

function! LineReplace()
    let search = expand('<cword>')
    call inputsave()
    let replacement = input('')
    call inputrestore()
    call setline(line('.'), substitute(getline('.'), search, replacement, 'g'))
endfunction

nnoremap <leader>r :call LineReplace()<CR>

にマッピングしました<leader>rが、任意のキーマッピングに簡単に変更できます。

于 2012-06-28T17:15:11.783 に答える
0

試す

%s/orig/sub/gc

g =>グローバル、1行に複数回あることを意味します

c=>確認

于 2012-06-28T17:14:35.263 に答える
0

これを行うには2つの方法があります。

  1. 通常モードでは:s/psu_code/contact_disposition/gc。最後のcは確認用で、使用してもしなくてもかまいません。
  2. ビジュアルモードの場合:Shift-Vを押して行を選択し、次に:s/psu_code/contact_disposition/g

これがお役に立てば幸いです

于 2012-06-29T07:43:34.067 に答える