我有以下文字:如何配置Vim在返回時不縮進當前行?
");
當我打在插入模式回報,Vim會創建一個新的行(如預期),但也縮進上回報被擊中行:
");
Vim只對一些行做這個,大概是當它認爲縮進是不正確的。
如何配置Vim不會縮進當前行返回?我希望Vim根本不要觸及這條線。我目前的設置如下:
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
我有以下文字:如何配置Vim在返回時不縮進當前行?
");
當我打在插入模式回報,Vim會創建一個新的行(如預期),但也縮進上回報被擊中行:
");
Vim只對一些行做這個,大概是當它認爲縮進是不正確的。
如何配置Vim不會縮進當前行返回?我希望Vim根本不要觸及這條線。我目前的設置如下:
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
文件類型插件可能設置'cinkeys'
或'indentkeys'
所以 ,當某些鍵是 按下自動縮進被觸發。要關閉此功能,同時使'indentexpr'
完整 ,這樣你仍然可以縮進與==
,您可以添加 以下自動命令你vimrc
:
" Allow filetype detection, plugins and indent files ...
filetype plugin indent on
" ... but keep certain preferred defaults.
augroup overrideftplugins
au!
au FileType * set cinkeys= indentkeys=
augroup END
注意的是,自動命令需要來,輪流上線後,文件類型檢測等。這是因爲它們按照 註冊的順序被觸發,我們希望覆蓋的自動命令在爲ftplugins和indent腳本設置的自動命令之後觸發。
在我的'vimrc'中已經存在了十多年。 :-) – 1983
我能夠用一個XML文檔重現您的問題,其中一個標記與其他標記不一致。我試過禁用autoindent,cindent和smartindent,但最終爲我解決的是清除indentexpr。
:setlocal indentexpr=
或者,你可以刪除的indentkeys列表回報,或者完全清除它們。
:setlocal indentkeys=
我已經創建了一個可以滿足您的需求的功能。
function! Enter()
let pos=getpos('.')
let substr = strpart(getline(pos[1], pos[2])
if strlen(substr)==0
exe("normal! o")
exe("normal x")
startinsert
return 1
else
exe("normal! li\<Enter>")
startinsert
return 0
endif
endfunction
噹噹前光標在最後,並且按下回車鍵時,它會創建一個新行並移動到第一列。 (像往常一樣,下面的任何行都會向下移動) 當光標位於行的中間位置時,按下Enter鍵,會將行分割。
要使用該功能,你可以映射像
:imap <Enter> :call Enter()<CR>
這非常適用於C註釋,子程序/功能。
如果任何邊緣情況被遺漏,請告訴我。我會盡力在這裏添加它們。 – SibiCoder
一些插件設置/重置'smartindent'標誌;用'verbose set si?'來檢查它吧?' – sehe
@sehe好像是這樣的:「Last from /.../php.vim」,然而這個腳本將它變成_off_:'nosmartindent' – rightfold
注意它可能與'paste'這個選項混淆了一些選項,'smartindent'就是其中之一。 –