简体   繁体   中英

Disable autoindent in vim

I use vim since almost 20 years and recently someone told me about the usage of = key for indenting a block of code. Sometimes I try a new vim key but stop using it because it isn't doing exactly what I want or I just don't need the feature. But in this case I find its a nice feature.

So I downloaded vim script 1120 (PHP-correct-Indenting) and installed it. My .vimrc contains:

filetype indent on
set smartindent

Now I can use = to indent a visually marked code block.

But I do NOT want vim to automatically indent code while I am typing. This is just irritating me as I am usually doing indentation myself and I am very much used to it ...

So how can I stop vim from automatically indenting my code while typing but can still continue to use = for indenting a visually marked block of text.

PS: Use hjkl for moving around in vim. It will make you about 1.5 times faster :)

My complete vimrc:

syntax on

set tabstop=3
set shiftwidth=3

execute pathogen#infect()

filetype indent on
set smartindent 

Commenting the last two lines stops autoindenting but also using "=" does not use the mentioned vim script anymore

The plugin sets 'indentexpr' , which controls both explicit reindenting via = as well as indenting-as-you-type. Fortunately, you can control the triggering of the latter via the 'indentkeys' option, so clearing that should work.

Put the following into ~/.vim/after/indent/php.vim ; this way, it'll apply after the plugin:

setlocal indentkeys=

The effect I want can get achieved using:

:set paste

This is exactly(?) the mode I wanted to switch into. No autoindenting at all. But the "=" key works to indent a marked block of text.

Maybe I will add "set paste" to my .vimrc :)

Thanks for your support anyways.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM