How to edit blocks in vim without visual block mode

前端 未结 3 1423
忘掉有多难
忘掉有多难 2021-01-26 04:53

Is there a way to edit a vertical block in a code without using the visual block mode selection?

相关标签:
3条回答
  • 2021-01-26 05:19

    What's so bad about blockwise visual mode?! There's no practical alternative to it.

    • You could use :substitute with atoms like \%>v, \%<v, \%>l and \%<l to limit the pattern match to a rectangular block, but that's very tedious.
    • There are some multi-edit plugins (inspired by other editors) that allow you to select some areas, and then simultaneously edit them all.
    • For special purposes, you could write a scriptlet / mapping with getline() / setline() and String manipulation in Vimscript.
    0 讨论(0)
  • 2021-01-26 05:44

    In addition to Ingo's answer, I'll add this: Ex commands are line-wise by design. The nature of the visual mode doesn't matter: Ex commands will always use the first line and the last line of your selection as range by default anyway.

    Because it's not line-wise, visual-block mode and block "thinking" doesn't really align with Ex commands.

    0 讨论(0)
  • 2021-01-26 05:44

    You can do something similar to this recent answer: https://stackoverflow.com/a/22238813/3130080

    For example,

    :%s/\%6c/x/
    

    will insert "x" before the 6'th character in each line, and

    :1,2s/\%>1c\%<4c.//g
    

    will delete characters 2 and 3 in lines 1 and 2.

    :help /\%c
    
    0 讨论(0)
提交回复
热议问题