Frage

Ich habe ein einfaches Ziel: Karte Ctrl-C, einen Befehl, den ich glaube nicht, dass ich jemals vim zu töten verwendet haben, um automatisch am Anfang einer Zeile legen Sie das richtige Stelle (n) diese Zeile auszukommen nach der Dateityp der Datei.

Ich dachte, ich die einen automatischen Befehl verwenden könnte den Dateityp erkennen und eine vim Variable auf die richtigen Kommentarzeichen gesetzt, wenn die Datei geöffnet ist. Also habe ich versucht, so etwas wie:

" Control C, which is NEVER used. Now comments out lines!
autocmd BufNewFile,BufRead *.c let CommentChar = "//"
autocmd BufNewFile,BufRead *.py let CommentChar = "#"
map <C-C> mwI:echo &CommentChar<Esc>`wll

Die Kartenmarkierung meiner aktuelle Position, geht an den Anfang der Zeile im Einfügemodus, Echos der Kommentar-Charakter (s) an diesem Punkt , Befehlsmodus wechselt, geht zurück auf die eingestellte Marke, und geht zwei Zeichen rechts für die eingefügten Kommentarzeichen zu bilden (C Stil Kommentar vorausgesetzt).

Der kursive Teil ist der Teil ich Mühe, mich mit; es ist nur dort als Platzhalter darzustellen, was ich tun möchte. Können Sie mir helfen herauszufinden, wie dies zu erreichen? Bonuspunkte, wenn Sie verwenden strlen (CommentChar) die richtige Anzahl von Stellen nach rechts zu treten! Extra-Bonuspunkte für den vim-Master, der beinhaltet, wie Block-Stil Kommentare zu tun, wenn Sie im visuellen Modus !!

sind

Ich bin noch recht neu bei Vim Scripting; mein .vimrc ist eine schlappe 98 Zeilen lang, so dass, wenn Sie mit der Erklärung, keine Antworten uns bitte helfen können Sie zur Verfügung stellen! Danke.

War es hilfreich?

Lösung

Sie können <C-r> verwenden hier:

noremap <C-c> mwI<C-r>=g:CommentChar<CR><Esc>`wll

siehe :h i_CTRL-R.

Schauen Sie auch unter NERDCommenter Plugin, damit wird Mapping aussehen folgt aus:

" By default, NERDCommenter uses /* ... */ comments for c code.
" Make it use // instead
let NERD_c_alt_style=1
noremap <C-c> :call NERDComment(0, "norm")<CR>

Und Sie werden nicht von selbst Kommentarzeichen definieren.

Andere Tipps

Ich zog diese aus dem vim Spitzen an einem gewissen Punkt wiki und es nutzen, um mich. Der einzige Nachteil ist es, einen Raum zu Ende der Zeile (n) aus irgendeinem Grund fügt hinzu, wahrscheinlich etwas klein, dass ich übersehen.

" Set comment characters for common languages
autocmd FileType python,sh,bash,zsh,ruby,perl,muttrc let StartComment="#" | let EndComment=""
autocmd FileType html let StartComment="<!--" | let EndComment="-->"
autocmd FileType php,cpp,javascript let StartComment="//" | let EndComment=""
autocmd FileType c,css let StartComment="/*" | let EndComment="*/"
autocmd FileType vim let StartComment="\"" | let EndComment=""
autocmd FileType ini let StartComment=";" | let EndComment=""

" Toggle comments on a visual block
function! CommentLines()
    try
        execute ":s@^".g:StartComment." @\@g"
        execute ":s@ ".g:EndComment."$@@g"
    catch
        execute ":s@^@".g:StartComment." @g"
        execute ":s@$@ ".g:EndComment."@g"
    endtry
endfunction

" Comment conveniently
vmap <Leader>c :call CommentLines()<CR>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top