文字擴充套件器綜合指南

當你發現自己重覆輸入相同的資訊時,文字擴充套件應用程式是一種很好的方法,但是它們可以做的比這還要多。我們最喜歡的一個是Mac上的TextExpander,一旦你學會瞭如何使用它,它是一個強大的工具。...
Illustration for article titled A Comprehensive Guide to TextExpander

當你發現自己重覆輸入相同的資訊時,文字擴充套件應用程式是一種很好的方法,但是它們可以做的比這還要多。我們最喜歡的一個是Mac上的TextExpander,一旦你學會瞭如何使用它,它是一個強大的工具。

Thanh最近在我們的網站上寫了關於TextExpander的基本特性以及他每天是如何使用它的,在這篇文章中,我想透過向您展示如何使用TextExpander中提供的不同巨集型別來建立您自己的(以及更複雜的)“程式碼段”來深入一點

這篇文章最初出現在《亞洲效率》雜誌上。

在textbender術語中,“snippet”是在鍵入指定的textbender縮寫時顯示的內容。例如,類似“tyvm”的縮寫可能會擴充套件到“非常感謝”的片段,我經常用這個來表示引號。例如,我有一個縮寫“xplan”,它擴充套件到我最喜歡的一句話的片段“那些計劃失敗的人,計劃失敗的人”。因此,textbender的核心就是它聽起來像的,一個擴充套件文字的程式。如果這是你唯一使用textbender的方式,這個應用仍然值得35美元的標價,因為它仍然會節省你一噸時間。

但是,很多時候,您反覆鍵入的文字都有可變或可選的內容。這就是我們將在本文中討論的巨集真正有用的地方。

巨集簡介

TextExpander中有幾種不同型別的巨集。請記住,您不需要實際記住這些巨集,因為它們都可以使用TextExpander中的“**”選單**:

Illustration for article titled A Comprehensive Guide to TextExpander

以下是TextExpander中提供的不同型別的巨集:

  • 日期/時間
  • 片段
  • 鑰匙
  • 剪貼簿
  • 圖片
  • 游標
  • 填寫

我將逐一分解這些巨集,併在附帶的影片中討論它們。

使用日期和時間

TextExpander巨集最實際的應用之一是日期和時間戳。您可以使用TextExpander輸入時間和日期,使用不同的巨集設定不同的格式選項。以下是顯示日期和時間資訊的所有不同巨集選項:

Macro Expanded Text
%Y 4 digit year number ("2014")
%y 2 digit year number ("14")
%B Fully spelled month name ("August")
%b Abbreviated month name ("Aug")
%m 2 digit month number ("08")
%1m Month number ("8")
%d 2 digit day number ("08")
%e Day number ("8")
%A Fully spelled day name ("Friday")
%a Abbreviated day name ("Fri")
%I 2 digit 12-hour clock number ("02" for 2 am or 2 pm)
%H 2 digit 24-hour clock number ("02" for 2 am or "14" for 2 pm)
%1H Trimmed 12-hour clock number ("2" for 2 am or 2 pm)
%1I Trimmed 24-hour clock number ("2" for 2 am, "14" for 2 pm)
%M 2 digit minutes number ("05")
%1M Trimmed minutes number ("5")
%S 2 digit seconds number ("03")
%1S Trimmed seconds number ("3")
%p Expands to AM or PM

例如,將擴充套件到2014年8月8日星期五下午2:05:03的程式碼片段將被編寫為:

%A、 %B%e%Y-%1I:%M:%S%p

您不需要記住這些巨集,但實際上可以從“**”選單中選擇這些巨集。

Illustration for article titled A Comprehensive Guide to TextExpander

下麵是可以新增到TextExpander的標準日期和時間格式片段的幾個示例:

Macro Example Text
%m-%Y 08–2014
%m-%d-%Y 08–08–2014
%m/%d/%Y 08/08/2014
%d %b %y 8 Aug 14
%d %b %Y 8 Aug 2014
%B %e, %Y August 8, 2014

在筆記和資訊中新增這樣的日期和時間戳非常有用。我們最近寫了一篇關於亞洲效率的重要性的文章。以下是幾個可以從日期/時間戳中獲益的示例:

  • 日記賬分錄
  • 會議記錄
  • 任何形式的電子通訊
  • 檔名(尤其是無紙化時)

您還可以在文字擴充套件器中使用日期/時間數學來新增或減去時間單位。為此,只需將日期/時間數學字首放在要修改的時間單位之前(您也可以透過**選單執行此操作,請參見影片示例)。日期/時間數學巨集以“%@”開頭,後跟“+”或“-”,然後是要加上或減去的時間單位(即“D”表示天)。例如,“確保您在%@+14D%B%e,%Y之前提交會議的開支報告”將從當前日期起增加14天。

在程式碼段中巢狀程式碼段

你知道你可以把片段放在片段裡面嗎?這稱為巢狀程式碼段,允許您在多個位置使用程式碼段,而無需再次鍵入(甚至縮寫)。要在程式碼段中新增程式碼段,只需使用TextExpander中的“**”下拉列表並選擇“程式碼段”,或使用巨集%snippet:(snippet\u abbrev)從您的程式碼段資料夾中選擇它,其中(snippet\u abbrev)是您要使用的程式碼段的縮寫。

當您想在標準電子郵件中使用報價時,這很有用。例如,之前我告訴過你一個片段,我為我最喜歡的一句名言“Fail to Plan”建立了一個片段,上面寫著“那些沒有計劃的人,計劃失敗”,這個片段用縮寫“xplan”展開。我可以將此片段巢狀在一封提醒電子郵件中,以便我的團隊成員在工作中提交他們對特定專案的貢獻,其內容如下:

只是提醒一下,當前的sprint將在本週結束,我們還沒有收到所有的團隊貢獻。沒有所有必要的部分,這是不可能的路線圖這個專案,我擔心落後於我們的目標日期。記住,%snippet:xplan.

模擬按鍵

此巨集模擬按鍵。有四個選項可供選擇:Enter、Escape、Return或Tab。當填寫表格從一個欄位切換到另一個欄位時,這會很有用,而不必實際觸碰鍵盤,讓TextExpander幫你做吧!您可以透過在TextExpander中的**選單中選擇“鍵”或使用巨集%Key:(Key name)來實現,其中(Key name)是鍵的名稱。

例如,您可以建立一個程式碼段,該程式碼段填寫了您的電話號碼並自動跳轉到下一個欄位以填寫web表單,方法是建立如下程式碼段:

555-555-5555%key:tab%

但是,我們強烈建議您不要將此方法用於聯機密碼。首先,TextExpander不能處理安全的輸入欄位,但更重要的是,它將您的密碼和帳戶憑據暴露給任何可能訪問您的程式碼段集合的人。例如,如果您使用Dropbox同步程式碼段,並且Dropbox憑據被洩露,那麼您的所有程式碼段(以純文字形式儲存)都可以訪問。相反,請使用類似1Password的工具來安全地儲存密碼!

**剪貼簿的內容

此巨集將剪貼簿的內容放入程式碼段的指定區域。當您希望多個收件人的姓名在電子郵件中出現多次時,您可以在向多個收件人傳送電子郵件(如聚會邀請)時使用此選項。你可以從邀請列表中複製他們的名字,然後讓它出現在%clipboard出現的任何地方。也可以從“**”選單**此巨集。

舉個例子:

嗨%剪貼簿!下週六我要在全食為我們的朋友Thanh舉辦一個生日聚會(他真的很喜歡那個地方),我真的希望你能來。我知道如果你能成功的話對他來說意義重大。請回覆我,這樣我們就知道會有多少。希望不久能見到你!

假設我們在鍵入程式碼段之前將名稱“Zachary”複製到剪貼簿,下麵是它的樣子:

嗨,扎卡裡!

下週六我要在全食為我們的朋友Thanh舉辦一個生日聚會(他真的很喜歡那個地方),我真的希望你能來。我知道如果你能來,對他來說意義重大。請告訴我,讓我們知道有多少期待。

希望很快見到你,扎卡裡!

邁克

以下是可以與%clipboard片段一起使用的其他一些內容:

  • 姓名
  • 電話號碼
  • 電子郵件地址

**帶有“pictures”的影象

你知道文字擴充套件器不只是用於文字嗎?你也可以用它來放置影象。這可能是有用的公司標誌,例如,當我鍵入“aelogo”它擴充套件到我們的網站標誌。

這也有助於儲存:

  • 徽標
  • 資訊圖
  • 動畫GIF

將游標放置在需要的位置

可以使用此巨集將游標移動到程式碼段中的某個位置(稱為“**點”)。您可以透過從“**”選單中選擇“游標–>將游標放置在此處”或鍵入⌘| (命令+垂直線字元)。

這在向多人傳送關於一個共同主題的電子郵件時可能很有用,但您仍然需要自定義每條訊息,比如告訴人們在計劃聚會時要帶什麼。例如:

謝謝你同意幫我為Thanh舉辦一個驚喜派對。只是提醒一下,派對是這個星期六下午4點,我需要你帶上⌘| 為了派對。我真的很感激你的幫助!

這對於程式碼片段也非常有用。例如,我可以**一個如下所示的片段:

<分割槽id=“⌘|"&燃氣輪機;

透過放置巨集來移動游標(⌘|) 在引號之間,展開程式碼段後,游標將自動移動到該位置,我可以簡單地鍵入值:

Illustration for article titled A Comprehensive Guide to TextExpander

也可以在**點上下左右移動游標。它們由←, →, ↑, 或者↓ (⌘, ⌘^, 或者⌘v) 是的。例如,如果您想在程式碼段末尾將游標向下移動兩行,可以透過鍵入⌘v⌘五。

填寫

填充是非常強大的巨集,它允許你用TextExpander做一些瘋狂的事情。有4種型別的填充巨集可供選擇:

1.單線欄位

此巨集有一個特定欄位,可以在其中鍵入要顯示的文字。例如,您可以有一個名為“First Name”的單行欄位,該欄位將用行禮展開,併在欄位中鍵入收件人的名字。這是一個很好的方式,個性化的表單電子郵件模板。您可以透過從TextExpander中的Insert選單中選擇“fill Ins–>單行欄位”新增單行欄位填充。

Illustration for article titled A Comprehensive Guide to TextExpander

單行欄位的巨集為%filltext%,欄位名、預設值和寬度有其他選項。因此,如果您想使用單行欄位填充來自定義電子郵件模板的頂部,它將如下所示:

嗨%filltext:name=First 姓名%,

此巨集將展開為如下所示:

Illustration for article titled A Comprehensive Guide to TextExpander

下麵是一些單行欄位填充可能有用的其他示例:

  • 職務
  • 作者
  • 體裁

2.多行欄位

這個巨集與單行欄位類似,只是您可以填寫一個文字框,有點像許多web表單中的“Messages”或“Additional Comments”欄位。這對於短列表非常有用,與單行欄位相比,它的優點是多行欄位允許更多的文字。

多行欄位的巨集是%fillarea%,欄位名、預設值、寬度和高度還有其他選項。因此,如果您想在程式碼段中使用此巨集來建立用於web開發的段落標記文字,它將如下所示:

<p>%fillarea:name=Paragraph 文字%&lt/p>

要進行設定,請將游標放在段落標記之間,然後從TextExpander的**選單中選擇“填充>多行欄位”。確保它放置在段落標簽之間,將“段落文字”作為“區域名稱”,暫時不使用預設值、寬度和高度。

在影片示例中,我將這個片段命名為“p tag”,並將其縮寫為“xptag”。現在,當我切換到我的文字編輯器時,我可以鍵入“xptag”,而程式碼片段會觸發,允許我以一種適合web的格式鍵入段落文字。

以下是多行欄位填充可能有用的幾個其他示例:

  • 資訊
  • 摘要
  • 會議議程

3.彈出選單

此巨集將開啟一個彈出選單,其中包含幾個預填充的選項供您選擇。您可以在傳送約會提醒時使用此選項來選擇與之約會的代表,或者從有限的變數中進行選擇,例如在跟進客戶最近的購買時選擇產品。

彈出選單的巨集是%fillpopup%,還有其他彈出選單名稱、彈出選單項和預設設定選項。因此,如果我想建立一個標準程式碼段,以便在跟蹤客戶時使用,那麼我可以建立一個程式碼段,其中說明:

%fillpopup:name=Product:OmniFocus高階Posts:default=Productivity Blueprint:Asian Efficiency Primer:Premium Newsletters:更好的睡眠

要進行設定,我將從**選單中選擇“填充>彈出選單”,將彈出選單命名為“AE產品”,然後將產品選項填寫為我的彈出選單項-“AE入門、高階新聞稿、更好的睡眠、OmniFocus高階帖子和生產力藍圖”。您還可以更改預設選中的選項(我將選擇OmniFocus Premium Posts)。

在影片示例中,我將這個片段命名為“AE Products”,並將其縮寫為“xprod”。現在,當我切換到我的郵件應用程式,我想傳送一個後續訊息給客戶,我可以鍵入“xprod”,從彈出選單中選擇適當的產品,點選“確定”和適當的文字貼上到我的電子郵件正文。

下麵是幾個彈出選單可能有用的其他示例:

  • 日期選擇(M-F)
  • 選擇團隊成員
  • 選擇產品或服務

4.可選選擇

此巨集包含可透過選中核取方塊包含的文字部分。如果有時在合同協議中包含某個條款,或者有時在標準電子郵件回覆的末尾包含某些資訊,則可以使用。

可選選擇的巨集是%fillpart%(可選文字)%fillpartend%,其中(可選文字)是要包含在可選選擇中的文字。對於可選零件名稱以及預設情況下是否包含它,還有其他選項。

因此,如果我想建立一個片段來跟蹤對最近部落格文章發表評論的人,我可以建立一個如下所示的片段:

感謝您閱讀亞洲效率部落格fillpart%由於您似乎喜歡Omnifocus,您可能希望檢視此更新以檢視Omnifocus高階帖子。%fillpartend%

變成:

Illustration for article titled A Comprehensive Guide to TextExpander

現在並不是每個讀過亞洲效率部落格的人都對OmniFocus感興趣(我知道這很難相信),所以我們可能不想一直把最後一部分包括進去,但它經常出現,我們仍然不想手動輸入。在我們的TextExpander程式碼段中使用一個可選的選項,可以讓我們保持高效,而不會影響我們的非全方位客戶。

以下是一些可選選擇可能有用的其他示例:

  • 客戶支援連結
  • 客戶參考資料
  • 電話會議資訊

把一切都集中起來

TextExpander程式碼段最好的一點是,每個程式碼段不限於一個巨集。實際上,你可以將它們連結在一起,並將它們組合起來,做一些非常瘋狂的事情,從將所有電子郵件模板儲存在TextExpander中提高電子郵件生產率,到為開發人員重用程式碼片段,加快開發時間。

下麵是一個相當複雜的電子郵件片段示例:

嗨%filltext:name=First Name:default=First 姓名%,

謝謝你抽出時間和我交談fillpopup:name=Webinar:yesterday:default=today:幾天前。正如我們所討論的,我已經為你準備了一份提案。若要檢視建議,請使用以下URL:%1

%fillpart:name=Trial%If 如果您想利用我們的****服務,請訪問我們的網站–www.notarealsite.com/trial.

%fillpartend%%fillpart:name=Portfolio%If 如果要檢視或下載示例報告,可以使用以下連結:www.notareallink.com/portfolio

%fillpartend%%fillpart:name=Purchase%If 如果您想試點該計劃併購買一些信用卡,請使用以下URL:www.notarealsite.com/buystuff

%fillpartend%%fillpart:name=Reference%If 如果您想與目前正在使用我們產品的人交談,請聯絡以下幾位推薦人:

Thanh Pham Asian Efficiency 123不是真正的街道Somewhereville,CA 12345(555)555–5555 x 1

Mike Schmitz亞洲效率123 Main Street別處,佛羅裡達州(555)555–5555 x 2

%fillpartend%我會跟蹤你的%fillpopup:name=Follow 上升:幾分鐘後days:default=next week:in a 兩周%以確保你得到了一切,看看你是否有任何問題。如果您在此之前有任何需要,請隨時與我聯絡。

下麵是我鍵入縮寫時的樣子:

Illustration for article titled A Comprehensive Guide to TextExpander

你會註意到有幾個填充,我可以自定義。有一個名字,有一個彈出視窗,當網路研討會實際發生,有可選的資訊,我包括經常選擇,但不是每次,和一個彈出視窗,當我要聯絡下一個。還有一個剪貼簿引用,我從剪貼簿中拉出提案的連結。

使用這個片段,一旦我選擇並填寫了所有我想包含的資訊,我就可以點選“確定”,我的整個電子郵件已經寫好了。

還有一件事:applescript

你知道你甚至可以透過TextExpander執行Applescript嗎?例如,可以使用Applescript程式碼段在Chrome而不是Safari中開啟當前URL。Chrome有內建的Flash支援,所以如果你不想安裝Flash外掛的話,這將是一種避免在你的電腦上安裝Flash外掛的方法。

充分披露:我不知道Applescript,這個例子來自微笑軟體部落格。這一切都歸功於他們。以下是設定方法:

  1. 設定標簽“在Chrome中開啟URL”。
  2. 設定縮寫(即“cchrome”)。
  3. 建立內容型別為“Applescript”的新程式碼段。
  4. 將Applescript貼上到TextExpander視窗中。以下是Applescript:

屬性theURL:“tell application”Safari“將URL設定為視窗1的當前選項卡的URL end tell如果應用程式正在執行(“Google Chrome”),然後告訴應用程式“Google Chrome”建立新視窗將視窗0的活動選項卡的URL設定為URL activate end tell else tell application”Google Chromedo shell script“open-a”Google Chrome“將視窗0的活動選項卡的URL設定為URL activate end tell end if on appIsRunning(appName)tell application“System Events”to(程序名稱)包含appName end appIsRunning

現在只需轉到當前開啟的Safari選項卡或視窗並鍵入“cchrome”。Chrome將開啟並顯示當前選項卡。

這對於使用OmniFocus執行Applescripts非常有用,OmniFocus具有強大的Applescript支援。

投入使用

正如你(希望)從這篇文章中看到的,TextExpander有很多可能的用途。這是一個非常有用的工具,可以節省你很多時間,但和任何工具一樣,只有正確使用它才有效。除了我們在本文中介紹的示例之外,在將TextExpander應用到您的個人工作流程中時,您還需要記住以下幾個通用的最佳實踐:

同步片段

您可以透過Dropbox同步程式碼片段,Dropbox允許您透過TextExpander touch和iOS裝置上其他受支援的應用程式訪問程式碼片段。為此,您必須進入“設定”,單擊“同步”並選擇“Dropbox”。

有相當多的應用程式支援TextExpander touch API。這裡有一個完整的列表,以防你想知道你最喜歡的應用程式是否受支援。

使用標準字首

Thanh在本文中談到了他對不同型別的程式碼段使用的不同字首(這是組織TextExpander程式碼段集合的一種非常合乎邏輯的方法),但我傾向於對所有內容使用字首“x”。有幾個原因:

  • 我無法想象這樣一種情況:我會鍵入一個以x開頭的實際單詞,這會與我的程式碼片段衝突。
  • 我知道當我鍵入“x”時,它肯定是一個TextExpander程式碼段。
  • “x”字元在iOS鍵盤上很容易訪問(用於透過TextExpander touch擴充套件程式碼段)。

註意:在TextExpander中組織程式碼片段確實沒有“正確的方法”。重要的是一致性。你只需要找到一些對你有意義並且容易記住的東西。

考慮實際用途

在將任何工具新增到工作流程之前,你應該問自己“這個工具能幫我解決什麼問題?”一切都需要有一個角色和目的。在TextExpander的例子中,它解決的問題是重覆鍵入常用單詞和短語所花費的時間。但如果你不註意,發現自己一直在重覆一些事情,你可能會被卡住,只是盲目地走過場,繼續一遍又一遍地做同樣的事情。

相反,你應該有自知之明:每當你發現自己做了不止一次的事情時,問問自己“我怎樣才能自動完成?”使用TextExpander,只需輸入你經常輸入的文字就很容易了,其餘的都會由它來處理。但是如果沒有自己的程式碼段庫,TextExpander的功能就不會對您有多大好處。

希望這本TextExpander的指南為您指明瞭如何使用這個功能強大無比的Mac實用程式的正確方向,但它只不過是皮毛而已。我們很想知道你是如何使用TextExpander的!

《亞洲效率》綜合影片指南


亞洲人的效率是由兩個朋友開始的,他們(毫不奇怪)都是亞洲人。我們看到世界上有太多的人因為過著沒有生產力的生活而不快樂。透過建立這個網站,我們(亞倫·林恩和陳芬)想向你展示如何透過提高生產力來最大限度地生活,這樣你就可以追求生活中想要的東西。

圖片改編自OpenIc***(Pixabay)、PublicDomainPictures(Pixabay)和Wikicomm***。

想看看你在tl80上的作品嗎?給安迪發郵件。

  • 發表於 2021-05-20 21:42
  • 閱讀 ( 25 )
  • 分類:網際網路

你可能感興趣的文章

網上購物指南的製作

...外,許多產品類別包含一個購買指南影片教程,這是遠比文字更舒適的消費。不過,最好的部分是購物小貼士。它包含了寶貴的線索和建議,你在做決定之前一定要考慮這些。 ...

  • 發佈於 2021-03-15 08:42
  • 閲讀 ( 83 )

13個被忽視的chrome擴充套件,減少點選和節省時間

...多時間。現在想想你在瀏覽網頁時有多“高效”:10秒將文字複製到Evernote,30秒開啟網頁字典網查詢一個定義,幾分鐘內找到線上優惠券程式碼,等等,所有這些都加起來了。 ...

  • 發佈於 2021-03-15 11:04
  • 閲讀 ( 66 )

9個visual studio程式碼擴充套件,使程式設計更加簡單

微軟的visualstudio程式碼是目前最好的免費文字編輯器之一。它結合了完整的功能集和相對易用性,對於一個電子應用程式來說,效能出奇的好。撇開以上原因不談,人們喜歡它的原因之一是它的可擴充套件性。 ...

  • 發佈於 2021-03-20 21:31
  • 閲讀 ( 76 )

初學者快速自動熱鍵指南

...指令碼包含的內容。雙擊指令碼以啟動它,然後開啟任何文字編輯器或瀏覽器視窗並鍵入btw進行嘗試。 ...

  • 發佈於 2021-03-21 16:59
  • 閲讀 ( 63 )

用這5個免費的chrome擴充套件和應用修復gmail常見的煩惱

...第二封電子郵件傳送給該收件人,同時包含第一封郵件的文字。 ...

  • 發佈於 2021-03-24 00:25
  • 閲讀 ( 74 )

6種不用滑鼠快速瀏覽網頁的方法

...或者受Vim的啟發,Vim是一個主要由開發人員使用的命令列文字編輯器。Vim於1991年首次為Amiga釋出,此後跨平臺開發一直持續到今天,其影響力是巨大的。 ...

  • 發佈於 2021-03-29 08:04
  • 閲讀 ( 102 )

6個windows最佳文字擴充套件工具

...腦,你就會知道一遍又一遍地輸入電子郵件、網站和其他文字的繁瑣。現代技術提供了一個很好的解決方案:文字擴充套件器。它們可以透過簡單的鍵盤命令快速輸入。 ...

  • 發佈於 2021-03-29 21:40
  • 閲讀 ( 71 )

短語表達有助於提高團隊合作的5種方式

...了一些有價值的生產力服務。它的主要目的是提供強大的文字擴充套件工具,使使用者能夠更快、更高效地編寫。但是PhraseExpress也是一個改進團隊工作流程的優秀工具。 ...

  • 發佈於 2021-03-29 22:39
  • 閲讀 ( 57 )

什麼是降價?如何使用?

Markdown是一種簡單的語法,它將文字格式化為標題、列表、粗體等等。這種標記語言很流行,你肯定有支援它的應用程式。這裡有一個快速入門什麼是降價,以及如何和在哪裡可以使用它。 什麼是降價(markdown)? 在文字中新增粗...

  • 發佈於 2021-04-02 21:06
  • 閲讀 ( 57 )

幫助那些有閱讀障礙的人閱讀網頁的字型和瀏覽器擴充套件

...更改為對閱讀障礙友好的字型,如OpenDyslexic、更改顏色、文字到語音、著色覆蓋等等。 這些都是很棒的東西,但缺點是Helperbird的免費版本只包含了幾個選項。如果你想要所有的功能,它會讓你每月節省4.99美元。這可能很容易值...

  • 發佈於 2021-04-02 22:44
  • 閲讀 ( 79 )
青夕夜涼
青夕夜涼

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦