Соглашение о присвоении имен файла Unix для эффективного заполнения клавишей Tab?

Я чувствую, что часто называю файлы таким способом, которым постоянно подает звуковой сигнал мой компьютер, в то время как я программирую, потому что заполнение клавишей Tab неоднозначно. Прежде, чем сделать большое программирование Unix, я был склонен в связанные с именем файлы с тем же префиксом указывать на их отношение. Теперь я должен заново продумать свой подход к структурам папок и файловым структурам и именам к программе эффективнее.

Какую эвристику или правила Вы применяете при программировании для упрощения заполнения клавишей Tab? Вы используете какие-либо инструменты для создания заполнения клавишей Tab более гладким (например, emacs сосульки)?

Править: Ничего себе, спасибо за фантастическое понимание. Я думаю, что каждое возможное weakspot мое составлялось в ответах. Я принял тот, который походит на лучшее улучшение производительности, хотя они - весь, который стоит считать.

10
задан thebossman 16 March 2010 в 20:20
поделиться

6 ответов

Обычно я работал над проектами, в которых все связанные файлы находятся в одном каталоге , а сами имена файлов предназначены для обозначения их содержимого.

Конечно, возникает вопрос, почему вы выполняете завершение табуляции в именах файлов? Если вы просматриваете исходный код, есть TAGS , CEDET и множество других утилит , которые позволят вам обойти имя файла и перейти непосредственно к функция / переменная, которая вам действительно нужна.

Все зависит от того, что вы действительно пытаетесь сделать, и поиск определенного файла обычно является средством для достижения другой цели.

8
ответ дан 3 December 2019 в 22:36
поделиться

Я должен признать, что присваиваю имена своим файлам без учета завершения табуляции и вместо этого корректирую свое желание нажимать табуляцию до тех пор, пока я не узнаю, что набрал достаточно символов, чтобы не было глупых табуляций.

1
ответ дан 3 December 2019 в 22:36
поделиться

Я склоняюсь к тому, чтобы использовать то, что имеет смысл для организации кода, а не для заполнения табуляции - это может меняться в зависимости от конкретного кода, поэтому трудно дать прямой ответ, но использование соответствующих подкаталогов действительно облегчает жизнь. Я согласен с Доном.

Вместо этого я ориентируюсь в исходниках с помощью таких инструментов, как find . -name {expr} (имена файлов), grep -r {expr} * (defs, protos и использование функций) и их комбинации. Можно написать сценарии оболочки для эффективного выполнения операций поиска/замены с помощью sed i 's/find/replace' по всему дереву исходников. У меня есть небольшая папка в ~/ на пути, которая содержит несколько полезных скриптов, подобных этому.

Я комбинирую это с IDE вроде Eclipse для редактирования или VIM, в зависимости от того, что я делаю. Мне одинаково нравятся обе, правда, поскольку я использую их для разных целей.

Что касается Emacs, я пробовал его, он мне не нравится. Он слишком большой и сложный, и у меня есть дела поважнее, чем учиться им пользоваться (ладно, давайте остановимся на этом, пока мы не начали обсуждение "настоящие программисты используют..."). Поэтому я не могу прокомментировать инструмент Emacs, на который вы дали ссылку. Думаю, попробуйте и посмотрите, поможет ли это.

0
ответ дан 3 December 2019 в 22:36
поделиться

Каталоги для файлов, имеющих общие черты, обычно являются хорошей идеей, но не всегда это возможно. В таких случаях хорошо работает простой подход, который заключается в том, чтобы поместить общность в суффикс, а не в префикс. Например, я называю свои модульные тесты с суффиксом '_test.py'. Если сделать это наоборот (например, test_foo.py), то каждый тестовый файл поставит в тупик завершение табуляции.

Эту идею можно распространить на общий случай сглаживания иерархий. Например, если у вас есть иерархия классов Person->Employee->Programmer, вы можете избежать зеркального отображения структуры каталогов кода, вызывая тест programmer_employee_person_test.py. Опять же, более общие компоненты идентификатора появляются позже в имени.

1
ответ дан 3 December 2019 в 22:36
поделиться

Вы можете использовать menu-complete вместо complete:

bind '"\C-i": menu-complete'
echo '"\C-i": menu-complete' >>~/.inputrc
0
ответ дан 3 December 2019 в 22:36
поделиться

Обычно

setterm -blength 0

отключает звуковой сигнал терминала. Экран GNU и некоторые графические терминалы имеют свои собственные настройки звуковых сигналов.

Специально для Bash и другого программного обеспечения Readline , поведение завершения табуляции можно изменить с помощью $ INPUTRC , / etc / inputrc ] и ~ / .inputrc файлы конфигурации. Например,

bell-style none     # never ring the bell
bell-style visible  # use visual bell, if available

show-all-if-ambiguous on  # list all completions instead of ringing the bell
5
ответ дан 3 December 2019 в 22:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: