1. 程式人生 > >提高 Vim 和 Shell 效率的 9 個建議

提高 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 環境時,所做的第一件事就是新增如下對映

1inoremap jj<
ESC>

6. 重對映 Vim 的 Leader 鍵

如果你不熟悉 leader 鍵,也不知道它能為你做什麼,那你就從這開始瞭解吧。它本質上是作為你快捷鍵的啟用鍵,你可以自定義用哪個鍵作為你的 leader 鍵。所以,你可以:

1nnoremapjVipJ

這可以讓你按下 leader 鍵結合大寫 ‘j’ 後視覺化的選擇整段並加入行。

我個人用 ‘,’ 鍵作為我的leader鍵,這樣我可以用 ‘,’ 啟用我所有的快捷鍵,然後通過 ‘jj’ 退出插入模式。你可以在 .vimrc中像這樣對映:

1let mapleader=,

7. 在 Shell 中使用 vi 模式

無論是 zsh 還是 bash 你都會想盡可能的使用同樣的肌肉記憶,如果你是 vim 使用者,這意味著你應該把你的 shell 從 Emacs模式(預設)切換到 vi 模式

這意味著你可以用 vim 的方式編輯你的 shell 命令列:

  • b 返回上一個單詞
  • dd 刪除整行
  • 0, $移動到行末
  • …等等。

你可以通過新增下面這行程式碼到 .zshrc 或 .bashrc 檔案來實現這一切:

1bindkey-v

你也可以像 vim 一樣對映你的 escape 鍵:

1bindkey-Mviinsjjvi-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 上,就會感覺完全不同,這太令人惱火了。還好,可以通過同步來處理這個問題。

  1. 在 git 上為你的配置檔案建立一個倉庫,例如:Bash、Zsh、Vim 等等。記得保持更新。
  2. 在你所用的每個系統上都克隆一份(配置檔案)到對應系統的目錄下。
  3. 有評論說也可以用 Dropbox 來同步,似乎很棒,但我不確定在 Headless(Headless指沒有顯示器、鍵盤、滑鼠等裝置)的 Linux 伺服器上工作效果如何。

相關推薦

提高 Vim Shell 效率9 建議

1. 重對映 CAPSLOCK 鍵你上一次使用 CAPSLOCK 鍵是什麼時候?很久沒有了對不對?噢,我也是,它已經被遺忘了,它浪費了鍵盤上一個黃金位置。讓我們把它重對映成 Control 鍵來發揮它的作用吧!這裡告訴了你在不同的作業系統上的具體操作。現在你可以保持標準鍵位手

提高程式併發量的幾建議(不看保證後悔死你)

有朋友和我說,他的程式遇到了瓶頸,程式中帶有演算法,但是沒有事務,僅是查詢情況下,應該如何提高併發數量呢?? 首先,我要說的是,先糾正絕大多數人的思維。併發與並行不是一回事!!!並行,指同一時間多個事件同時發生。併發,是指在某個時間間隔中,有多個事件發生,不一定同時發生。

TCPUDP的9區別是什麼及對應應用層協議

 TCP和UDP是兩個傳輸層協議,廣泛應用於網路中不同主機之間傳輸資料。對任何程式設計師來說,熟悉TCP和UDP的工作方式都是至關重要的。這就是為什麼TCP和UDP是一個流行的Java程式設計面試問題。我曾經在各種不同的Java面試中見過這個問題,尤其是對伺服器端Java開發

VIMshell的切換

本章深入討論如何讓其它程式跟 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的9zone

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的9zone,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的9zoneservice)

firewalld zone service 一、iptables規則備份和恢復iptables如果不使用service iptables save命令,則重啟之後規則會全部消失。services save命令默認把規則保存在/etc/sysconfig/iptables文件裏。可以用ipable

【轉】編寫高質量代碼改善C#程序的157建議——建議87:區分WPFWinForm的線程模型

ons 拋出異常 ui線程 擴展方法 區分 cli inner 編寫 查看 建議87:區分WPF和WinForm的線程模型WPF和WinForm窗體應用程序都有一個要求,那就是UI元素(如Button、TextBox等)必須由創建它的那個線程進行更新。WinForm在這

【轉】編寫高質量代碼改善C#程序的157建議——建議107:區分靜態類單例

滿足 高質量代碼 同時 對象 method 導致 建議 單例 繼承 建議107:區分靜態類和單例 有一種觀點認為:靜態類可以作為單件模式的一種實現方式。事實上,這是不妥當的。按照傳統的觀點來看,單例是一個實例對象。而靜態類並不滿足這一點。靜態類也直接違反面向對象三大特性

【轉】編寫高質量代碼改善C#程序的157建議——建議102:區分接口抽象類的應用場合

支持 完成 不同 作用 設計 來看 適合 c# 職責 建議102:區分接口和抽象類的應用場合 接口和抽象類有一些顯而易見的區別: 接口支持多繼承,抽象類則不能。 接口可以包含方法、屬性、索引器、事件的簽名,但不能有實現,抽象類則可以。 接口在增加新方法後,所有的繼承