1

我有这样的一行:

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

我想用 代替psu_codecontact_disposition比如:

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

它仅在我所在的单行中替换,没有确认。我知道,%s/orig/sub但是很麻烦。

4

3 回答 3

5

什么意思,很麻烦?如果要在一行上进行搜索和替换,则不需要使用%.

:s/psu_code/contact_disposition/g

如果没有g,Vim 将在替换一次后停止。通过指定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 => 全局,表示一行多次

c => 确认

于 2012-06-28T17:14:35.263 回答
0

有两种方法可以完成此操作:

  1. 在正常模式下:s/psu_code/contact_disposition/gc。最后一个 c 是用来确认的,你可以用也可以不用。
  2. 在可视模式下:Shift-V 选择线然后:s/psu_code/contact_disposition/g

我希望这有帮助

于 2012-06-29T07:43:34.067 回答