2011-01-19 96 views
3

要縮進HAML代碼,我通常會添加或刪除2個空格。加入我做的:刪除VIM中多行的空格

  1. 進入可視化模式(Ctrl + V)
  2. JJ選擇線
  3. Shift +我進入插入
  4. 型2位
  5. ESC

這就是它2空間被添加。但是把空格去掉,I'T不工作,例如做:

  1. 進入可視化模式(Ctrl + V)
  2. JJ選擇線
  3. Shift +我進入插入
  4. 刪除2位(與退格鍵或刪除)
  5. ESC

這是行不通的,其他線路的空間不會被刪除。我怎麼能這樣做?

下面是一個例子代碼:


.module_1 
    .pricing_details 
     %h2 
     Save 

所以它作爲respecto .module_1匹配2空間的想法正在移動的一切:


.module_1 
    .pricing_details 
    %h2 
     Save 

的建議使用溶液中的<>僅適用於縮進現在我想舉個例子:


.module_1 
    .pricing_details 
    %h2 
     Save 

將上述移動到:


.module_1 
.pricing_details 
    %h2 
    Save 

回答

6

嘗試<>命令。你需要:set shiftwidth=2讓他們以這種方式工作。


UPDATE

考慮您的最後一個例子,改變

.module_1 
    .pricing_details 
    %h2 
     Save 

到⇓

.module_1 
.pricing_details 
    %h2 
    Save 

可以移動到.pricing_details線,打完成3210。

中的vimrc
2

突出顯示你的文字,這樣做:

< 

用途:

. 

要動作多次重複。請注意,無論您的移位寬度如何,這都會改變文字。如果不是2,則可以通過執行以下操作將其設置爲2:

:set sw=2 

您可以使用「>」以相同方式縮進文本。

所有這一切都在文檔中:http://vimdoc.sourceforge.net/htmldoc/usr_25.html#25.3

+0

這對某些occations有效,但不完全相同,多次執行此操作會導致第一行保持不變,而其他縮進我寧願插入和刪除空格 – daniel 2011-01-19 18:44:46

+0

@Daniel?只需選擇你想要正確轉換的線路! – ulidtko 2011-01-19 18:46:42

-1

" 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> 

從一個段落的每一行的開頭刪除2位只需按F5通過其所有行。

這是我的鍵綁定的註釋和取消註釋C代碼之後建模(所不同的是在過程中的正則表達式)

唯一的缺點是它需要禁用搜索的亮點,因爲正則表達式該死匹配整個文檔附近的所有時間。