Я чувствую, что часто называю файлы таким способом, которым постоянно подает звуковой сигнал мой компьютер, в то время как я программирую, потому что заполнение клавишей Tab неоднозначно. Прежде, чем сделать большое программирование Unix, я был склонен в связанные с именем файлы с тем же префиксом указывать на их отношение. Теперь я должен заново продумать свой подход к структурам папок и файловым структурам и именам к программе эффективнее.
Какую эвристику или правила Вы применяете при программировании для упрощения заполнения клавишей Tab? Вы используете какие-либо инструменты для создания заполнения клавишей Tab более гладким (например, emacs сосульки)?
Править: Ничего себе, спасибо за фантастическое понимание. Я думаю, что каждое возможное weakspot мое составлялось в ответах. Я принял тот, который походит на лучшее улучшение производительности, хотя они - весь, который стоит считать.
Обычно я работал над проектами, в которых все связанные файлы находятся в одном каталоге , а сами имена файлов предназначены для обозначения их содержимого.
Конечно, возникает вопрос, почему вы выполняете завершение табуляции в именах файлов? Если вы просматриваете исходный код, есть TAGS , CEDET и множество других утилит , которые позволят вам обойти имя файла и перейти непосредственно к функция / переменная, которая вам действительно нужна.
Все зависит от того, что вы действительно пытаетесь сделать, и поиск определенного файла обычно является средством для достижения другой цели.
Я должен признать, что присваиваю имена своим файлам без учета завершения табуляции и вместо этого корректирую свое желание нажимать табуляцию до тех пор, пока я не узнаю, что набрал достаточно символов, чтобы не было глупых табуляций.
Я склоняюсь к тому, чтобы использовать то, что имеет смысл для организации кода, а не для заполнения табуляции - это может меняться в зависимости от конкретного кода, поэтому трудно дать прямой ответ, но использование соответствующих подкаталогов действительно облегчает жизнь. Я согласен с Доном.
Вместо этого я ориентируюсь в исходниках с помощью таких инструментов, как find . -name {expr}
(имена файлов), grep -r {expr} *
(defs, protos и использование функций) и их комбинации. Можно написать сценарии оболочки для эффективного выполнения операций поиска/замены с помощью sed i 's/find/replace'
по всему дереву исходников. У меня есть небольшая папка в ~/ на пути, которая содержит несколько полезных скриптов, подобных этому.
Я комбинирую это с IDE вроде Eclipse для редактирования или VIM, в зависимости от того, что я делаю. Мне одинаково нравятся обе, правда, поскольку я использую их для разных целей.
Что касается Emacs, я пробовал его, он мне не нравится. Он слишком большой и сложный, и у меня есть дела поважнее, чем учиться им пользоваться (ладно, давайте остановимся на этом, пока мы не начали обсуждение "настоящие программисты используют..."). Поэтому я не могу прокомментировать инструмент Emacs, на который вы дали ссылку. Думаю, попробуйте и посмотрите, поможет ли это.
Каталоги для файлов, имеющих общие черты, обычно являются хорошей идеей, но не всегда это возможно. В таких случаях хорошо работает простой подход, который заключается в том, чтобы поместить общность в суффикс, а не в префикс. Например, я называю свои модульные тесты с суффиксом '_test.py
'. Если сделать это наоборот (например, test_foo.py
), то каждый тестовый файл поставит в тупик завершение табуляции.
Эту идею можно распространить на общий случай сглаживания иерархий. Например, если у вас есть иерархия классов Person->Employee->Programmer
, вы можете избежать зеркального отображения структуры каталогов кода, вызывая тест programmer_employee_person_test.py
. Опять же, более общие компоненты идентификатора появляются позже в имени.
Вы можете использовать menu-complete вместо complete:
bind '"\C-i": menu-complete'
echo '"\C-i": menu-complete' >>~/.inputrc
Обычно
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