破碎的' ls'源码后的bash命令〜/ .vimrc

时间:2016-11-25 23:33:13

标签: bash vim

我最近采购了包含此功能的.vimrc:

 33 function! InsertTabWrapper()
 34   let col = col('.') - 1
 35   if !col || getline('.')[col - 1] !~ '\k'
 36     return "\<tab>"
 37   else
 38     return "\<c-p>"
 39   endif
 40 endfunction
 41 inoremap <tab> <c-r>=InsertTabWrapper()<cr>
 42 inoremap <s-tab> <c-n>

然后我从命令行做了

source ~/.vimrc

现在每当我跑

$ls

我在输出中看到该函数的片段。

$ ls
?  else? ??return <c-p
?  endif?endfunction?inoremap <tab> <c-r>=InsertTabWrapper()<cr>?inoremap <s-tab> <c-n>??
Applications
Desktop
Documents

我还没有找到清除它的方法。谢谢!

1 个答案:

答案 0 :(得分:1)

Bash无法读取Vim语法,我猜它会跳过这些行(functionletif)然后选择第一个>作为文件IO重定向。这些实际上是你创建的目录中的两个文件,名字中有奇怪的字符。

这得到以下事实的支持:输出在第一个>之后开始,并在第二个>之后进入新行,并且输出中缺少这两个字符。

即。 ls工作正常,它们确实作为文件存在。你能删除它们吗?你还有另一种浏览文件的方法吗? (一个Gui,FileZilla over SFTP,WinSCP等?)。您可以尝试使用rm *return*rm *endfunction*,或者(谨慎地)使用rm -i *,这会提示y / n删除每个文件,只有当这些文件出现时才会说y。

(但我可能错了,而且根本不会发生什么。如果我尝试提供您的文件代码,我不会在文件夹中找到损坏的ls或虚假文件。)