选定字符串的换行
Wrapping of selected string
我想为所选行的换行创建热键。理想情况下,它应该像这个例子一样工作:
- 选择的字符串:“:include => [:profile => :user]”
- 按下 F6 键
- 所选字符串应修改为"lambda {{ :include => [:profile => [:user]] }}"
我实施了以下解决方案:
nmap <F6> :%s/<C-r>+/lambda {{ <C-r>+ }}/gc
但这不起作用,因为所选行不包含转义元素“]”,因此“%s”找不到行。我使用 vim-gnome。
您可以建议哪些解决方案?
简单的解决方案是
xnoremap <F6> slambda{{ <c-r>" }}<esc>
还有老方法(不改变未命名寄存器,但也不兼容redo
)
xnoremap <F6> <esc>`>a}}<esc>`<ilambda {{<esc>
然后,也是插件。使用我的lh-brackets,它将被定义为
Brackets! lambda\ {{ }} -trigger=<F6> -insert=0
(确实还有很多要敲的,不过它也可以生成普通模式和插入模式的映射)
surround.vim plugin是一个广泛使用的环绕文字插件。可自定义(但不支持功能键,只能"normal"个字母):
:let g:surround_108 = "lambda {{ \r }}"
有了这个,您可以用 sl
包围所选文本(108
是小写字母 l
的代码),也可以通过 ys{motion}l
在正常模式下使用。
我想为所选行的换行创建热键。理想情况下,它应该像这个例子一样工作:
- 选择的字符串:“:include => [:profile => :user]”
- 按下 F6 键
- 所选字符串应修改为"lambda {{ :include => [:profile => [:user]] }}"
我实施了以下解决方案:
nmap <F6> :%s/<C-r>+/lambda {{ <C-r>+ }}/gc
但这不起作用,因为所选行不包含转义元素“]”,因此“%s”找不到行。我使用 vim-gnome。 您可以建议哪些解决方案?
简单的解决方案是
xnoremap <F6> slambda{{ <c-r>" }}<esc>
还有老方法(不改变未命名寄存器,但也不兼容redo
)
xnoremap <F6> <esc>`>a}}<esc>`<ilambda {{<esc>
然后,也是插件。使用我的lh-brackets,它将被定义为
Brackets! lambda\ {{ }} -trigger=<F6> -insert=0
(确实还有很多要敲的,不过它也可以生成普通模式和插入模式的映射)
surround.vim plugin是一个广泛使用的环绕文字插件。可自定义(但不支持功能键,只能"normal"个字母):
:let g:surround_108 = "lambda {{ \r }}"
有了这个,您可以用 sl
包围所选文本(108
是小写字母 l
的代码),也可以通过 ys{motion}l
在正常模式下使用。