PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (Vim) mehrer Zeilen gleichzeitig mit Tab einrücken.



Zy0n
26.02.07, 12:22
Hallo,

gibt es eine Möglichkeit im (v) Modus mehrer Zeilen markieren und mit Tab (Strg+T) einzurücken?


Gruß

zyon

delmonico
26.02.07, 12:27
Mit Tab nicht, aber mit ">" (und zurück mit < geht natürlich auch).

Meillo
26.02.07, 12:28
Mit Tab nicht, aber mit ">" (und zurück mit < geht natürlich auch).Ergänzung: Mit welchem Zeichen eingerückt wird, hängt von deiner Konfiguration ab.

Zy0n
26.02.07, 12:54
Besten Danke, da es hier wohl paar Experten gibt mal meine zweite Frage. Wie kann ich vim dazu bringen meine Datei UTF-8 Format zu speichern?

delmonico
26.02.07, 13:05
set encoding=utf-8

Meillo
26.02.07, 13:25
... und ich möchte nochmal ergänzen ;)

Um dir deine Fragen zukünftig selbst schneller zu beantworten kannst du auch einfach

:help <begriff> verwenden
(':help encoding' hätte dich zum Beispiel schon zu der Lösung geführt)

... wobei bei manchen Fragen "menschliche Kompendien" halt einfach unersetzbar sind :D

delmonico
26.02.07, 14:00
Um mal wieder das letzte Wort zu haben: ":h begriff" langt auch :ugly:

baumgartner
26.02.07, 14:06
Nächste Frage:

Mit welchem Kommando sorge ich dafür dass die nächste Zeile automatisch um x-Tabs eingerückt wird?

":h tab" bringt mich da nicht weiter ;)

delmonico
26.02.07, 14:12
Return BlahBlah Esc V 3 > :ugly: Ne im Ernst, was willst du machen?

baumgartner
26.02.07, 14:24
Wenn ich jetzt ne Subroutine schreibe und den Code um einen Tab eingerückt habe will ich dass nach dem drücken der Enter-taste automatisch um die selbe Anzahl der Tabs eingrückt ist.


sub foo {
bar(); <ENTER>
| <-- Cursor soll hier stehen.

delmonico
26.02.07, 14:37
Hmmm dachte das wäre Standard? Hab gerade mal durch meine config geschaut, ich hab da nichts entsprechendes eingestellt und vim macht das (zumindest bei PHP und python code).

quinte17
26.02.07, 14:38
schon mal was von smartindent und autoindent gehört? :)

:set si
:set ai

greetz

ps: wenn man einen ganzen code block { blablub } einrücken will muss man nur mit dem cursor da rein gehen, und dann ">a{" tippen.
edit: innerhalb der klammern >i{ mit klammern >a{

Meillo
26.02.07, 15:18
Um mal wieder das letzte Wort zu haben: ":h begriff" langt auch :ugly:*gg*



Hmmm dachte das wäre Standard? Hab gerade mal durch meine config geschaut, ich hab da nichts entsprechendes eingestellt und vim macht das (zumindest bei PHP und python code).bei PHP-HTML-Mischmaschcode funktioniert es (beim HTML-Teil) zwar nicht immer, aber sonst kann man nicht klagen



ps: wenn man einen ganzen code block { blablub } einrücken will muss man nur mit dem cursor da rein gehen, und dann ">a{" tippen.
edit: innerhalb der klammern >i{ mit klammern >a{super Info - danke! :)

weiß da vielleicht noch jemand, wie ich mir dann einen markierten Abschnitt automatisch und smart einrücken lassen kann? Also ich habe hier Codeteile, die beim Editieren ziemlich unterschiedlich eingerückt wurden, und die möchte ich gerne mit dem Vim richtig einrücken lassen.
(Anm: Ich suche _nicht_ `indent' das kenne ich!)

Zy0n
26.02.07, 15:18
Hat schon jemand von euch die Rechtschreibkorrektur von vim 7.0 versucht und auf DE gebracht oder kennt jemand Howto dazu!?

delmonico
26.02.07, 15:49
bei PHP-HTML-Mischmaschcode funktioniert es (beim HTML-Teil) zwar nicht immer, aber sonst kann man nicht klagen
Code und Präsentation gehören ja auch sauber getrennt ;)

Meillo
26.02.07, 16:13
Code und Präsentation gehören ja auch sauber getrennt ;)... hatte ich nicht die Worte "quick&dirty" erwähnt? :rolleyes:


:D

Legolaus
26.02.07, 16:32
Frage an die Human-Kompediums ;-)

Wie kann ich denn über mehrere Zeilen Text an einer bestimmten Position einfügen?

z.B.:

Zeile 1
Zeile 2
Zeile 3

Nach dem einfüge:

Text Zeile 1
Text Zeile 2
Text Zeile 3

ODER

ZeiTEXTle 1
ZeiTEXTle 2
ZeiTEXTle 3

Any suggestions?

HEMIcuda
26.02.07, 16:52
Frage an die Human-Kompediums ;-)

Wie kann ich denn über mehrere Zeilen Text an einer bestimmten Position einfügen?

z.B.:

Zeile 1
Zeile 2
Zeile 3

Nach dem einfüge:

Text Zeile 1
Text Zeile 2
Text Zeile 3

ODER

ZeiTEXTle 1
ZeiTEXTle 2
ZeiTEXTle 3

Any suggestions?

s/^/Text\ /
oder

s/Zei/&TEXT/

'cuda

Meillo
26.02.07, 16:53
Wie kann ich denn über mehrere Zeilen Text an einer bestimmten Position einfügen?

z.B.:

Zeile 1
Zeile 2
Zeile 3

Nach dem einfüge:

Text Zeile 1
Text Zeile 2
Text Zeile 3für diesen Fall habe ich dir: Strg-v (Blockauswahl) , damit die betreffenden Zeilen markieren und dann mit I <text> etwas einfügen und mit ESC ENTER abschließen. (Das war jetzt aus dem Kopf - hier auf Windows ist das mit dem strg-v etwas schwierig ;)


__



zu meiner eigenen Frage von oben:
weiß da vielleicht noch jemand, wie ich mir dann einen markierten Abschnitt automatisch und smart einrücken lassen kann? Also ich habe hier Codeteile, die beim Editieren ziemlich unterschiedlich eingerückt wurden, und die möchte ich gerne mit dem Vim richtig einrücken lassen.
(Anm: Ich suche _nicht_ `indent' das kenne ich!)habe ich selbst schon die Lösung hier (http://darkster.de/linux/vim-vi-improved#more-28) gefunden: markieren und dann das Gleichzeichen.

Legolaus
26.02.07, 18:15
SUPI, danke für den Tip!!!

Man ich hab mir hier einen grade abgetestet - Was mich irritierte, war das er nach dem Markieren mit (Strg + v) und dann dort drücken von (Shift + i) für grosses I nur die erste Zeile editiert hatte von meinem ausgewählten Bereich. Wenn man danach dann natürlich wie beschrieben Esc und dann Enter drückt, klappt es wie gewünscht und er fügt es in alle vorher ausgewählten Zeilen ein...

Man man man

Auch dein selbst gesuchtes (=) finde ich sehr nützlich, nur muss ich da noch was falsch machen: Wenn ich unterschiedlich markierte Zeilen markiere und dann (=) drücke, dann rückt er mir alles ganz nach links? Ist das richtig so?

baumgartner
05.03.07, 08:27
Du kannst den eingegebenen Text mit shift-v markieren und dann den Befehl :s/^/anfang/ um an allen Zeilen an den Zeilenanfang zu schreiben.

Kannst du auch relativ zu Zeilen machen. Wenn du in Zeile 6 stehst und die Zeilen 3 bis 6 ersetzen willst kannst du auch folgenden Befehl absetzen: ":3,s/^/text". Geht natürlich auch in die andere Richtung ;-)