【问题标题】:vim removes indentation from the current linevim 删除当前行的缩进
【发布时间】: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,顶部是否有开口&lt;?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


【解决方案1】:

你可能想在你的 vimrc 文件中设置自动缩进:

:set ai

您还可以通过检查 autoindent 的值来验证之前是否设置过(例如通过文件类型插件)

:set ai?

【讨论】:

  • 他的 vimrc 文件中已经有:filetype plugin indent on。这会邀请特定于文件类型的缩进插件覆盖 'ai' 和他的 vimrc 文件中设置的相关选项。有关介绍,请参阅 vim 用户手册中的:help 30.3
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 1970-01-01
相关资源
最近更新 更多