1。 geany , 写一个页面,如 4.png,末尾没有 LF
2. 用 vim 打开这个文件,什么也不做,只 :w ,如 5.png
3.返回到 geany , reload the file . 如 6.png
4. 会反现多了一个 LF !!!!!
这个不好贴图,我把图片传到这个网页了。
http://blog.csdn.net/shengshuai/archive/2010/04/23/5518772.aspx
望高手帮忙。其实这个换行也没有什么,但这是要要和Ucenter通信,一用vim编辑就会把这个换行加上。导致通信失败。这个在gedit 下也看不到,只有在 geany 下才看到多了一行。
23 个解决方案
#1
用 vim 编辑,文件最后会多出一行来。晕。
#2
文件格式问题吧,尝试设置vim的
fileformat
fileformat
#3
我帖一下我的设置
"LastModified:
let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936
set fileformat=unix
set nobackup
"set autoread
set autowrite
filetype on
" 加上这个会花屏
"set lines=30
"set columns=90
winpos 100 100
"set guioptions-=m
" 启用鼠标
set mouse=a
"set mousehide
nnoremap <F4> :call g:Jsbeautify()<CR>
nnoremap <C-s> :w<CR>
"下面两行在进行编写代码时,在格式对起上很有用;
"第一行,vim 使用自动对起,也就是把当前行的对起格式应用到下一行;
"第二行,依据上面的对起格式,智能的选择对起方式,对于类似C 语言编
"写上很有用
"set autoindent
set smartindent
"查询时非常方便,如要查找book 单词,当输入到/b 时,会自动找到第一
"个b 开头的单词,当输入到/bo 时,会自动找到第一个bo 开头的单词,依
"次类推,进行查找时,使用此设置会快速找到答案,当你找要匹配的单词
"时,别忘记回车
set incsearch
set hlsearch
" 单行注释
set comments=://
" 段落注释
set comments=s1:/*,mb:*,ex0:/
"显示不完整的命令。
"showcmd 要在nocp 后面才有用
"set nocp
"set showcmd
" 命令行高度
"set cmdheight=1
" do not wrap lines
"set nowrap
"添加水平滚动条
"set guioptions+=b
" 显示空格,tab,行尾
set list
set lcs=tab:>-,trail:-
" 断行
set lbr "不在单词中间断行
set fo+=mB "打开断行模块对亚洲语言支持
" 使用F8打开Taglist
nnoremap <silent> <F8> :TlistToggle<CR>
let Tlist_Use_Right_Window=1
let Tlist_File_Fold_Auto_Close=0
"let Tlist_Show_Menu = 1
" 增强检索功能
"set tags=./tags,./../tags,./**/tags
"set guioptions-=T
"set dictionary-=~/.vim/funclist.txt dictionary+=~/.vim/funclist.txt
"set complete-=k complete +=k
"source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
"source $VIMRUNTIME/compiler/php.vim
behave mswin
set nu
set ruler
set history=1000
" PHP 折叠
let php_folding =1
" 缩进
set tabstop=4
set softtabstop=4
set shiftwidth=4
set smarttab
"set expandtab
" 使用缩进进行折叠
"set fdm=indent
"set fdc=4
set backspace=indent,eol,start
"set encoding=utf8
" 针对C语言的缩进
"set cindent
syntax on
"set syntax=php
"au GUIEnter * simalt ~x
autocmd BufWritePre,FileWritePre *.html ks|call LastMod()|'s
" line("$") 统计列数
fun LastMod()
let l = line("$")
"exe "1," . l . "s/Last modified: .*/Last modified: " . strftime(" %Y %b %d %X") ."/g"
exe "1," . l . "s/?>\n*/?>/g"
endfun
colorscheme koehler
"autocmd FileType c set ofu=ccomplete#Complete
"autocmd FileType php set ofu=phpcomplete#CompletePHP
"autocmd FileType python set ofu=pythoncomplete#Complete
"autocmd FileType javascript set ofu=javascriptcomplete#CompleteJS
"autocmd FileType html set ofu=htmlcomplete#CompleteTags
"autocmd FileType css set ofu=csscomplete#CompleteCSS
"autocmd FileType xml set ofu=xmlcomplete#CompleteTags
"配置Vim的智能补全, 即所谓的Omni Completion
"fun! OmniComplete()
" let left = strpart(getline('.'), col('.') - 2, 1)
" if left =~ "^$"
" return ""
" elseif left =~ ' $'
" return ""
" else
" return "\<C-x>\<C-o>"
" endfun
" inoremap <silent> <S-Tab> <C-R>=OmniComplete()<CR>
"配置Tab键来智能补全tags:
fun! KeywordComplete()
let left = strpart(getline('.'), col('.') - 2, 1)
if left =~ "^\t*$"
return "\<Tab>"
elseif left =~ ' $'
return "\<Tab>"
else
return "\<C-N>"
endfun
inoremap <silent> <Tab> <C-R>=KeywordComplete()<CR>
"LastModified:
let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936
set fileformat=unix
set nobackup
"set autoread
set autowrite
filetype on
" 加上这个会花屏
"set lines=30
"set columns=90
winpos 100 100
"set guioptions-=m
" 启用鼠标
set mouse=a
"set mousehide
nnoremap <F4> :call g:Jsbeautify()<CR>
nnoremap <C-s> :w<CR>
"下面两行在进行编写代码时,在格式对起上很有用;
"第一行,vim 使用自动对起,也就是把当前行的对起格式应用到下一行;
"第二行,依据上面的对起格式,智能的选择对起方式,对于类似C 语言编
"写上很有用
"set autoindent
set smartindent
"查询时非常方便,如要查找book 单词,当输入到/b 时,会自动找到第一
"个b 开头的单词,当输入到/bo 时,会自动找到第一个bo 开头的单词,依
"次类推,进行查找时,使用此设置会快速找到答案,当你找要匹配的单词
"时,别忘记回车
set incsearch
set hlsearch
" 单行注释
set comments=://
" 段落注释
set comments=s1:/*,mb:*,ex0:/
"显示不完整的命令。
"showcmd 要在nocp 后面才有用
"set nocp
"set showcmd
" 命令行高度
"set cmdheight=1
" do not wrap lines
"set nowrap
"添加水平滚动条
"set guioptions+=b
" 显示空格,tab,行尾
set list
set lcs=tab:>-,trail:-
" 断行
set lbr "不在单词中间断行
set fo+=mB "打开断行模块对亚洲语言支持
" 使用F8打开Taglist
nnoremap <silent> <F8> :TlistToggle<CR>
let Tlist_Use_Right_Window=1
let Tlist_File_Fold_Auto_Close=0
"let Tlist_Show_Menu = 1
" 增强检索功能
"set tags=./tags,./../tags,./**/tags
"set guioptions-=T
"set dictionary-=~/.vim/funclist.txt dictionary+=~/.vim/funclist.txt
"set complete-=k complete +=k
"source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
"source $VIMRUNTIME/compiler/php.vim
behave mswin
set nu
set ruler
set history=1000
" PHP 折叠
let php_folding =1
" 缩进
set tabstop=4
set softtabstop=4
set shiftwidth=4
set smarttab
"set expandtab
" 使用缩进进行折叠
"set fdm=indent
"set fdc=4
set backspace=indent,eol,start
"set encoding=utf8
" 针对C语言的缩进
"set cindent
syntax on
"set syntax=php
"au GUIEnter * simalt ~x
autocmd BufWritePre,FileWritePre *.html ks|call LastMod()|'s
" line("$") 统计列数
fun LastMod()
let l = line("$")
"exe "1," . l . "s/Last modified: .*/Last modified: " . strftime(" %Y %b %d %X") ."/g"
exe "1," . l . "s/?>\n*/?>/g"
endfun
colorscheme koehler
"autocmd FileType c set ofu=ccomplete#Complete
"autocmd FileType php set ofu=phpcomplete#CompletePHP
"autocmd FileType python set ofu=pythoncomplete#Complete
"autocmd FileType javascript set ofu=javascriptcomplete#CompleteJS
"autocmd FileType html set ofu=htmlcomplete#CompleteTags
"autocmd FileType css set ofu=csscomplete#CompleteCSS
"autocmd FileType xml set ofu=xmlcomplete#CompleteTags
"配置Vim的智能补全, 即所谓的Omni Completion
"fun! OmniComplete()
" let left = strpart(getline('.'), col('.') - 2, 1)
" if left =~ "^$"
" return ""
" elseif left =~ ' $'
" return ""
" else
" return "\<C-x>\<C-o>"
" endfun
" inoremap <silent> <S-Tab> <C-R>=OmniComplete()<CR>
"配置Tab键来智能补全tags:
fun! KeywordComplete()
let left = strpart(getline('.'), col('.') - 2, 1)
if left =~ "^\t*$"
return "\<Tab>"
elseif left =~ ' $'
return "\<Tab>"
else
return "\<C-N>"
endfun
inoremap <silent> <Tab> <C-R>=KeywordComplete()<CR>
#4
这个我试了一下。 不但 utf-8 ,就是 gb13010 ,gb2312 都会在文件末尾加一个换行符。
#5
本来加了一个操作,在文件保存时去掉最后的\n ,可能也没写对,不起作用。真实后来想想,这个是在写入的时候加的。就算在写入前对这缓冲区的文件处理,在写入到文件时还是会加一个换行。
autocmd BufWritePre,FileWritePre *.html ks|call LastMod()|'s
" line("$") 统计列数
fun LastMod()
let l = line("$")
"exe "1," . l . "s/Last modified: .*/Last modified: " . strftime(" %Y %b %d %X") ."/g"
exe "1," . l . "s/?>\n*/?>/g"
endfun
autocmd BufWritePre,FileWritePre *.html ks|call LastMod()|'s
" line("$") 统计列数
fun LastMod()
let l = line("$")
"exe "1," . l . "s/Last modified: .*/Last modified: " . strftime(" %Y %b %d %X") ."/g"
exe "1," . l . "s/?>\n*/?>/g"
endfun
#6
set fileformat=dos 或者unix试一下
#7
上面的只是一个 html 做的测试,本打算把文件最后一行的 ?>\n 换成 ?> ,不过这个也根本不起作用。
#8
好的。
#9
set fileformat=dos 也不行。。。。还是会多一个。晕了。
说一下。在 geany 中有一个选项,设置在文件保存时保证文件末尾有一个空行,设置了这个 ,用 geany 保存文件的时候就不会在文件结尾加一个换行了,还有 gedit vim 黙认也是在文件保存时加一个换行。我想 gedit 没有设置的地方,vim 一定可以设置。
说一下。在 geany 中有一个选项,设置在文件保存时保证文件末尾有一个空行,设置了这个 ,用 geany 保存文件的时候就不会在文件结尾加一个换行了,还有 gedit vim 黙认也是在文件保存时加一个换行。我想 gedit 没有设置的地方,vim 一定可以设置。
#10
set fileformat=mac呢
这种情况应该就是这个选项引起的吧
这种情况应该就是这个选项引起的吧
#11
奇怪了,这个不管设置成 dos unix mac 都不管用呢。
#12
dos 应该是 \r\n
unix 应该是 \n
mac 应该是 \r
是这样的吧
unix 应该是 \n
mac 应该是 \r
是这样的吧
#13
这里有一个文档,我再看http://man.chinaunix.net/newsoft/vi/doc/usr_23.html
#14
是的,你分别用geany和vimx编辑一个文件,然后用二进制查看文件内容中换行符
通过比较应该就能得到需要的fileformat了
通过比较应该就能得到需要的fileformat了
#15
这个能修改文件格式,可是我们这边通一用 unix 格式,哎~~~,不过也不能解决保存时会自动增加换行符的问题。
#16
怎么办?还有没有高人来指定一下?
#17
.vimrc 里加入
set binary
set noendofline
#18
管用吗?
#19
果然是高人啊。太崇拜了啊。~~~
#20
不过这样的话,中文显不了了。。。。
#21
看到一篇文章说 unix 以行为单位。所以这个 换行也是正常的。是不是我的这个不允许有换行的做法是错误的啊。
#22
传统的vi是不会加这个换行的。但是有些gcc的某些版本在需要这个最后的换行,所以VIM默认会加个换行。
"unix 以行为单位"也是一个很好的理由。
由于用gcc的原因,我已经习惯了在文件最后加一个空行。
现在用VIM就发现保存的文本文件的最后有两个空行。
#23
终于找到方法了。特意来分享一下:
autocmd FileType php set bin noeol
autocmd FileType php set bin noeol
#1
用 vim 编辑,文件最后会多出一行来。晕。
#2
文件格式问题吧,尝试设置vim的
fileformat
fileformat
#3
我帖一下我的设置
"LastModified:
let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936
set fileformat=unix
set nobackup
"set autoread
set autowrite
filetype on
" 加上这个会花屏
"set lines=30
"set columns=90
winpos 100 100
"set guioptions-=m
" 启用鼠标
set mouse=a
"set mousehide
nnoremap <F4> :call g:Jsbeautify()<CR>
nnoremap <C-s> :w<CR>
"下面两行在进行编写代码时,在格式对起上很有用;
"第一行,vim 使用自动对起,也就是把当前行的对起格式应用到下一行;
"第二行,依据上面的对起格式,智能的选择对起方式,对于类似C 语言编
"写上很有用
"set autoindent
set smartindent
"查询时非常方便,如要查找book 单词,当输入到/b 时,会自动找到第一
"个b 开头的单词,当输入到/bo 时,会自动找到第一个bo 开头的单词,依
"次类推,进行查找时,使用此设置会快速找到答案,当你找要匹配的单词
"时,别忘记回车
set incsearch
set hlsearch
" 单行注释
set comments=://
" 段落注释
set comments=s1:/*,mb:*,ex0:/
"显示不完整的命令。
"showcmd 要在nocp 后面才有用
"set nocp
"set showcmd
" 命令行高度
"set cmdheight=1
" do not wrap lines
"set nowrap
"添加水平滚动条
"set guioptions+=b
" 显示空格,tab,行尾
set list
set lcs=tab:>-,trail:-
" 断行
set lbr "不在单词中间断行
set fo+=mB "打开断行模块对亚洲语言支持
" 使用F8打开Taglist
nnoremap <silent> <F8> :TlistToggle<CR>
let Tlist_Use_Right_Window=1
let Tlist_File_Fold_Auto_Close=0
"let Tlist_Show_Menu = 1
" 增强检索功能
"set tags=./tags,./../tags,./**/tags
"set guioptions-=T
"set dictionary-=~/.vim/funclist.txt dictionary+=~/.vim/funclist.txt
"set complete-=k complete +=k
"source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
"source $VIMRUNTIME/compiler/php.vim
behave mswin
set nu
set ruler
set history=1000
" PHP 折叠
let php_folding =1
" 缩进
set tabstop=4
set softtabstop=4
set shiftwidth=4
set smarttab
"set expandtab
" 使用缩进进行折叠
"set fdm=indent
"set fdc=4
set backspace=indent,eol,start
"set encoding=utf8
" 针对C语言的缩进
"set cindent
syntax on
"set syntax=php
"au GUIEnter * simalt ~x
autocmd BufWritePre,FileWritePre *.html ks|call LastMod()|'s
" line("$") 统计列数
fun LastMod()
let l = line("$")
"exe "1," . l . "s/Last modified: .*/Last modified: " . strftime(" %Y %b %d %X") ."/g"
exe "1," . l . "s/?>\n*/?>/g"
endfun
colorscheme koehler
"autocmd FileType c set ofu=ccomplete#Complete
"autocmd FileType php set ofu=phpcomplete#CompletePHP
"autocmd FileType python set ofu=pythoncomplete#Complete
"autocmd FileType javascript set ofu=javascriptcomplete#CompleteJS
"autocmd FileType html set ofu=htmlcomplete#CompleteTags
"autocmd FileType css set ofu=csscomplete#CompleteCSS
"autocmd FileType xml set ofu=xmlcomplete#CompleteTags
"配置Vim的智能补全, 即所谓的Omni Completion
"fun! OmniComplete()
" let left = strpart(getline('.'), col('.') - 2, 1)
" if left =~ "^$"
" return ""
" elseif left =~ ' $'
" return ""
" else
" return "\<C-x>\<C-o>"
" endfun
" inoremap <silent> <S-Tab> <C-R>=OmniComplete()<CR>
"配置Tab键来智能补全tags:
fun! KeywordComplete()
let left = strpart(getline('.'), col('.') - 2, 1)
if left =~ "^\t*$"
return "\<Tab>"
elseif left =~ ' $'
return "\<Tab>"
else
return "\<C-N>"
endfun
inoremap <silent> <Tab> <C-R>=KeywordComplete()<CR>
"LastModified:
let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936
set fileformat=unix
set nobackup
"set autoread
set autowrite
filetype on
" 加上这个会花屏
"set lines=30
"set columns=90
winpos 100 100
"set guioptions-=m
" 启用鼠标
set mouse=a
"set mousehide
nnoremap <F4> :call g:Jsbeautify()<CR>
nnoremap <C-s> :w<CR>
"下面两行在进行编写代码时,在格式对起上很有用;
"第一行,vim 使用自动对起,也就是把当前行的对起格式应用到下一行;
"第二行,依据上面的对起格式,智能的选择对起方式,对于类似C 语言编
"写上很有用
"set autoindent
set smartindent
"查询时非常方便,如要查找book 单词,当输入到/b 时,会自动找到第一
"个b 开头的单词,当输入到/bo 时,会自动找到第一个bo 开头的单词,依
"次类推,进行查找时,使用此设置会快速找到答案,当你找要匹配的单词
"时,别忘记回车
set incsearch
set hlsearch
" 单行注释
set comments=://
" 段落注释
set comments=s1:/*,mb:*,ex0:/
"显示不完整的命令。
"showcmd 要在nocp 后面才有用
"set nocp
"set showcmd
" 命令行高度
"set cmdheight=1
" do not wrap lines
"set nowrap
"添加水平滚动条
"set guioptions+=b
" 显示空格,tab,行尾
set list
set lcs=tab:>-,trail:-
" 断行
set lbr "不在单词中间断行
set fo+=mB "打开断行模块对亚洲语言支持
" 使用F8打开Taglist
nnoremap <silent> <F8> :TlistToggle<CR>
let Tlist_Use_Right_Window=1
let Tlist_File_Fold_Auto_Close=0
"let Tlist_Show_Menu = 1
" 增强检索功能
"set tags=./tags,./../tags,./**/tags
"set guioptions-=T
"set dictionary-=~/.vim/funclist.txt dictionary+=~/.vim/funclist.txt
"set complete-=k complete +=k
"source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
"source $VIMRUNTIME/compiler/php.vim
behave mswin
set nu
set ruler
set history=1000
" PHP 折叠
let php_folding =1
" 缩进
set tabstop=4
set softtabstop=4
set shiftwidth=4
set smarttab
"set expandtab
" 使用缩进进行折叠
"set fdm=indent
"set fdc=4
set backspace=indent,eol,start
"set encoding=utf8
" 针对C语言的缩进
"set cindent
syntax on
"set syntax=php
"au GUIEnter * simalt ~x
autocmd BufWritePre,FileWritePre *.html ks|call LastMod()|'s
" line("$") 统计列数
fun LastMod()
let l = line("$")
"exe "1," . l . "s/Last modified: .*/Last modified: " . strftime(" %Y %b %d %X") ."/g"
exe "1," . l . "s/?>\n*/?>/g"
endfun
colorscheme koehler
"autocmd FileType c set ofu=ccomplete#Complete
"autocmd FileType php set ofu=phpcomplete#CompletePHP
"autocmd FileType python set ofu=pythoncomplete#Complete
"autocmd FileType javascript set ofu=javascriptcomplete#CompleteJS
"autocmd FileType html set ofu=htmlcomplete#CompleteTags
"autocmd FileType css set ofu=csscomplete#CompleteCSS
"autocmd FileType xml set ofu=xmlcomplete#CompleteTags
"配置Vim的智能补全, 即所谓的Omni Completion
"fun! OmniComplete()
" let left = strpart(getline('.'), col('.') - 2, 1)
" if left =~ "^$"
" return ""
" elseif left =~ ' $'
" return ""
" else
" return "\<C-x>\<C-o>"
" endfun
" inoremap <silent> <S-Tab> <C-R>=OmniComplete()<CR>
"配置Tab键来智能补全tags:
fun! KeywordComplete()
let left = strpart(getline('.'), col('.') - 2, 1)
if left =~ "^\t*$"
return "\<Tab>"
elseif left =~ ' $'
return "\<Tab>"
else
return "\<C-N>"
endfun
inoremap <silent> <Tab> <C-R>=KeywordComplete()<CR>
#4
这个我试了一下。 不但 utf-8 ,就是 gb13010 ,gb2312 都会在文件末尾加一个换行符。
#5
本来加了一个操作,在文件保存时去掉最后的\n ,可能也没写对,不起作用。真实后来想想,这个是在写入的时候加的。就算在写入前对这缓冲区的文件处理,在写入到文件时还是会加一个换行。
autocmd BufWritePre,FileWritePre *.html ks|call LastMod()|'s
" line("$") 统计列数
fun LastMod()
let l = line("$")
"exe "1," . l . "s/Last modified: .*/Last modified: " . strftime(" %Y %b %d %X") ."/g"
exe "1," . l . "s/?>\n*/?>/g"
endfun
autocmd BufWritePre,FileWritePre *.html ks|call LastMod()|'s
" line("$") 统计列数
fun LastMod()
let l = line("$")
"exe "1," . l . "s/Last modified: .*/Last modified: " . strftime(" %Y %b %d %X") ."/g"
exe "1," . l . "s/?>\n*/?>/g"
endfun
#6
set fileformat=dos 或者unix试一下
#7
上面的只是一个 html 做的测试,本打算把文件最后一行的 ?>\n 换成 ?> ,不过这个也根本不起作用。
#8
好的。
#9
set fileformat=dos 也不行。。。。还是会多一个。晕了。
说一下。在 geany 中有一个选项,设置在文件保存时保证文件末尾有一个空行,设置了这个 ,用 geany 保存文件的时候就不会在文件结尾加一个换行了,还有 gedit vim 黙认也是在文件保存时加一个换行。我想 gedit 没有设置的地方,vim 一定可以设置。
说一下。在 geany 中有一个选项,设置在文件保存时保证文件末尾有一个空行,设置了这个 ,用 geany 保存文件的时候就不会在文件结尾加一个换行了,还有 gedit vim 黙认也是在文件保存时加一个换行。我想 gedit 没有设置的地方,vim 一定可以设置。
#10
set fileformat=mac呢
这种情况应该就是这个选项引起的吧
这种情况应该就是这个选项引起的吧
#11
奇怪了,这个不管设置成 dos unix mac 都不管用呢。
#12
dos 应该是 \r\n
unix 应该是 \n
mac 应该是 \r
是这样的吧
unix 应该是 \n
mac 应该是 \r
是这样的吧
#13
这里有一个文档,我再看http://man.chinaunix.net/newsoft/vi/doc/usr_23.html
#14
是的,你分别用geany和vimx编辑一个文件,然后用二进制查看文件内容中换行符
通过比较应该就能得到需要的fileformat了
通过比较应该就能得到需要的fileformat了
#15
这个能修改文件格式,可是我们这边通一用 unix 格式,哎~~~,不过也不能解决保存时会自动增加换行符的问题。
#16
怎么办?还有没有高人来指定一下?
#17
.vimrc 里加入
set binary
set noendofline
#18
管用吗?
#19
果然是高人啊。太崇拜了啊。~~~
#20
不过这样的话,中文显不了了。。。。
#21
看到一篇文章说 unix 以行为单位。所以这个 换行也是正常的。是不是我的这个不允许有换行的做法是错误的啊。
#22
传统的vi是不会加这个换行的。但是有些gcc的某些版本在需要这个最后的换行,所以VIM默认会加个换行。
"unix 以行为单位"也是一个很好的理由。
由于用gcc的原因,我已经习惯了在文件最后加一个空行。
现在用VIM就发现保存的文本文件的最后有两个空行。
#23
终于找到方法了。特意来分享一下:
autocmd FileType php set bin noeol
autocmd FileType php set bin noeol