Vim Konfiguration

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hi,

Nachdem ich vor einiger Zeit Vimcasts entdeckt habe und die ein hübsches Video über Synchronisieren von Vim-Plugins mit Git haben, dachte ich mir es wär wieder Zeit meine ``.vimrc`` anzupassen. Wie heutzutage üblich hab ich sie in ein Github-Repo gesteckt - die Dateien werden danach von dotfilemanager verwaltet (daher auch die Bodenstriche statt der Punkte). Die Plugins werden über Submodule von Vim-Scripts reingeladen und von Pathogen in Vim integriert.

Meine .vimrc von Vim 7.3.69 unterscheidet sich ja ziemlich von der aus 6.1.18, von vor über 5 Jahren 8)

Worauf ich hinauswollte:
  • Vimcasts ist awesome
  • Installation via ``git submodule`` und Vim-Scripts rockt
  • Habt ihr auch irgendwelche interessanten Vim Tipps und Tricks oder Konfigurationseinstellungen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Ich hab letztens eine vimrc auf python.org gefunden (möglicherweise jetzt leicht verändert, finde das Original nicht):

Code: Alles auswählen

" vimrc file for following the coding standards specified in PEP 7 & 8.
"
" To use this file, source it in your own personal .vimrc file (``source
" <filename>``) or, if you don't have a .vimrc file, you can just symlink to it
" (``ln -s <this file> ~/.vimrc``).  All options are protected by autocmds
" (read below for an explanation of the command) so blind sourcing of this file
" is safe and will not affect your settings for non-Python or non-C files.
"
"
" All setting are protected by 'au' ('autocmd') statements.  Only files ending
" in .py or .pyw will trigger the Python settings while files ending in *.c or
" *.h will trigger the C settings.  This makes the file "safe" in terms of only
" adjusting settings for Python and C files.
"
" Only basic settings needed to enforce the style guidelines are set.
" Some suggested options are listed but commented out at the end of this file.

" Number of spaces that a pre-existing tab is equal to.
" For the amount of space used for a new tab use shiftwidth.
au BufRead,BufNewFile *py,*pyw,*.c,*.h set tabstop=4

" What to use for an indent.
" This will affect Ctrl-T and 'autoindent'.
" Python: 4 spaces
" C: tabs (pre-existing files) or 4 spaces (new files)
au BufRead,BufNewFile *.py,*pyw set shiftwidth=4
au BufRead,BufNewFile *.py,*.pyw set expandtab
fu Select_c_style()
    if search('^\t', 'n', 150)
        set shiftwidth=8
        set noexpandtab
    el
        set shiftwidth=4
        set expandtab
    en
endf
au BufRead,BufNewFile *.c,*.h call Select_c_style()
au BufRead,BufNewFile Makefile* set noexpandtab

" Use the below highlight group when displaying bad whitespace is desired.
highlight BadWhitespace ctermbg=red guibg=red

" Display tabs at the beginning of a line in Python mode as bad.
au BufRead,BufNewFile *.py,*.pyw match BadWhitespace /^\t\+/
" Make trailing whitespace be flagged as bad.
au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/

" Wrap text after a certain number of characters
" Python: 79 
" C: 79
au BufRead,BufNewFile *.py,*.pyw,*.c,*.h set textwidth=79

" Turn off settings in 'formatoptions' relating to comment formatting.
" - c : do not automatically insert the comment leader when wrapping based on
"    'textwidth'
" - o : do not insert the comment leader when using 'o' or 'O' from command mode
" - r : do not insert the comment leader when hitting <Enter> in insert mode
" Python: not needed
" C: prevents insertion of '*' at the beginning of every line in a comment
au BufRead,BufNewFile *.c,*.h set formatoptions-=c formatoptions-=o formatoptions-=r

" Use UNIX (\n) line endings.
" Only used for new files so as to not force existing files to change their
" line endings.
" Python: yes
" C: yes
au BufNewFile *.py,*.pyw,*.c,*.h set fileformat=unix


" ----------------------------------------------------------------------------
" The following section contains suggested settings.  While in no way required
" to meet coding standards, they are helpful.

" Set the default file encoding to UTF-8: ``set encoding=utf-8``

" Puts a marker at the beginning of the file to differentiate between UTF and
" UCS encoding (WARNING: can trick shells into thinking a text file is actually
" a binary file when executing the text file): ``set bomb``

" For full syntax highlighting:
"``let python_highlight_all=1``
"``syntax on``

" Automatically indent based on file type: ``filetype indent on``
" Keep indentation level from previous line: ``set autoindent``

" Folding based on indentation: ``set foldmethod=indent``
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Hab ebenfalls meine Konfiguration auf Github. Sehr praktisch sind uebrigens Command-T und gundo.vim
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

Oh, dotfilemanager sieht gut aus, danke für den Hinweis...
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Ist man mit Vim denn wirklich so produktiv? Konnte noch nie die Motivation finden um mich da richtig einzuarbeiten...
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
0x1cedd1ce
User
Beiträge: 31
Registriert: Sonntag 3. Oktober 2010, 12:21

mit vim kann man sehr effizient arbeiten, auch ohne all die ganzen befehle zu beherschen die es da gibt. die einfachen dinge beschränken sich ja auf i (insert) y (kopieren) und p (paste). /<Pattern> zum suchen ist auch noch hilfreich. aber viel mehr braucht man oft nicht. w und q zum schreiben und beenden natürlich auch noch.
über ssh gibts dann keine alternative mehr. x11-forwarding ist einfach zu langsam.
lunar

@0x1cedd1ce: Es gibt viele Editoren für das Terminal, auch Emacs kann ohne X11 verwendet werden. vim ist also bestimmt nicht ohne Alternative. "nano" beispielsweise ist oft vorinstalliert und wird daher dementsprechend häufig verwendet.
Zuletzt geändert von lunar am Freitag 3. Dezember 2010, 13:00, insgesamt 1-mal geändert.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Um schnell mal was zu Editieren nutze ich häufig "joe".

Ist aber vom Funktionsumfang sehr klein.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

lunar hat geschrieben:@0x1cedd1ce: Es gibt viele Editoren für das Terminal, auch Emacs kann ohne X11 verwendet werden.
Und ueber SSH editieren geht per TRAMP ebenfalls.

@ms4py: Ja, IMHO lohnt es sich - sofern man sich an modales editieren gewoehnen kann.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

ms4py hat geschrieben:Ist man mit Vim denn wirklich so produktiv? Konnte noch nie die Motivation finden um mich da richtig einzuarbeiten...
Wenn du bereit bist mehrere Tage in deinen Editor zu investieren kann man mit vim oder emacs sicherlich sehr effizient arbeiten. Wobei die Betonung wirklich auf mehrere Tage liegt, meine Konfiguration+Plugins zaehlt momentan 9k LOC.
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

ms4py hat geschrieben:Ist man mit Vim denn wirklich so produktiv? Konnte noch nie die Motivation finden um mich da richtig einzuarbeiten...
Den Text finde ich da ganz informativ: http://stevelosh.com/blog/2010/09/coming-home-to-vim/
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

ms4py hat geschrieben:Ist man mit Vim denn wirklich so produktiv? Konnte noch nie die Motivation finden um mich da richtig einzuarbeiten...
Also ich finde ihn schon nicht schlecht. Alle Editoren sind schlecht, Vim halt meiner Meinung nach am wenigsten. Gerade die extreme Konfigurierbarkeit ist nett, das einzige was da rankommt ist Emacs, aber da habe ich festgestellt dass der mit mir irgendwie nicht zusammenpasst, trotz Bemühungen meinerseits.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

Diese Diskussion hat mich bewogen, vim auch mal auszuprobieren. Den Einstieg fand ich nicht dank einiger Artikel und Tutorien aus dieser Diskussion und aus Wikipedia sowie der gezeigten Konfiguration nicht allzu schwer, eine brauchbare Konfiguration kam in recht kurzer Zeit zusammen. Das mag aber auch daran liegen, dass ich normalerweise Emacs nutze und somit an Konfigurationsarbeit gewöhnt bin. Vor diesem Hintergrund finde ich die Bedienung zwar ungewohnt, aber durchaus brauchbar und manchmal sogar schon auf den ersten Blick sinnvoll. Nach "vimtutor" und einiger Zeit ernsthafter Python-Programmierung in vim gehen die grundlegenden Befehle mittlerweile recht gut von der Hand.

Ob vim emacs ersetzen kann oder wird, hängt allerdings von den verfügbaren Plugins ab. Obligatorisch sind ein eingebetteter interaktiver Interpreter für Haskell sowie XML- und LaTeX-Modi, welche mit nxml bzw. auctex mithalten können. Auch benötige ich noch ein brauchbares Farbschema mit weißem Hintergrund, aber das kann man im Zweifelsfall auch selbst erstellen, allzu kompliziert scheint die Syntax dafür nicht zu sein.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Mhh, mir ist der Einstieg bisher noch nicht so leicht gefallen, vielleicht hast du mir ja ein paar Tipps?
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
lunar

@ms4py: Eigentlich nichts Spezielles, außer vielleicht, dass Du vim vor dem ersten Start mit einem anderen Editor auf Basis einer brauchbaren Beispielkonfiguration konfigurieren solltest, ich habe die aus dem von .robert verlinkten Artikel genommen. Dann ist vim beim ersten Start in brauchbarer Form und nicht ganz so abschreckend.

Ansonsten eben "vimtutor" durcharbeiten und einfach anfangen zu programmieren.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Für LaTeX+vim gibt es VIM-LaTeX
lunar hat geschrieben:Auch benötige ich noch ein brauchbares Farbschema mit weißem Hintergrund, aber das kann man im Zweifelsfall auch selbst erstellen, allzu kompliziert scheint die Syntax dafür nicht zu sein.
Für weißen Hintergrund kann ich summerfruit von mitsuhiko empfehlen.

Edit: "pyte" hat zwar keinen ganz weißen Hintergrund, aber dafür ein sehr helles Grau: http://www.vim.org/scripts/script.php?script_id=1492
lunar

@derdon: Danke für die Hilfe, doch ich habe bereits ein eigenes Farbschema geschrieben. Die Themen wären eh nichts für mich gewesen, summerfruit ist mir zu bunt, pyte zu kontrastarm.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Was genau ist eigentlich der Unterschied zwischen einem eingebetten Interpreter und einem Terminal mit Interpreter neben dem Editor? :-)

Dann will ich hier auch mal ein paar Ausschnitte aus meiner Vim-RC posten, die ganze Version gibts auf GitHub (siehe Signatur):

Code: Alles auswählen

set scrolloff=99999

fu! _filetype()
  if &ft != 'python'
    if &ft == ''
      return ''
    else
      return '[' . &ft . ']'
    endif
  elseif exists("w:PHStatusLine")
    return '  ' . w:PHStatusLine
  else
    return ''
  endif
endfunction

set statusline=%f\ %h%m%r%w%{_filetype()}%*%=\ pos:\ %l\/%L,%c%<\ \|\ asc\ %b/0x%B\ \|\ %P
set laststatus=2

" switch tabs with Ctrl-{j,k}
noremap <C-K>   <C-PageDown>
inoremap <C-K>  <C-PageDown>
noremap <C-J>   <C-PageUp>
inoremap <C-J>  <C-PageUp>

" switch windows with Ctrl-{h,l}
map <C-h> <C-w>h
map <C-l> <C-w>l

" Better Search
set hlsearch
set incsearch
set ignorecase
set smartcase
nnoremap <silent> <C-l> :nohl<CR><C-l>

" Highlight column 81
set colorcolumn=81
highlight ColorColumn ctermbg=darkgrey

" Remember cursor position after reload
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif

" go with smartindent if there is no plugin indent file.
" but don't outdent hashes
inoremap # #

" Python!
autocmd FileType python setlocal
\   formatoptions+=croq " c+r+o+q
\   cinwords=if,elif,else,for,while,try,except,finally,def,class,with
\   complete+=k~/.vim/syntax/python.vim isk+=.,(
let python_highlight_all = 1

Das Statusline-Gewurschtel ist leider total unleserlich, beschert mir aber eine recht informative Statusleiste:

Bild
lunar

@Dauerbaustelle: Ein Interpreter im Editor ist manchmal übersichtlicher und komfortabler.

Der interaktive Interpreter des GHC (ein Haskell-Compiler) beispielsweise unterstützt die Haskell-Syntax nicht vollständig. Folglich implementiert man Funktion meist in einer normalen Quelltextdatei und lädt diese anschließend in den Interpreter, um einzelne Funktionen auszuprobieren. Dieser Arbeitsablauf geht schneller von der Hand, wenn Editor und Interpreter in einem Fenster vereint sind, und eine Quelltextdatei mit einem Tastenkürzel direkt geladen werden kann.

In manchen Situationen (e.g. Unterricht) ist es zudem wünschenswert, Quelltext und Interpreterausgabe gleichzeitig anzuzeigen. Das fällt leichter, wenn beide im selben Programm und folglich auch im selben Programm laufen.
Benutzeravatar
snafu
User
Beiträge: 6866
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Leonidas hat geschrieben:Meine .vimrc von Vim 7.3.69 [...]
Zeile 52:

Code: Alles auswählen

set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
Fehlt da nicht das with-Statement? ;)
Antworten