我有以下文字:
");
当我在插入模式下按 return 时,Vim会创建一个新行(如预期的那样),但也会缩进 return 被命中的行:
");
Vim只对某些行进行此操作,大概是当它认为缩进不正确时。
如何在点击 return 时将Vim配置为不缩进当前行?我希望Vim根本不接触线路。我目前的设置如下:
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
答案 0 :(得分:3)
我能够使用XML文档重现您的问题,其中一个标记未与其他标记对齐。我尝试禁用autoindent,cindent和smartindent,但最终为我修复的是清除indentexpr。
:setlocal indentexpr=
或者,您可以从indentkeys列表中删除 return ,或者完全清除它们。
:setlocal indentkeys=
答案 1 :(得分:3)
文件类型插件可以设置'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脚本设置的自动命令之后触发覆盖的自动命令。
答案 2 :(得分:0)
我创建了一个能满足您需求的功能。
var table = $('#tableId');
$.each(segment, function (index, innerSegment) {
var rows = '<tr><td rowspan="4" width="25%">' + segment[i].Airline.AirlineName + "</td>";
rows += '<td width="25%">' + segment[i].ArrivalTime + "</td>";
rows += '<td rowspan="4" width="25%"> </td>';
rows += '<td rowspan="4" width="25%">' + segment[i].publishedFare + "</td></tr>";
rows += "<tr><td>" + segment[i].Origin + "</td></tr>";
rows += "<tr><td>" + segment[i].DepartureTime + "</td></tr>";
rows += "<tr><td>" + segment[i].Destination + "</td></tr>";
table.append(rows);
});
当前光标位于最后,按Enter键,将创建一个新行并移至第一列。 (像往常一样,下面的任何一行都会向下移动) 当光标位于该行的中间,并按Enter键时,它将分割该行。
要使用此功能,您可以映射
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
这适用于C注释,子程序/函数。