¿Hay alguna manera fácil de alternar "do/end" y "{}" en ruby en Vim?¿Hay alguna manera fácil de alternar "do/end" y "{}" en ruby en Vim?
(TextMate hace con ^{
.)
¿Hay alguna manera fácil de alternar "do/end" y "{}" en ruby en Vim?¿Hay alguna manera fácil de alternar "do/end" y "{}" en ruby en Vim?
(TextMate hace con ^{
.)
Habría que sea para uso searchpair(), o para jugar con% (siempre y cuando se instala MatchIt, y como usted está en comenzar/final), a continuación, marque las dos posiciones, pruebe si se trata de texto o corchetes, y finalmente actualice las dos líneas.
nnoremap <buffer> <c-x>{ :call <sid>ToggleBeginOrBracket()<cr>
let s:k_be = [ 'begin', 'end' ]
function! s:ToggleBeginOrBracket()
let c = lh#position#char_at_mark('.')
if c =~ '[{}]'
" don't use matchit for {,}
exe 'normal! %s'.s:k_be[1-(c=='}')]."\<esc>``s".s:k_be[(c=='}')]."\<esc>"
else
let w = expand('<cword>')
if w == 'begin'
" use mathit
normal %
exe "normal! ciw}\<esc>``ciw{\<esc>"
elseif w == 'end'
" use mathit
normal %
exe "normal! ciw{\<esc>``ciw}\<esc>"
else
throw 'Cannot toggle block: cursor is not on {, }, begin, nor end'
endif
endif
endfunction
Dónde lh#position#char_at_mark()
se define here.
PD: esta es definitivamente una ASUNTA cuestión, ya que combina el contexto de rubí, y el scripting vim avanzado.
Echa un vistazo a este nuevo plugin: https://github.com/jgdavey/vim-blockle.
30 caracteres almohadilla
Hay un plugin splitjoin.vim que hace esto agradable (GJ/GS asignaciones para la división/unión).
Sí, no hay ninguna razón para la solución complicada. Solo usa matchit.vim. :) – graywh
Matchit no resuelve la solicitud de OP. (E incluso sin vim involucrado, todavía se refiere a la puesta a punto de una herramienta de desarrollo, para fines de desarrollo) –