Vim Auto Indent with newline
如何让vim将光标放在从新行开始的大括号内,即使用| 表示光标位置:
1 2 3 | class { | } |
现在我的设置只会这样做
1 2 | class { |} |
我在.vimrc文件中得到了这个
set autoindent shiftwidth = 2 tabstop = 2 noexpandtab
基本上我只想要一个普通的IDE如何缩进它。
更新:
我找到了如何用
我发现delimitMate正是你所描述的和更多(即自动插入结尾
根据我的观察,这正是TextMate和SublimeText中的行为。
我有Ubuntu 12.04,我在主目录中找不到
这个文件几乎没有。所以对我而言,它将这3行添加到
1 2 3 | set autoindent set cindent inoremap { {<CR>}<up><end><CR> |
当您下次键入
附:我不善于调整vim所以一些解释可能不那么准确。这就是我认为它的工作原理。
把它放在.vimrc中:
1 | imap <C-Return> <CR><CR><C-o>k<Tab> |
假设
我在
1 2 3 4 5 6 7 8 9 10 11 12 | inoremap <expr> <CR> InsertMapForEnter() function! InsertMapForEnter() if pumvisible() return"\<C-y>" elseif strcharpart(getline('.'),getpos('.')[2]-1,1) == '}' return"\<CR>\<Esc>O" elseif strcharpart(getline('.'),getpos('.')[2]-1,2) == '</' return"\<CR>\<Esc>O" else return"\<CR>" endif endfunction |
上面的代码首先检查您是否使用
对于你的问题:
1 | class {|} |
按
1 2 3 | class { | } |
1 | <html>|<html> |
按
1 2 3 | <html> | </html> |
在文件的底部,我正在使用:
1 | # vim: ts=2 sw=2 sts=2 sr noet st ai si |
例如
1 2 3 4 5 | FROM centos-7 RUN ... CMD ... # vim: ts=2 sw=2 sts=2 sr noet st ai si |
如果只想保留缩进,请使用