1

我的 .vimrc 文件有问题。我已经完成了所有 python 和 sh 文件的自动命令。我在下面都包括了。使用直接路径时,所有工作都按预期工作,即:

gvim test.py

但是,如果我使用相对于 cwd 的路径,例如:

gvim ../test.py

我收到以下错误:

处理“*.{py,sh}”的 BufNewFile 自动命令时检测到错误

E488:尾随字符

关于如何解决这个问题的任何想法?

autocmd bufnewfile *.{py,sh}
\ let path = expand("~/bin/Templates/")|
\ let extension = expand("%:e")|
\ let template = path . extension|
\ let name = "John Doe" |
\ if filereadable(template)|
\   execute "silent! 0r" . template|
\   execute "1," . 10 . "g/# File Name:.*/s//# File Name: " .expand("%")|
\   execute "1," . 10 . "g/# Creation Date:.*/s//# Creation Date: " .strftime("%b-%d-%Y")|
\   execute "1," . 10 . "g/Created By:.*/s//Created By: " . name|
\   execute "normal Gdd/CURSOR\<CR>dw"|
\ endif|
\ startinsert!

autocmd bufwritepre,filewritepre *.{py,sh}
\ execute "normal ma"|
\ execute "1," . 10 . "g/# Last Modified:.*/s/# Last Modified:.*/# Last Modified: " 
\ .strftime("%b-%d-%Y")

autocmd bufwritepost,filewritepost *.{py,sh}
\ execute "normal 'a"

python文件的模板如下:

#!/usr/bin/python
# File Name: <filename>
# Creation Date: <date>
# Last Modified: <N/A>
# Created By: <Name> 
# Description: CURSOR
4

1 回答 1

2

首先,让我们看一下:help 10.2

The general form of the `:substitute` command is as follows:
     :[range]substitute/from/to/[flags]

/[flags]记住。现在,当您gvim test.py在命令行中输入时,在 Vim 中执行以下命令:

:s//# File Name: test.py

但是当你进入gvim ../test.pyVim 时执行:

:s//# File Name: ../test.py

所以 Vim 使用test.pyas:substitute的标志,这不是我们想要的行为。

您需要替换expand("%")expand("%:t")以仅获取文件名。详情请参阅:help expand()

于 2016-06-01T14:42:25.990 回答