Unnötiges Einrücken in bash

1102

Ich habe versucht, Text von einer Datei in eine andere in Bash einzufügen. Ich arbeite in Putty.

Um es klarer zu machen: Ich habe eine Datei hotel.txtmit einigen Textzeilen, die eingerückt sind, also Tabs und Leerzeichen haben. Wenn ich einige dieser eingerückten Zeilen in eine andere Datei vieinfügen, werden sie mit einem zusätzlichen Tabulator eingefügt.

Mein ganzer Text wird automatisch eingerückt, und jede Zeile enthält eine zusätzliche Registerkarte, sobald ich sie mit der rechten Maustaste einfügen.

Hat jemand eine Lösung?

Ich habe es versucht :set paste, funktioniert aber anscheinend nicht mit mir.

0
Allgemeine Codierungsempfehlung: Es wird empfohlen, Tabulatoren durch Leerzeichen zu ersetzen. Die meisten Editoren verfügen über eine solche Konfigurationsoption hek2mgl vor 10 Jahren 0
Do you mean while indenting my script, I must use spaces? Thanks alot! vor 10 Jahren 0
@ hek2mgl habe ich umgekehrt gehört. So tun die meisten Leute [hier] (http://programmers.stackexchange.com/a/72/100154) Antarus vor 10 Jahren 0
Ja, in dem Moment, in dem Sie programmieren. Mein Editor zum Beispiel (vim) fügt 4 Leerzeichen ein, wenn ich die Tabulatortaste drücke. Ich habe 'expandtab' und 'set ts = 4' in meinem `vimrc` eingestellt. Das macht die Sache leichter, glaubt mir .. :) hek2mgl vor 10 Jahren 0
Es ist seltsam, dass `: se paste` nicht funktioniert. devnull vor 10 Jahren 0
@Antarus Leute denken vielleicht, was sie wollen. Ich kann nur sagen, dass die Software-Welt neben den Jungs, die die von Ihnen verknüpfte Antwort aktualisiert haben, der Meinung war, dass Leerzeichen für Tabs verwendet werden sollten. hek2mgl vor 10 Jahren 0
I've read about :set paste alot. I might be using it the wrong way. Can anyone please give me a detailed explaination as to how i can use it? I would be very grateful , Thankyou! vor 10 Jahren 0
kopiere die Datei in die Zwischenablage, füge sie dann in einem einfachen Texteditor wie notepad ++ ein, kopiere sie dann erneut von dort und kopiere sie dann in vim .. funktioniert das? hek2mgl vor 10 Jahren 0
Auch das versucht. Funktioniert nicht. vor 10 Jahren 0
Die Antwort von `: se paste` setzt vim voraus, aber die Frage und ihre Tags sagen nur" vi ". Alle vi-Klone haben die Option "autoindent" ("ai"), aber nur vim hat "paste" Wumpus Q. Wumbley vor 10 Jahren 0

3 Antworten auf die Frage

0
bluehallu

Dies geschieht, weil Sie entweder die Einrückung der ersten Zeile nicht kopieren oder weil Sie eine bereits eingerückte Position einfügen.

I didn't quite understand you. I create a new file, lets say by vi example and paste my copied and indented code immediately after pressing 'I'. It still creates all the unnecessary indentation. vor 10 Jahren 0
0
user2599522

Es ist nicht genau eine Antwort, aber Sie können die zusätzliche Registerkarte am Anfang auf diese Weise entfernen

:%s/^^I//g 

Dabei ist ^ I das Tabulatorzeichen und Sie können es eingeben, indem Sie Cv und dann Tab drücken.

(oder geben Sie die folgende Reihenfolge ein

gg "goto top c-v "visual selection S-G "goto end of file << " indent visual selection one to the left. 

)

0
devnull

Während in viGeben Sie die Escape - Modus Esc. Dann sag es :set paste.

Jetzt sollte es möglich sein, Text unmodifiziert einzufügen.

Sie können 'paste'ausschalten, indem Sie sagen :set nopaste.

Um die Änderung dauerhaft zu machen, können Sie :set pastezu Ihrem hinzufügen $/.vimrc.

Ich habe es genau so versucht. Funktioniert nicht. Der Text ist immer noch unnötig eingerückt. vor 10 Jahren 0
What about `:set noautoindent`? Does that work? devnull vor 10 Jahren 0
Ja das funktioniert einwandfrei. Vielen Dank, das ist eine große Erleichterung. vor 10 Jahren 0