Vim用于清理隐藏的字符

时间:2011-02-16 19:30:36

标签: vim

目前在我的.vimrc文件中,我有一个函数可以在保存时清除所有尾随空格,同时保留鼠标位置。

fun! <SID>StripTrailingWhitespaces()
  let l = line(".")
  let c = col(".")
  %s/\s\+$//e
  call cursor(l, c)
endfun

autocmd BufWritePre *.sql,*.php :call <SID>StripTrailingWhitespaces()

这很有效。但我想补充一些其他内容,例如:
*删除回车
*修复缩进SP后跟一个TAB

我尝试添加

  

%S / ^ M //ë

到我的StripTailingWhitespaces()函数,但是当我保存时,vim告诉我

  

按ENTER或键入命令继续

所以我认为我做错了什么或忘记了什么。任何帮助搞清楚这一点?谢谢

更新:仍在处理此问题。我尝试在<CR>函数的搜索结尾以及StripTrailingWhitespaces命令的末尾添加BufWritePre。没运气。实际上,添加它会给我带来很多“尾随空格”错误。还有其他建议吗?

如果没有一个用于修复输入问题的需要,那么搜索修复缩进SP后跟一个TAB呢?

1 个答案:

答案 0 :(得分:1)

我已经用

进行了测试
fun! S()
  let l = line(".")
  let c = col(".")
  %s/\s\+$//e
  %s/^M//e   
  call cursor(l, c)
endfun

它与Vim 7.3完美配合(注意:用CTRL-V CTRL-M输入^ M)

所以,看起来你没有做错任何事情,也没有忘记任何事情。

现在,这不会帮助你走得更远,是吗?

如果您有此消息,请尝试:messages,也许这会给您一个提示。

此外,:help messages读取

  Press ENTER or type command to continue

This message is given when there is something on the screen for you to read,
and the screen is about to be redrawn:
- After executing an external command (e.g., ":!ls" and "=").
- Something is displayed on the status line that is longer than the width of
  the window, or runs into the 'showcmd' or 'ruler' output.

所以,这部分可能值得一读(它比我粘贴的那部长)。