提高 Vim 和 Shell 效率的 9 個建議
1. 重對映 CAPSLOCK 鍵
你上一次使用 CAPSLOCK 鍵是什麼時候?很久沒有了對不對?噢,我也是,它已經被遺忘了,它浪費了鍵盤上一個黃金位置。讓我們把它重對映成 Control 鍵來發揮它的作用吧!這裡告訴了你在不同的作業系統上的具體操作。
現在你可以保持標準鍵位手勢,隨意的敲擊到 a
鍵左邊的 crtl
了。
2. 使用 ctrl-r 來搜尋和自動重做歷史命令
許多人都知道可以使用箭頭鍵來都呼叫上一個歷史命令,但相對的,很少有人知道可以使用 ctrl-r
來迅速完成歷史命令的呼叫。
一旦找到相應的命令,可以通過回車來執行,或者在執行前對命令進行修改,這很容易會養成習慣,特別是在你把 CAPSLOCK 鍵重對映以後。
3. 使用 OS X 系統的 iTerm
iTerm 不是必須要用的高效工具,但絕對能提升效率。它有如下特性:
- 螢幕分割
- 選中即複製
- 剪下歷史
- 全屏切換
- 系統熱鍵
- Exposé 所有 Tab
- 儲存當前快照
我還不知道有哪個人換到 iTerm 以後還願意換回來的。上吧。
4. 把 Zsh 作為 Shell
大部分人會像我以前一樣是用 Bash 的人,看了 Zsh 的優點之後,絕大多數人就會對它讚不絕口並且再也不願意用 Bash 了。它的特性如下:
- 目錄補全:
ve/pl/re --> vendor/plugins/redmine
- 環境變數展開:
$PATH --> /your/full/path
- 智慧修正:
/pbulic/html
變/public/html
- 拼寫修正
- 命令歷史共享
- 行編輯高亮模式
- 完美相容 Bash 大部分配置
- 執行/bin/sh的時候可以媲美Bash
- 支援vim模式
最後一條是決定性的,ohmyzsh包含大量外掛(包括 rails、git、OS X、brew 等等),有超過80個終端主題和自動更新。ohmyzsh通過這些來讓 shell 用起來很爽。更詳細請檢視這。
5. 重對映 vim 的 ESCAPE 鍵
vim 有多個模式並不是什麼大問題,但在模式間切換的時候會感覺很糟。ESC 鍵有點遠,這太麻煩了。當我面對新的 vim 環境時,所做的第一件事就是新增如下對映
1 | inoremap jj< |
6. 重對映 Vim 的 Leader 鍵
如果你不熟悉 leader 鍵,也不知道它能為你做什麼,那你就從這開始瞭解吧。它本質上是作為你快捷鍵的啟用鍵,你可以自定義用哪個鍵作為你的 leader 鍵。所以,你可以:
1 | nnoremapjVipJ |
這可以讓你按下 leader 鍵結合大寫 ‘j’ 後視覺化的選擇整段並加入行。
我個人用 ‘,’ 鍵作為我的leader鍵,這樣我可以用 ‘,’ 啟用我所有的快捷鍵,然後通過 ‘jj’ 退出插入模式。你可以在 .vimrc
中像這樣對映:
1 | let mapleader=“,” |
7. 在 Shell 中使用 vi 模式
無論是 zsh 還是 bash 你都會想盡可能的使用同樣的肌肉記憶,如果你是 vim 使用者,這意味著你應該把你的 shell 從 Emacs模式(預設)切換到 vi 模式
這意味著你可以用 vim 的方式編輯你的 shell 命令列:
b
返回上一個單詞dd
刪除整行0, $
移動到行末- …等等。
你可以通過新增下面這行程式碼到 .zshrc
或 .bashrc
檔案來實現這一切:
1 | bindkey-v |
你也可以像 vim 一樣對映你的 escape 鍵:
1 | bindkey-Mviins‘jj’vi-cmd-mode |
另一個好處是可以通過j、k
來自然的瀏覽歷史記錄。還可以在你的.zshrc
檔案中通過下面的程式碼新增ctrl-r
的功能。
8. 把tmux加入工作流程
tmux是一個終端複用器,它允許你連線和管理多個伺服器端會話。在tmux
中可以啟動並連線對話,還可以斷開,然後在不同的時間地點再次連線。
你也許熟悉類似的解決方案,GNU Screen,但比起 screen,tmux
有如下優勢:
- screen 是一個又大又重的專案,並且它的編碼中有許多問題
- tmux 是一個輕便的專案,有現代的、高效的程式碼庫
- tmux 是一個完整的客戶端伺服器專案,而 screen 是螢幕模擬軟體
- tmux 支援 vim 和 emacs 的鍵盤佈局
- tmux 支援執行時自動重新命名視窗
- tmux 能很方便的通過 shell 實現指令碼化
- tmux 自帶垂直分屏功能,而 screen 裡螢幕被固定死了
如果你用不上終端複用功能,也可以是嘗試一下 tmux,你會獲益的。[ 更新: 這有 tumx 的最全啟蒙書。]
9. 同步工作環境
好了,在你的 MBP 能體驗到酷炫的 shell 和 vim 了,但一旦你都 SSH 到你的 Linux 上,就會感覺完全不同,這太令人惱火了。還好,可以通過同步來處理這個問題。
- 在 git 上為你的配置檔案建立一個倉庫,例如:Bash、Zsh、Vim 等等。記得保持更新。
- 在你所用的每個系統上都克隆一份(配置檔案)到對應系統的目錄下。
- 有評論說也可以用 Dropbox 來同步,似乎很棒,但我不確定在 Headless(Headless指沒有顯示器、鍵盤、滑鼠等裝置)的 Linux 伺服器上工作效果如何。
相關推薦
提高 Vim 和 Shell 效率的 9 個建議
1. 重對映 CAPSLOCK 鍵你上一次使用 CAPSLOCK 鍵是什麼時候?很久沒有了對不對?噢,我也是,它已經被遺忘了,它浪費了鍵盤上一個黃金位置。讓我們把它重對映成 Control 鍵來發揮它的作用吧!這裡告訴了你在不同的作業系統上的具體操作。現在你可以保持標準鍵位手
提高程式併發量的幾個建議(不看保證後悔死你)
有朋友和我說,他的程式遇到了瓶頸,程式中帶有演算法,但是沒有事務,僅是查詢情況下,應該如何提高併發數量呢?? 首先,我要說的是,先糾正絕大多數人的思維。併發與並行不是一回事!!!並行,指同一時間多個事件同時發生。併發,是指在某個時間間隔中,有多個事件發生,不一定同時發生。
TCP和UDP的9個區別是什麼及對應應用層協議
TCP和UDP是兩個傳輸層協議,廣泛應用於網路中不同主機之間傳輸資料。對任何程式設計師來說,熟悉TCP和UDP的工作方式都是至關重要的。這就是為什麼TCP和UDP是一個流行的Java程式設計面試問題。我曾經在各種不同的Java面試中見過這個問題,尤其是對伺服器端Java開發
VIM和shell的切換
本章深入討論如何讓其它程式跟 Vim 混用。或者從 Vim 內部執行別的程式,或者暫時先 離開 Vim 而於執行了那個程式後再回來。而且,本章將進一步介紹如何記住 Vim 的當前0 狀態,並在以後把它還原回來。 ---- 掛起和恢復在圖形化裡面大概就沒什麼用了。(作用等同滑鼠的最小化) 簡單的說一下:用CT
VC++ 提高C++程式執行效率10個簡單方法(其他語言程式參考)
對於每一個程式設計師來說,程式的執行效率都是一個值得重視,併為之付出努力的問題。但是程式效能的優化也是一門複雜的學問,需要很多的知識,然而並不是每個程式設計師都具備這樣的知識,而且論述如何優化程式提高程式執行效率的書籍也很少。但是這並不等於我們可以忽略程式的執行效率,下面
與程式設計師相處不可不知的9個建議
點選上方關注我們,讓小care關愛你! 無聊遲鈍似乎已經成為了程式設計師的標籤,在工作中,程式設計師的交流或許包含:與產品經理交
提高 Vim 使用效率的 12 個技巧
1. 使用空格鍵做為Leader(熱鍵) Leader是個非常有創意的設計,通過不同按鍵的順序操作可以執行各種命令,而不需要通過組合鍵的方式,自從使用Leader之後我就很少使用ctrl-xxx的這種組合鍵。 長久以來我都是使用 , 做為Leader,直到我意識到我
乾貨: 如何安裝這 4 個能提升你學習和工作效率的 vim 外掛?(最簡單的一篇)
讀這篇部落格你能學到些什麼? 這篇部落格主要介紹 vim 常用外掛的安裝配置方法,你可以學到下面這些內容: 掌握 vim 安裝外掛的方法,即使系統不同,也能有把握安裝成功 掌握常用 vim 外掛的配置和使用方法 通過本篇部落格學會類比,掌握解決問題的有效方
轉載----編寫高質量代碼:改善Java程序的151個建議(第1章:JAVA開發中通用的方法和準則___建議1~5)
ase 重載方法 name 原理 .get tin stat eas 容易 閱讀目錄 建議1:不要在常量和變量中出現易混淆的字母 建議2:莫讓常量蛻變成變量 建議3:三元操作符的類型務必一致 建議4:避免帶有變長參數的方法重載 建議5:別讓null值和空值威
轉載--編寫高質量代碼:改善Java程序的151個建議(第5章:數組和集合___建議65~69)
ceo next foreach遍歷 通過 當前 prev 支持 變量 信息 閱讀目錄 建議65:避開基本類型數組轉換列表陷阱 建議66:asList方法產生的List的對象不可更改 建議67:不同的列表選擇不同的遍歷算法 建議68:頻繁插入和刪除時使用LinkLis
10.19-10.22 iptables規則備份和恢10.20 firewalld的9個zone
iptables 規則 備份 10.19 iptables規則備份和恢復 10.20 firewalld的9個zone 10.21 firewalld關於zone的操作 10.22 firewalld關於service的操作 # 10.19 iptables 規則備份和恢復 - 保存和
JavaWeb(三)JSP之3個指令、6個動作、9個內置對象和4大作用域
不用 context 請求 判斷 自定義 except -c 一次 導航欄 前言 前面大概介紹了什麽是JSP,今天我給大家介紹一下JSP的三個指令、6個動作以及它的9大內置對象。接下來我們就直接進入正題 一、JSP的3個指令 JSP指令(directive)是為J
iptables規則備份和恢復,firewalld的9個zone,firewalld關於zone的操作,firewalld關於service的操作
firewalld service zone iptables 筆記內容:l 10.19 iptables規則備份和恢復l 10.20 firewalld的9個zonel 10.21 firewalld關於zone的操作l 10.22 firewalld關於service的操作筆記日期:201
【轉】編寫高質量代碼改善C#程序的157個建議——建議19:使用更有效的對象和集合初始化
color 有效 void ons ron public 類型 通過 esc 建議19:使用更有效的對象和集合初始化 依賴於屬性和FCL 3.5之後的語法規則,現在我們有了更加簡潔有效的對象和集合初始化機制:對象和集合初始化設定項。 對象初始化: class
【轉】編寫高質量代碼改善C#程序的157個建議——建議28:理解延遲求值和主動求值之間的區別
ons ati rgs 理解 問題 效率 sele 而不是 reac 建議28:理解延遲求值和主動求值之間的區別 要理解延遲求值(lazy evaluation)和主動求值(eager evaluation),先看個例子: List<in
【轉】編寫高質量代碼改善C#程序的157個建議——建議30:使用LINQ取代集合中的比較器和叠代器
main tor 命名空間 span line 繼承 new each 類型 建議30:使用LINQ取代集合中的比較器和叠代器 LINQ提供了類似於SQL的語法來實現遍歷、篩選與投影集合的功能。 static void Main(string[] ar
Linux日常維護(firewalld的9個zone和service)
firewalld zone service 一、iptables規則備份和恢復iptables如果不使用service iptables save命令,則重啟之後規則會全部消失。services save命令默認把規則保存在/etc/sysconfig/iptables文件裏。可以用ipable
【轉】編寫高質量代碼改善C#程序的157個建議——建議87:區分WPF和WinForm的線程模型
ons 拋出異常 ui線程 擴展方法 區分 cli inner 編寫 查看 建議87:區分WPF和WinForm的線程模型WPF和WinForm窗體應用程序都有一個要求,那就是UI元素(如Button、TextBox等)必須由創建它的那個線程進行更新。WinForm在這
【轉】編寫高質量代碼改善C#程序的157個建議——建議107:區分靜態類和單例
滿足 高質量代碼 同時 對象 method 導致 建議 單例 繼承 建議107:區分靜態類和單例 有一種觀點認為:靜態類可以作為單件模式的一種實現方式。事實上,這是不妥當的。按照傳統的觀點來看,單例是一個實例對象。而靜態類並不滿足這一點。靜態類也直接違反面向對象三大特性
【轉】編寫高質量代碼改善C#程序的157個建議——建議102:區分接口和抽象類的應用場合
支持 完成 不同 作用 設計 來看 適合 c# 職責 建議102:區分接口和抽象類的應用場合 接口和抽象類有一些顯而易見的區別: 接口支持多繼承,抽象類則不能。 接口可以包含方法、屬性、索引器、事件的簽名,但不能有實現,抽象類則可以。 接口在增加新方法後,所有的繼承