开发者

Deleting spaces on multiple lines in VIM

开发者 https://www.devze.com 2023-02-05 07:42 出处:网络
To indent HAML code I usually add or delete 2 spaces. Adding I do: Enter visual mode ( ctrl + v) jj to select the lines

To indent HAML code I usually add or delete 2 spaces. Adding I do:

  1. Enter visual mode ( ctrl + v)
  2. jj to select the lines
  3. shift + i to go into insert
  4. type 2 spaces
  5. ESC

That's it 2 spaces are added. However to remove the spaces, I't does not work, for example doing:

  1. Enter visual mode ( ctrl + v)
  2. jj to select the lines
  3. shift + i to go into insert
  4. Delete 2 spaces ( with backspace or delete)
  5. ESC

This just does not work, other lines spaces are not deleted. How then can I do this ?

Here is an example code:


 .module_1
     .pricing_details
       %h2
         Save

The idea is moving everything so it matches 2 space in respecto .module_1 as:


 .module_1
   .pricing_details
     %h2
       Save

The propose sol开发者_StackOverflow社区ution using < > works only for indenting now I'd like to for example:


 .module_1
   .pricing_details
     %h2
       Save

move the above to:


 .module_1
 .pricing_details
   %h2
     Save


Try < and > commands. You will need :set shiftwidth=2 for them to work in this way.


UPDATE

Considering your last example, changing

.module_1
  .pricing_details
    %h2
      Save

to ⇓

.module_1
.pricing_details
  %h2
    Save

can be accomplished with moving to .pricing_details line and hitting Vjj<.


Highlight your text and do:

<

Use:

.

To repeat the action multiple times. Note that this will shift the text whatever your shift width is. If it is not 2, you can set it to 2 by doing:

:set sw=2

You can indent text the same way by using ">".

All of this is in the documentation: http://vimdoc.sourceforge.net/htmldoc/usr_25.html#25.3


in the vimrc:

" pressing F5 adds two spaces at beginning of line and goes to next line
inoremap <F5> <ESC>:s/\(.*\)/  \1/e<CR>:set nohlsearch<CR>ji
" also works when not in edit mode
map <F5> i<F5><ESC>

" F6 removes two spaces from the end of whitespace at the beginning of line
inoremap <F6> <ESC>:s/\(^\s*\)/\1/e<CR>:set nohlsearch<CR>ji
map <F6> i<F6><ESC>

To remove 2 spaces from the beginning of every line of a paragraph just press F5 through all its lines.

This is modeled after my keybindings for commenting and uncommenting C code (the difference is in the regex of course)

only drawback is it needs to disable search highlight since the regex matches damn near the entire document all the time.

0

精彩评论

暂无评论...
验证码 换一张
取 消