新しい行で始まるブレース内にカーソルを置くにはどうすればいいですか?カーソル位置を示す:
class {
|
}
今私の設定では、これだけを行います
class {
|}
私はこれを私の.vimrcファイルでautoindent shiftwidth = 2 tabstop = 2 noexpandtabに設定しました
基本的に、通常のIDEがインデントする方法を知りたいだけです。
更新:
inoremap { {<CR>}<Esc>O
でこれを行う方法を見つけました
これを.vimrcに入れてください:
imap <C-Return> <CR><CR><C-o>k<Tab>
autoindent
とsmartindent
が正しく設定されていると仮定し、Ctrl + Return
中括弧の間にカーソルを置きたい場所に置きます。
delimitMate は正確にあなたが説明したこと以上を行います(つまり、末尾の}
を自動的に挿入します)。構成にlet delimitMate_expand_cr=1
を追加してキャリッジリターンを展開するようにdelimitMateに指示する必要があることに注意してください。
私の観察では、これはまさにTextMateとSublimeTextで見られる動作です。
Ubuntu 12.04を使用していますが、ホームディレクトリにvimrc
ファイルが見つかりませんでした。グローバルvimrc
ファイルは/etc/vim/vimrc
にありました。
このファイルにはほとんど何もありませんでした。だから私にとっては、/etc/vim/vimrc
の最後にこの3行を追加するように働きました
set autoindent
set cindent
inoremap { {<CR>}<up><end><CR>
次に{
と入力すると、{
、Enter、}
、up、end、Enterの組み合わせによって変更されます。 cindent
およびautoindent
は、必要な量のタブを追加します。
PS私はvimを調整するのが苦手なので、いくつかの説明はそれほど正確ではないかもしれません。私はそれがどのように働くと思うかです。
autoindent
は、currentインデントレベルを後続の行に引き継ぐことを指します。構文に従ってインデントさせるには、smartindent
やcindent
などのフラグも指定する必要があります。
ファイルの最後に、私は使用しています:
# vim: ts=2 sw=2 sts=2 sr noet st ai si
たとえば、Dockerfile
:
FROM centos-7
RUN ...
CMD ...
# vim: ts=2 sw=2 sts=2 sr noet st ai si
インデントのみを保持する場合は、# vim: st ai si
を使用します
.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>