Question

J'ai un objectif simple: Carte Ctrl-C, une commande que je ne pense pas que je l'ai jamais utilisé pour tuer vim, pour insérer automatiquement au début d'une ligne de commenter cette ligne le caractère correct (s) selon le type de fichier du fichier.

Je me suis dit que je pouvais utiliser un autocommand le reconnaître le type de fichier et définir une variable vim au caractère de commentaire correct lorsque le fichier est ouvert. J'ai donc essayé quelque chose comme:

" 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

que les marques de carte mon emplacement actuel, va au début de la ligne en mode d'insertion, échos le caractère de commentaire (s) à ce moment-là , passe en mode commande, remonte à la marque de jeu, et va deux caractères droit de compenser les caractères de commentaire insérés (en présumant commentaire de style C).

La partie est la partie en italique je vais avoir du mal avec; il est seulement là en tant que détenteur de place pour représenter ce que je veux faire. Pouvez-vous me aider comment y parvenir? Les points de bonus si vous utilisez strlen (CommentChar) à l'étape le nombre correct d'espaces à droite! points de bonus supplémentaires pour le vim-maître qui comprend comment faire des commentaires de style bloc si vous êtes en mode visuel !!

Je suis encore assez nouveau au script vim; mon vimrc est un si vous pouviez longues minables 98 lignes, merci de me aider en expliquant toutes les réponses que vous fournissez! Merci.

Était-ce utile?

La solution

Vous pouvez utiliser <C-r> ici:

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

voir :h i_CTRL-R.

Regardez aussi NERDCommenter plugin, avec elle la cartographie ressemblera ceci:

" 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>

Et vous ne devez définir les caractères de commentaire par vous-même.

Autres conseils

J'ai tiré ce les bouts vim wiki à un moment donné et l'utiliser moi-même. Le seul inconvénient est qu'il ajoute un espace à la fin de la ligne (s) pour une raison quelconque, probablement un petit quelque chose que j'oublié.

" 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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top