請問有哪些你覺得很不錯的生產力工具?

不管是硬體,軟體還是某項技術,都可以。

比如硬體方面:Macbook,surface pro等

軟體方面:onenote,everything等

技術:正則表達式等

一切可以提高工作效率的都可以。


1、Word宏:《倚天屠龍記》里「無忌」多少次遇上了「少林」?

自無忌出世後,謝遜心靈有了寄託,再也不去理會那屠龍寶刀。有一晚張翠山偶爾失眠,半夜中出來散步,月光下只見謝遜盤膝坐在一塊岩石之上,手中卻捧著那柄屠龍寶刀,正自低頭沉思。張翠山吃了一驚,待要避開,謝遜已聽到他的腳步聲,說道:「五弟,這『武林至尊,寶刀屠龍』八個字,看來終是虛妄。」張翠山走近身去,說道:「武林中荒誕之說甚多。大哥這等聰明才智,如何對這寶刀之說,始終念念不忘?」謝遜道:「你有所不知,我曾聽少林派一位有道高僧空見大師說過此事。」

這是「無忌」和「少林」在書中第一次出現在同一個段落里。

周芷若站起身來,說道:「咱們走罷!」趙敏道:「到哪裡去?」周芷若道:「我適才在少林寺時,見彭瑩玉和尚匆匆前來尋他,似乎明教中出了甚麼要緊事。」張無忌一凜,心道:「我莫要為了兒女之情,誤了教中大事。」忙道:「咱們快去瞧瞧。」當下三人快步而行,不多時便到了明教教眾宿營之所。

這是「無忌」和「少林」在書中最後一次出現在同一個段落里。書中(三聯版)一共有197段同時出現了「無忌」和「少林」,這些段落加起來有29524字。

如果我要把這些段落全都找齊了,是不是得把整本書過一遍,一段一段來找?

那樣找的話,手都能找瘸了吧……

所以我點擊了Word里一個神奇的按鈕,於是彈出了這樣一個對話框:

輸入「無忌」然後點擊「確定」,Word就哐哧哐哧自己幹了一分多鐘活兒,然後跳出這樣一個對話框:

這個過程我再走一遍,改填「少林」,篩選剩下的就是既有「無忌」又有「少林」的段落了。

這個神奇的按鈕在哪裡呢?

嗯,它其實是我做的一個按鈕,是Word的一個「宏」鍵。

代碼我已經寫好了,你粘貼到你的Word宏編輯器里就行了:

Sub 自動化把有關鍵字的段落留下()
"
" 自動化把有關鍵字的段落留下 宏
"
" //本宏的功能:文稿中任何一段落只要有某關鍵字,該段留下;不含該關鍵字的其它內容刪除。

Text = InputBox("請輸入目標關鍵字(含有該關鍵字的段落將會保留):", "提示")
Application.ScreenUpdating = False
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = Text
.Replacement.Text = "█大家好我是關鍵字█"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.HomeKey Unit:=wdStory
Selection.TypeText Text:="定位待刪"
Selection.TypeParagraph
Selection.EndKey Unit:=wdStory
Selection.TypeParagraph
Selection.TypeText Text:="█完了。"
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "█"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute
Selection.Extend
Selection.Extend
Selection.Extend
Do While Len(Selection) &> 11
Selection.Cut
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "定位待刪"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.PasteAndFormat (wdFormatOriginalFormatting)
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "█"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute
Selection.Extend
Selection.Extend
Selection.Extend
Loop
" // 如果沒有目標關鍵字的段落並不想刪除,則刪掉下面的這段代碼
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "定位待刪"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute
Selection.EndKey Unit:=wdStory, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
" // 如果沒有目標關鍵字的段落並不想刪除,則刪掉上面的這段代碼
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "█大家好我是關鍵字█"
.Replacement.Text = Text
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
MsgBox ("任務已完成,文檔中剩下的是所有含「" + Text + "」的段落。"), 47, "完成"

End Sub

怎麼粘貼?

關於「宏」,一點小入門知識以及更多使用範例在這裡:

《什麼是「宏」? 為什麼以前計算機老師說不要用 word 中的「宏」?》

為什麼會寫這個宏?

其實是前些天朋友因為工作需要,要把一個三百多頁的文件裡帶某關鍵字的段落全留下,他一段一段查找,找到二十多頁的時候終於要崩潰了,所以問我有沒有什麼簡便方法。

我當時不知為何Word宏處理不了「粘貼」操作,導致我一時間不能全自動完成這個過程,只好把這個宏里的動作拆成兩部分,分別映射到我鍵盤的兩個自定義宏鍵上,手動來回按這兩個鍵,花了三分多鐘才操作完。

三百多頁最後剩下八十多頁。

我並不知道如果全手動的話要操作多久……

後來查清原因,能夠正常運行宏了,一鍵化嘗試,一分鐘出頭就可以完成。

示例肯定不能用人家的工作文件,所以隨便拿《倚天屠龍記》做了個例子。

為什麼Word宏會處理不了「粘貼」操作?

現在還不知道原因……癥狀是在Windows10更新後出現的。

具體癥狀是,每次電腦開機後第一次打開Word文檔後可以正常使用宏;但打開第二個文檔的話,處理宏時就會處理不了「粘貼」操作。

我把問題描述在微軟的論壇了:

Word 2016:執行宏的時候為何總會卡在粘貼操作上?

我一度解決了問題——是通過卸載騰訊電腦管家解決的。

結果Windows10再次更新後問題再度出現(可能冤枉騰訊了)。

所以我現在如果要執行帶「粘貼」操作的宏,都得重啟一遍電腦(抓狂)。

當然,重啟電腦也總好過對著一個三百多頁的文檔操作一整天……

文科生必備技能?

現在好像很明白為什麼文科大學生也要學VB了……(雖然我當時並沒有學……)

2、鍵盤自定義宏

這個是硬體。

我幾年來買鍵盤都必須要有自定義宏鍵的,不然根本不能活……

比如我現在的主力鍵盤,左側有十八個自定義鍵(品牌就不說了,評論如果有人提的話我也會刪掉……因為人家真沒給我錢啊……有自定義宏鍵的鍵盤又不只這一家,還有███,████,███等等好多家都有類似產品),因為最近的工作內容,主力宏鍵設置是這樣的:

但凡有那種繁瑣、重複勞動、讓人想死的滑鼠鍵盤操作,除了Word宏、PhotoShop錄製動作外,系統層面可以用鍵盤的自定義宏解決節約非常多的時間。

節約時間倒還在其次,重要的是心情

有空我再慢慢舉例解釋鍵盤自定義鍵的一些使用思路。


  1. 加vsvim和visual assist後的vs2012,這是我現在的工作環境,系統是windows8.1

  2. 命令行腳本,windows的powershell腳本,因為有多個項目,每天工作開始都會用來自動批量拉取代碼,比較方便
  3. vs的分析工程,分析程序的性能瓶頸,沒有用過比這更好用的東西了。
  4. 熟練的vim或emacse(不熟練甚至會降低效率),無法替代vs,自動補全和項目管理還是硬傷,但不影響其作為一款優秀編輯器的存在,用來修改cmake file、新增文件比vs方便,vs有相應的插件(用vs2008的時候系統自帶eamcs快捷鍵方式,2010也有emacs的插件,vs2012的emacs插件不支持了,據說有解決辦法,但我沒整成功,只好用vim的插件了,用vim的鍵盤宏很好用,批量生成代碼的時候真的很好用,例如,一個結構體里的所有數據項要匹配到資料庫的對應項:

std::string label_;
std::string name_;
std::string description_;
std::string operator_name_;
std::string date_;
std::string time_;
std::string treatment_protocols_;
std::string intent_;
std::string treatment_site_;
std::string geometry_;
std::string prescription_description_;
std::string approval_status_;
std::string approval_name_;
std::string approval_time_;
std::string referenced_structure_set_uid;

使用一條這樣的鍵盤宏:

^iTypeHandler&< t a&>::bind(pos++,obj. lx$i,pBinder,dir) j

可以變成:

TypeHandler&::bind(pos++,obj.label_,pBinder,dir);
TypeHandler&::bind(pos++,obj.name_,pBinder,dir);
TypeHandler&::bind(pos++,obj.description_,pBinder,dir);
TypeHandler&::bind(pos++,obj.operator_name_;,pBinder,dir)
TypeHandler&::bind(pos++,obj.date_,pBinder,dir);
TypeHandler&::bind(pos++,obj.time_,pBinder,dir);
TypeHandler&::bind(pos++,obj.treatment_protocols_,pBinder,dir);
TypeHandler&::bind(pos++,obj.intent_,pBinder,dir);
TypeHandler&::bind(pos++,obj.treatment_site_,pBinder,dir);
TypeHandler&::bind(pos++,obj.geometry_,pBinder,dir);
TypeHandler&::bind(pos++,obj.prescription_description_,pBinder,dir);
TypeHandler&::bind(pos++,obj.approval_status_,pBinder,dir);
TypeHandler&::bind(pos++,obj.approval_name_,pBinder,dir);
TypeHandler&::bind(pos++,obj. approval_time_,pBinder,dir);
TypeHandler&::bind(pos++,obj.referenced_structure_set_uid,pBinder,dir);

這樣的操作有很多,我們系統有二十幾張表,每個表幾十條、上百的數據項,如果沒有vim或者emacs的鍵盤宏。。。。。

我!活!不!下!去!!!

這只是編譯器無數的功能中的一個功能點,沒有vim或者emacs的插件的話,寫代碼總有一種無力的感覺。。。。。。

=================================================================

上面的太簡單了

這樣的操作呢?

double final_cumulative_meterset_weight_;
int applicator_id_;
std::string applicator_type_;

--------------------------------------------------------------&>

TypeHandler&::extract(pos++,final_cumulative_meterset_weight_,defVal.final_cumulative_meterset_weight_,pExt);
TypeHandler&::extract(pos++,applicator_id_,defVal.applicator_id_,pExt);
TypeHandler&::extract(pos++,applicator_type_,defVal.applicator_type_,pExt);

鍵盤宏是這樣的(雖然難看,但是我是直接錄製的,所以操作起來很方便):

^iTypeHandler&< t a&>::extract(pos++, lxyewi,defVal. pa,pExt) j

注意這裡每一條數據類型都不一樣,生成過程中變數還要被拷貝一次


熟練掌握了快捷鍵後的Visual Studio


紙、筆(這兩者的牌子無所謂)和頭腦


開發java,自從用了mac os + intellij idea(內置bash + vim編輯器插件) + hhkb,編程效率和心情都大大提升了~


Autohotkey

這麼好的一個軟體居然沒被提到。

可以這麼用:(我在用的一些功能)

1,將caps + hjkl 變成上下左右,+yuio 是home, pg dn, pg up, end,+nm是以詞為單位移動 。不管是不是碼代碼,在任何文字編輯的程序里都很有用

2,常用的短語可以用快捷鍵喚出

3,將linux或mac上的一些使用習慣擴展到windows上,例如alt + 滑鼠可以移動窗口,win鍵和left alt置換等等

4,快速打開常用的幾個文件夾

5,任何程序都可以設置成always on top

6,命令行里可以Ctrl+V


很多東西都可以提高效率,但是要看你的使用方式。

我個人感覺,對我的工作提升了效率的:

1.ipad

常用軟體:evernote(感謝scr的糾正)、todo、pdf、相機

不管和別人討論什麼,我都會記在對應的記事本裡面,它會同步到我的電腦中。

不管答應了別人做什麼事情,我都會記在todo裡面,打上優先順序。完成的時候劃掉。

發現比較好的文檔,就傳到pad上,有時間了就拿出來看看。

每次跟別人討論畫在黑板上內容之後,在擦除或者會議結束之前,我都會照下來,有時候用手機。

2.Axure RP Pro

畫各種流程圖,產品模板,結構分析等等

快速生成html,並可以連接進行點擊

3.Alfred 2

Mac上的神器,現在已經是第二版了。自定義搜索,任何界面下,按下快捷鍵就出來,可以快速啟動程序,搜索引擎等等。

例如我是個寫PHP得,經常會直接輸入php mongo,回車,mongo函數的頁面就出出來了;輸入baike ORM,就打開了百度百科關於ORM的解釋等等

(以上功能個需要自己配置)


硬體方面我認為數位板是很值得入手的生產力工具,不是幾十塊錢的手寫板啦,我用的一塊Wacom的低檔CTL671.在上面寫寫畫畫的手感跟紙筆差不多,因為我寫字總喜歡用力,所以反倒是用數位板更不容易疲勞.數位板的一大好處就是可以隨時修改,配合小巧玲瓏的SAI軟體,支持圖層,可以毫無顧忌的寫寫畫畫.

當然支持電磁筆的三星平板就更舒服了,只是成本更高一些.


熟練掌握快捷鍵的adobe全套。


還有最近開始團隊使用的worktile


google , excel, 二鍋頭。


那必須是office里的onenote了,工作中隨手記下筆記,輕鬆share給同事。而且最近免費了


VS是最強大的IDE!


1.Chrome,跟前端相關的開發離不開,pretty print等操作貼心無比。

2.RegexTest,佚名作者開發的一個正則工具(網上有很多同名的,但是沒找到比這個更好用的)

3.TeamViewer

4.Balsamiq Mockups,簡單易上手,基本功能都有,拿出去不跌份兒


office。。。

每次畫圖我都用Word和PPT。。。。


白板 設計圖實時討論的工具,簡單好用,上手容易


realtimeboard

網上討論問題的時候用的到,

語音的時候需要畫圖或者寫什麼東西的時候就可以用這個,能及時顯示。

一塊白板+筆+橡皮擦

現場跟別人討論問題,在白板上畫比在紙上效果好很多倍


Win:主要是UWP——poki(pocket的第三方應用);

Apply text——個人認為是win平台最好的一款Markdown工具了,甚至覺得它好過Typora;

視野——類似PC端的開眼,每天看一段,對激發靈感有些許幫助;

Bandizip——解壓;

ACG播放器——也許是win平台UI最好的播放器。

Mac:

就是用ulysse s+bear完成的。前者有專註的打字機模 式,後者可以隨意插圖;

Memo——桌面便簽應用,給愛忘事的人;

Pocket——稍後閱讀;

Day One——隨時記錄每日工作;

Handshaker——安卓-Mac文件傳輸神器;

HelloFont——在線字體下載(漢儀出品)。

全平台:

幕布——用了它之後其他思維導圖軟體都不愛了(最近他又推出了精選功能,用戶可在線分享自己的筆記);

IFTTT——自動化神器,便利到有時甚至會忘記它的存在;

堅果雲——也許是國內最好的Dropbox替代品。


火。


熟練掌握快捷方式和重構技巧的Intellij idea!


vim


推薦閱讀:

怎樣縮短學習周期?
怎麼樣才能讓學習體系化,效果更好?
初二學生想要努力學習會晚嗎?
只有考前一晚上時間複習,知識儲量為0,請問如何應對?
收藏了那麼多優秀答案,我什麼時候能看完?

TAG:學習 | 高效工作 | 高效學習 | 生產力工具 |