Seite 1 von 2
Vim Konfiguration
Verfasst: Donnerstag 2. Dezember 2010, 20:38
von Leonidas
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
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?
Re: Vim Konfiguration
Verfasst: Donnerstag 2. Dezember 2010, 21:00
von nomnom
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``
Re: Vim Konfiguration
Verfasst: Donnerstag 2. Dezember 2010, 21:27
von DasIch
Hab ebenfalls meine Konfiguration auf
Github. Sehr praktisch sind uebrigens Command-T und gundo.vim
Re: Vim Konfiguration
Verfasst: Freitag 3. Dezember 2010, 10:48
von .robert
Oh, dotfilemanager sieht gut aus, danke für den Hinweis...
Re: Vim Konfiguration
Verfasst: Freitag 3. Dezember 2010, 12:11
von ms4py
Ist man mit Vim denn wirklich so produktiv? Konnte noch nie die Motivation finden um mich da richtig einzuarbeiten...
Re: Vim Konfiguration
Verfasst: Freitag 3. Dezember 2010, 12:46
von 0x1cedd1ce
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.
Re: Vim Konfiguration
Verfasst: Freitag 3. Dezember 2010, 12:50
von 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.
Re: Vim Konfiguration
Verfasst: Freitag 3. Dezember 2010, 12:55
von Xynon1
Um schnell mal was zu Editieren nutze ich häufig "joe".
Ist aber vom Funktionsumfang sehr klein.
Re: Vim Konfiguration
Verfasst: Freitag 3. Dezember 2010, 14:08
von cofi
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.
Re: Vim Konfiguration
Verfasst: Freitag 3. Dezember 2010, 15:06
von DasIch
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.
Re: Vim Konfiguration
Verfasst: Freitag 3. Dezember 2010, 15:55
von .robert
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/
Re: Vim Konfiguration
Verfasst: Freitag 3. Dezember 2010, 16:59
von Leonidas
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.
Re: Vim Konfiguration
Verfasst: Samstag 4. Dezember 2010, 14:48
von 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.
Re: Vim Konfiguration
Verfasst: Samstag 4. Dezember 2010, 15:26
von ms4py
Mhh, mir ist der Einstieg bisher noch nicht so leicht gefallen, vielleicht hast du mir ja ein paar Tipps?
Re: Vim Konfiguration
Verfasst: Samstag 4. Dezember 2010, 15:39
von 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.
Re: Vim Konfiguration
Verfasst: Samstag 4. Dezember 2010, 16:52
von derdon
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
Re: Vim Konfiguration
Verfasst: Samstag 4. Dezember 2010, 17:23
von 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.
Re: Vim Konfiguration
Verfasst: Sonntag 5. Dezember 2010, 23:45
von Dauerbaustelle
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:

Re: Vim Konfiguration
Verfasst: Montag 6. Dezember 2010, 00:02
von 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.
Re: Vim Konfiguration
Verfasst: Montag 6. Dezember 2010, 09:29
von snafu
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?
