2

Поэтому моя ситуация такова, что у меня есть файл myfile.py (написанный на python), который я начал разрабатывать на своей собственной машине. Для этого я использовал vim, но в то время я не знал, что Vim может позволить вам определить длину ваших вкладок, а также показать, сколько раз строка была добавлена с помощью маркера.

Поэтому, прежде чем я SCP-файл myfile.py отправил на удаленный сервер Unix и начал там работать над ним, все мои вкладки имели длину около 6 пробелов в каждой, и не было никаких отметок, определяющих, сколько отступов присутствовало в конкретной строке. Но так как 6 пробелов много, в этом действительно не было необходимости ...

Но когда я начал развивать на удаленном сервере, я заметил , что их конфигурации ВИМ имели вкладку , так что это будет около 4 места в длину каждого, и таким образом , что бы вертикальная разметка , чтобы показать , что закладка присутствует. Тем не менее, он не изменил автоматически строки кода, которые уже были в myfile.py, в соответствии с их настройками вкладок, и настройки закончились только применением любых новых строк кода, которые я написал, используя vim на их сервере.

Будучи новичком, которым я был, я не стал ничего исправлять, чтобы файл выглядел согласованно. Теперь у меня есть какая-то странная смесь чередования, в которой некоторые строки имеют вкладки длиной 4, другие с 6, а у более короткой линии вертикальная маркировка для каждой вкладки, а у более длинных ничего нет.

Как мне эффективно исправить этот беспорядок, чтобы вернуться к одному стандарту? (надеюсь, тот, который имеет более короткую длину вкладки с вертикальной маркировкой). Я ищу любого, у кого есть хоть какой-то отдаленный опыт в этом затруднительном положении - будь то из-за этого я учусь больше vim на продвинутом уровне или сначала начну с какого-то обходного пути, мне все равно. Я просто предпочитаю что-либо, чем вручную исправлять каждую строку - вы знаете, как неправильно это может сделать ваш код, когда вы имеете дело с Python!

[EDIT] -> Также подумал, что я должен отметить, что каждая строка не имеет одинаковое количество вкладок ... некоторые строки имеют 0, 1, 4, 5 и т.д. И т.д. ...

3 ответа3

3

Отступ в vim может быть немного волосатым.

Вы можете настроить vim либо для вставки символа табуляции, либо для вставки некоторого количества пробелов, когда вы нажимаете клавишу табуляции, используя опцию expandtab . Вы также можете настроить ширину вкладок (сколько места они занимают) с помощью опции tabstop . Наконец, вы можете также настроить vim для отображения вкладок со специальным символом, используя опцию listchars (▸ является распространенным выбором). Однако этот символ не будет отображаться там, где вместо табуляции используются пробелы. Вот почему некоторые из ваших вкладок имеют специальный символ, а некоторые нет, некоторые из них являются действительными символами вкладок, а другие - просто много пробелов, действующих как вкладка.

Похоже, что удаленный сервер Unix был настроен с expandtab и tabstop 6, поэтому при входе на вкладку выводится 6 пробелов, в то время как ваш сервер разработки, кажется, настроен с noexpandtab и tabstop установлен в 4.

Чтобы это исправить, вы можете использовать функцию поиска / замены vim, чтобы заменить все вхождения шести пробелов одной вкладкой с помощью команды :%s/ \{6}/\t/g . Чтобы понять эту команду, вам следует ознакомиться с возможностями поиска и замены vim здесь . Чтобы этого не происходило в будущем, вы должны создать свой собственный файл .vimrc который настраивает все так, как вам нравится, и либо поместить его в свой домашний каталог, чтобы он автоматически загружался, либо :source его при каждом редактировании любых файлов.

Примечание. Существуют также другие параметры вкладок, такие как shiftwidth и softtabstop, но они не имеют отношения к вашей проблеме. Однако вы должны прочитать о них, чтобы вы могли настроить vim так, как вы хотите.

1

КАК ПОБЕДИТЬ 6 -> 4

1. Ваши текущие настройки (вкладка == ширина 6 полей && вкладка расширения)

:set ts=6 et

#!/usr/bin/env python
def fun():
······print "hello, world"

2. конвекция 6 пробелов в таб

:set noet
:ret!

#!/usr/bin/env python
def fun():
»·····print "hello, world"

3. сбросить вкладку до 4-space-width

:set ts=4

#!/usr/bin/env python
def fun():
»···print "hello, world"

4. Конвекционная табуляция на 4 пробела

:set et
:ret!

#!/usr/bin/env python
def fun():
····print "hello, world"
0

Как бы я к этому. Настройте вкладки в вашем .vimrc на обеих машинах так, как вы предпочитаете.

Количество пробелов, на которые указывает табуляция

set tabstop=4

Количество пробелов, используемых для (авто) отступа

set shiftwidth=4

Если вы хотите расширить вкладки до пробелов

set expandtab

или нет

set noexpandtab

Каждый раз, когда вы открываете файл с испорченным отступом. Перейти к началу страницы g g и автоматически сделать отступ до конца страницы = G

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .