我倾向于启用自动换行:
:set textwidth=80
:set formatoptions+=wt
但是当我用C或javascript编码时,当我在引号中输入一个长字符串时,我不想换行,因为它会出错; 我可以配置我的vim自动换行排除引号吗? 或者在包装此行之前自动输入'\'?
答案 0 :(得分:0)
您可以从我编写的这个小脚本开始,添加一些改进以满足您的需求:
"""""the event that will trigger the wrap (leaving insert mode)
au InsertLeave * call WrapLines()
"""""highlight the column where the wrapping will be made
set colorcolumn=30
"""""WrapLines will be executed on lines
function! WrapLines()
execute ":%g/^/ call WrapFunction()"
endfunction
"""""check and wrap the line
function! WrapFunction()
let l:line=getline(".")
let l:length=strlen(l:line)
let l:occurence=0
let l:i=0
let l:nb=30
for l:i in split(l:line,'\zs')
if matchstr(l:i,'"') != ''
let l:occurence+=1
let l:occurence=l:occurence % 2
endif
let l:nb-=1
if l:nb == 0
break
endif
endfor
if l:length >= 30
if l:occurence == 0
"""""to get ^M you need to type <ctrl-v><enter> buttons
normal! 30|i^M
endif
endif
endfunction
注意: 要获取代码中的^M
,请输入 ctrl + v 输入
命名并保存文件 ex :script.vim
,然后通过“:source script.vim
”命令将其调用
以下是示例:( 30 字符 - 限制 - ):
答案 1 :(得分:-1)
您的设置是通过添加回车来包装线条,这会在编译时导致问题。
相反,您可以使用{{1>}选项虚拟换行并且不会影响这些行:
wrap