Функция “вырезать” в Finder на Mac OS

October 11th, 2011 | Categories: Mac OS | Tags: ,

Странно что Apple не реализовала в своем файловом менеджере Finder функцию “Cut” (“Вырезать”) для файлов в привычном для нее смысле. Хотя если раскрыть ниспадающее меню “Edit” при выделенных файлах, то там красуется неактивный пункт “Cut (Cmd+X)” – зачем он там? Правильно! Вырезать кусочки текста при редактировании имен файлов! Но никак не для перемещения файлов. Получается некоторая дискриминация для тех кто предпочитает использовать клавиатуру для работы с файловыми массивами по средством Finder’а, так как Apple пропагандирует повсеместное использование Drag&Drop для перемещения файлов.

Далее я хочу рассказать о простом решении данной проблемы несколькими способами…

Если немного по-Google-ть, то обнаруживаются старые посты про то, что “нехитрой” командой в терминале

1
defaults write com.apple.finder AllowCutForItems 1

можно включить “Cut” для файлов, но в комментариях пишут что “вырезание” файла перемещает его в корзину или что-то в этом роде (проверить не удалось так как, судя по словам негодующих на эту тему, работает это только в 10.3).

Так же в некоторых постах пишут предположения (факты?) почему Apple так поступила с “Cut”:

Почему же Apple считает, что вырезание файлов – опасная штука? Объяснений тут два:

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

Зачем вырезая файл куда-то его перемещать? Ведь в том же терминале приспокойно работает команда

1
mv source_path destination_path

и в функции “Cut” можно было бы как минимум использовать простое копирование в буфер обмена полного пути (source_path) файла со специальным маркером обозначающим что при выполнении вставки будет происходить фактически выполнение команды mv в директорию назначения (destination_path) в которой мы выполняем “Paste” (“Вставить”).

Ну что же, мысль не плохая, но нужно будет поколдовать чуть больше (что как раз возможно породит еще один пост на эту тему с другим готовым решением), а сейчас пока что более простое решение…

Идея проста, мы создаем сервис в Automator’е, которому назначаем сочетание горячих клавиш и который в свою очередь принимает выделенные в Finder’е файлы или директории как входной параметр, открывает диалог выбора директории назначения после чего перемещает выбранные файлы/директории в выбранное место.

Итак, открываем в Automator’е диалог создания нового Service’а и добавляем первое действие “Get Selected Finder Items”, это позволит нам получить все выделенные файлы и директории в активном окне Finder’а. Далее добавляем действие “Run AppleScript” со следующим содержанием:

1
2
3
4
5
6
7
on run {input, parameters}
   activate
   set theFolder to choose folder with prompt "Select destination folder" without invisibles
   tell application "Finder" to move input to theFolder
   activate application "Finder"
   return input
end run

Все. Сохраняем сервис например под именем “Smart Move”, назначаем ему сочетание горячих клавиш и проверяем его работу в Finder’е!

Данное решение немного доработано по сравнению с подобными, которые можно найти на других блогах, в плане перевода фокуса вначале на открывающийся диалог выбора директории назначения, а потом обратно на окно Finder’а.

P.S. В конце концов, когда идея написания этого поста уже была записана где-то в блокноте, я нашел-таки аналог функции “вырезать” в Finder для Mac OS Lion – сначала копируем файл (Cmd+C), а затем вставляем, удалив оригинал (Cmd+Opt+V). Wow! Разработчики сподобились добавить хотя бы такой “костыль”!

  1. IvanVB
    October 18th, 2011 at 23:56
    Quote | #1

    Спасибо за Cmd+Opt+V ! :)
    Поскольку на тот момент не знал, то пришлось эксперементировать :)
    Буквально час назад методом тыка нашёл, что мышью можно перенести (по умолчанию – копировать) нужные файлы с прижатым Cmd.

    • October 19th, 2011 at 11:45
      Quote | #2

      Пожалуйста!
      На самом деле если мышкой перетаскивать без нажатия дополнительных клавиш в пределах одного диска, то это как раз и будет перемещение, а вот если с одного диска на другой перетаскивать, то по умолчанию будет как раз копирование, и вот тут уже нужно зажимать Cmd для перемещения. В любом случае, для меня, да и для других любителей быстрых манипуляций “горячими клавишами”, перетаскавание совсем не то что нужно, а вот Cmd+Opt+V это именно то что нужно! ;)

  2. Ed
    October 19th, 2011 at 22:21
    Quote | #3

    Hello Melnaron,

    I just wanted to thank you or MEL.CHAT you have provided. It’s a very simple but yet powerful script. I’m sure you have alot to do but i just have a question about it. Is there a way that I can give people the option of choosing their text color. I mean either before they login or after they login, if so how can I do that?

    greatly appreciated.

    • October 19th, 2011 at 23:11
      Quote | #4

      Hello Ed, and thank You for you question.

      If you want to add ability of choosing text color you must to do some programming both on the client and the server side. Of course you must to add new column to database table where messages stored. And you must write some code on client-side to send color code chosen by the user to the server-side and store this code with other message data in your db. Then, when other client will be getting new messages you must provide rendering message color with adding (wrapping) message text in html-element like or something else…

      Good luck in adapting of my work ;) Further questions are welcome!

      • Ed
        October 20th, 2011 at 08:29
        Quote | #5

        Thanks for this quick reply.

        I’m not a programmer/ web designer. So I don’t know how to do any of those :P

        Do you have any plans for MEL.CHAT update in the future with more options?

        Thanks again for your answer.

        -Ed

        • October 20th, 2011 at 19:27
          Quote | #6

          Ah, i see.
          Sorry, but my answer for this time is “no” because i have a lot of work on my own projects and with other commercially supported projects.

Comments are closed.