如何让vim将光标放在从新行开始的大括号内,即使用|表示光标位置:
class {
|
}
现在使用我的设置只会执行此操作
class {
|}
我在.vimrc文件中得到了这个 set autoindent shiftwidth = 2 tabstop = 2 noexpandtab
基本上我只想要普通的IDE如何缩进它。
更新
我找到了如何使用inoremap { {<CR>}<Esc>O
答案 0 :(得分:21)
我发现delimitMate完全按照您描述的内容执行操作(即自动插入结尾}
)。请注意,您必须通过在配置中添加let delimitMate_expand_cr=1
来告诉delimitMate扩展回车。
根据我的观察,这正是TextMate和SublimeText中的行为。
答案 1 :(得分:19)
我有Ubuntu 12.04,我在主目录中找不到vimrc
文件。全局vimrc
文件位于/etc/vim/vimrc
。
这个文件几乎没有。所以对我来说,它将3行添加到/etc/vim/vimrc
set autoindent
set cindent
inoremap { {<CR>}<up><end><CR>
下次按{
组合更改{
时,请输入,}
,向上,结束,回车。 cindent
和autoindent
会添加所需数量的Tab。
附:我不善于调整vim所以一些解释可能不那么准确。这就是我认为它的工作原理。
答案 2 :(得分:12)
将它放在.vimrc中:
imap <C-Return> <CR><CR><C-o>k<Tab>
假设autoindent
和smartindent
设置正确,在大括号之间键入Ctrl + Return
会将光标放在您想要的位置。
答案 3 :(得分:11)
autoindent
表示它将当前缩进级别转移到后续行。要根据语法对其进行缩进,您还需要指定smartindent
或cindent
等标记。
答案 4 :(得分:0)
在文件底部,我使用:
StringFormat={x:Static local:MainWindow.StaticProperty}}
例如void launchThread() {
std::shared_ptr<std::thread> t;
t = std::make_shared<std::thread>([t] {std::cout<< "HelloWorld"<<std::endl;});
t->detach();
}
int main(){
launchThread();
somthing that takes a while....
}
:
# vim: ts=2 sw=2 sts=2 sr noet st ai si
如果您只想保留缩进,请使用Dockerfile
答案 5 :(得分:0)
我在.vimrc
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
上面的代码首先检查您是否使用Enter
来确认代码完成,否则,当您键入{|}
时它将缩进Enter
。此外,它还提供html标签自动缩进。
针对您的问题:
class {|}
按Enter
,您将得到
class {
|
}
<html>|<html>
按Enter
,您将得到
<html>
|
</html>