2016-05-31 4 views
0

Ich habe ein Problem mit meiner .vimrc-Datei. Ich habe einen Autokommand für alle Python- und SH-Dateien abgeschlossen. Ich habe beide unten aufgeführt. Alle Arbeiten wie erwartet, wenn ein direkter Weg dh mit:Autocmd bufnewfile verursacht "Trailing-Zeichen" Fehler auf relativen Pfaden

gvim test.py 

Wenn ich einen Pfad relativ zum cwd verwenden, aber wie:

gvim ../test.py 

ich die folgende Fehlermeldung:

Error detected while processing BufNewFile Auto commands for "*.{py,sh}"

E488: Trailing characters

Haben Sie Ideen, wie Sie dieses Problem beheben können?

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" 

Die Vorlage für Python-Dateien ist wie folgt:

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

Antwort

1

Zunächst einmal wollen wir bei :help 10.2 einen Blick:

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

Bitte /[flags] im Auge behalten. Nun, wenn Sie gvim test.py in der Befehlszeile eingeben, wird der folgende Befehl in Vim ausgeführt:

:s//# File Name: test.py 

Aber wenn Sie eingeben gvim ../test.py Vim ausführt:

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

so verwendet Vim test.py als :substitute ‚s-Flaggen und Das ist nicht das gewünschte Verhalten.

Was Sie brauchen, ist expand("%") durch expand("%:t") zu ersetzen, um nur den Dateinamen zu erhalten. Einzelheiten finden Sie unter :help expand().

+0

Perfekt. Vielen Dank! – kennedyl

Verwandte Themen