【发布时间】:2014-03-17 07:39:55
【问题描述】:
每次我在 vim 中使用 A 进入插入模式并按 Enter 转到下一行时,vim 会自动删除当前行的所有缩进。例如,理想情况下,它应该是这样的 -
14 echo $sample;
15 $ai = system("python ai.py " + $sample, $retVal);
如果我在第 15 行按 A,然后按 <CR>,这就是我的 vim 的样子 -
14 echo $sample;
15 $ai = system("python ai.py " + $sample, $retVal);
16
这是我的 .vimrc -
"General
set nu " Set line numbers
set hlsearch " Set search highlight
set shiftwidth=2
set tabstop=2
"Pathogen
execute pathogen#infect()
call pathogen#helptags()
syntax on
filetype plugin indent on
"ConqueTerm
command Cterm split | ConqueTerm bash
nnoremap <silent> sh :Cterm<CR>
"NerdTree -
"Fs open Nerdtree on the same tab. Nfs opens NerdTree in new tab.
command Fs NERDTree
command Nfs tabedit | NERDTree
nnoremap <silent> fs :Fs<CR>
"TagBar
nnoremap <silent> tt :TagbarToggle<CR>
"Omni Completion
filetype plugin on
filetype indent on
inoremap <C-Space> <C-X><C-o>
"Editor
command Ide NERDTree | TagbarToggle
"Move between split windows
nmap <silent> <A-Up> :wincmd k<CR>
nmap <silent> <A-Down> :wincmd j<CR>
nmap <silent> <A-Left> :wincmd h<CR>
nmap <silent> <A-Right> :wincmd l<CR>
"Drag words like in Windows
nnoremap <C-Left> b
vnoremap <C-S-Left> b
nnoremap <C-S-Left> gh<C-O>b
inoremap <C-S-Left> <C-\><C-O>gh<C-O>b
nnoremap <C-Right> w
vnoremap <C-S-Right> w
nnoremap <C-S-Right> gh<C-O>w
inoremap <C-S-Right> <C-\><C-O>gh<C-O>wA
" Start Syntastic in passive mode
let g:syntastic_mode_map = { 'mode': 'passive' }
nnoremap <silent> ch :SyntasticCheck<CR>
知道发生了什么吗?
【问题讨论】:
-
这是设计使然。相反,不要担心行是空的。当你开始编辑行时让vim为你恢复缩进位置:stackoverflow.com/a/6029815/85371
-
您正在编辑什么类型的文件?如果是PHP,顶部是否有开口
<?php?:verbose set ft? indentexpr告诉你什么? -
@benjifisher 是的,它是 PHP,我有标签。它也发生在 HTML/JS 文件中。这是命令的输出 - filetype=php Last set from /usr/share/vim/vim73/filetype.vim indentexpr=GetPhpIndent() Last set from /usr/share/vim/vim73/indent/php.vim
-
您是在 PHP 标记附近发现问题还是稍后才发现问题?也许 vim 对它是否在 PHP 块中感到困惑。让我们只使用一种类型的文件。
-
@benjifisher 它出现在文件中的任何地方。
标签: vim