Ненужные отступы в bash

929

Я пытался вставить текст из одного файла в другой в Bash. Я работаю в Putty.

Чтобы быть более понятным, у меня есть файл hotel.txtс некоторыми строками текста с отступом, таким образом, есть вкладки и пробелы. Когда я viвставляю несколько этих строк с отступами в другой файл, созданный с использованием, они вставляются с дополнительной вкладкой.

Весь мой текст автоматически вставляется с каждой строкой, имеющей дополнительную вкладку, как только я вставляю, используя правую кнопку мыши.

У кого-нибудь есть решение?

Я пытался :set paste, но, видимо, со мной не работает.

0
общие рекомендации по кодированию: рекомендуется заменять табуляцию пробелами. У большинства редакторов есть такая опция конфигурации hek2mgl 11 лет назад 0
Вы имеете в виду, что при отступе от моего сценария я должен использовать пробелы? Большое спасибо! 11 лет назад 0
@ hek2mgl Я слышал наоборот. Так делают большинство людей [здесь] (http://programmers.stackexchange.com/a/72/100154) Antarus 11 лет назад 0
Да, в тот момент, когда вы кодируете. Например, мой редактор (vim) вставляет 4 пробела при нажатии клавиши Tab. У меня есть `set expandtab` и` set ts = 4` в моем `vimrc`. Это делает вещи проще, поверь мне .. :) hek2mgl 11 лет назад 0
Странно, что `: se paste` не работает. devnull 11 лет назад 0
@ Антарус Люди могут думать, что они хотят. Я могу только сказать, что мир программного обеспечения, кроме парней, которые проголосовали за ответ, который вы связали, согласился с тем, что пробелы следует использовать в пользу вкладок. hek2mgl 11 лет назад 0
Я читал о: установить пасту много. Я мог бы использовать это неправильно. Может ли кто-нибудь дать мне подробное объяснение того, как я могу его использовать? Я был бы очень благодарен, спасибо! 11 лет назад 0
скопируйте файл в буфер обмена, затем вставьте его в простой текстовый редактор, такой как notepad ++, затем скопируйте его снова оттуда и затем скопируйте в vim ... это работает? hek2mgl 11 лет назад 0
Пробовал это тоже. Не работает 11 лет назад 0
Ответ `: se paste` предполагает vim, но вопрос и его теги просто говорят" vi ". Все клоны vi имеют опцию `autoindent` (` ai`), но только vim имеет `paste` Wumpus Q. Wumbley 11 лет назад 0

3 ответа на вопрос

0
bluehallu

This happens because you're either not copying the indentation of the first line or because you're pasting on an already indented position.

Я не совсем тебя понял. Я создаю новый файл, скажем, на примере vi и вставляю скопированный код с отступом сразу после нажатия «I». Это все еще создает все ненужные отступы. 11 лет назад 0
0
user2599522

Its not exactly an answer but you can remove the extra tab in the beginning this way

:%s/^^I//g 

where ^I is the tab character and you can type it by pressing C-v and then tab.

(or type the following sequence

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

)

0
devnull

While in vi, enter the escape mode using Esc. Then say :set paste.

Now you should be able to paste text unmodified.

You can turn 'paste' off by saying :set nopaste.

In order to make the change permanent, you can add :set paste to your $/.vimrc.

Просто попробовал именно так. Не работает. Текст до сих пор излишне отступ. 11 лет назад 0
Что насчет `: set noautoindent`? Это работает? devnull 11 лет назад 0
Да, это прекрасно работает. Большое вам спасибо! Это большое облегчение. 11 лет назад 0