7
A
回答
6
你必須要麼使用和searchpair(),或用%玩(只要安裝matchit,和你在開始/結束)然後標記這兩個位置,測試它是文本還是括號,最後更新這兩行。
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
凡lh#position#char_at_mark()
定義here。 PS:由於它結合了ruby上下文和先進的vim腳本,因此這絕對是一個SO問題。
3
看看這個新的插件:https://github.com/jgdavey/vim-blockle。
30個字符墊
0
有一個splitjoin.vim插件,這是否很好(GJ/GS映射分割/結合)。
相關問題
- 1. 有沒有簡單的方法來切換項目和它的DLL
- 2. 有沒有簡單的方法來交換,其中值列表
- 3. 有沒有一種簡單的方法在開發時切換PHP版本?
- 4. Vim:有沒有命令切換窗口
- 5. 在Vim的嵌入式Ruby中有沒有辦法使用Gems?
- 6. VIM:有沒有一種簡單的方法來管理Vim中的Visual Studio解決方案/ makefile項目?
- 7. 有沒有簡單的方法來寫在JavaScript中的Object.defineProperty
- 8. 有沒有簡單的方法將數字轉換爲PHP中的單詞?
- 9. 在vb2005中有沒有簡單的將MP3轉換爲WAV的方法?
- 10. 有沒有簡單的方法來獲取li:gt(-1)在jquery中?
- 11. 在Open MPI中使用clang有沒有簡單的方法?
- 12. 在Python中,有沒有簡單的方法來編輯xml?
- 13. 有沒有簡單的方法來在elisp中調用函數?
- 14. 有沒有一種簡單的方法在Python中編寫它?
- 15. 有沒有簡單的方法來在java中播放rtmp流?
- 16. 有沒有簡單的方法在JSF中實現路由?
- 17. 有沒有簡單的方法在vb中使用矢量?
- 18. 有沒有簡單的方法在love2d中繪製漸變?
- 19. 有沒有一種簡單的方法在JavaScript中將文本轉換爲HTML?
- 20. 在Vim中交換兩個字符串的最簡單方法?
- 21. 有沒有簡單的方法將值轉換爲字符串?
- 22. 有沒有簡單的方法將標準轉換爲HQL?
- 23. 有沒有簡單的方法將C#類轉換爲PHP?
- 24. 有沒有簡單的方法在ruby中調用字符串中的下一個單詞?
- 25. 在Vim中查找和替換有更好的方法嗎?
- 26. 有沒有簡單的方法綁定到WPF中的父行?
- 27. 有沒有更簡單的方法來解析Java中的Android?
- 28. JavaScript中的30個數組有沒有簡單的方法?
- 29. 有沒有簡單的方法來改變django中的路徑?
- 30. 有沒有簡單的方法來加載listmodel中的泛型?
是的,沒有理由爲複雜的解決方案。只需使用matchit.vim。 :) – graywh 2010-07-14 21:32:26
Matchit沒有解決OP的請求。 (即使沒有vim參與,它仍然涉及開發工具的調整,用於開發目的) – 2010-07-15 18:12:24