Linux終端快捷鍵
在.bashrc中加入下面命令可以改變終端快捷鍵
set -o emacs "使用emacs快捷鍵設置
set -o vi "使用vim快捷鍵設置
詳細使用方法可參考書籍:
Vim快捷鍵壁紙
VIM快捷鍵
` 跳轉到標註處,需後續參數
~ 轉換大小寫,已經大寫則轉爲小寫,已經小寫則轉爲大寫
! 外部過濾器,需後續參數
@ 運行宏,需後續參數
#,* 下一個和上一個查找標記(同時高亮光標所在詞)
$,^,0,-,+ 分別是行尾,軟行首,硬行首,前一行首,後一行首
% 括號比配(在匹配的括號之間跳轉,若無跳轉則尚不匹配)
& 重複查找(:s)
; 重複/t/T/f/F命令的執行
" 寄存器表示
| 行首/列
< 反縮進
> 縮進
( 上一個段落首
) 下一個段落首
= 自動格式化(調整縮進)
{ 當前段落首
} 當前段落尾
[ Ctrl+[等效於ESC
/ 向下查找
? 向上查找
. 重複前一次操作
num 0以外的其他數字輸入後按空格,則是向後移動字符數,按回車則是行數
在插入模式下按Alt+j或k或其他按鍵,可以直接轉至一般模式,同時部分按鍵在轉至一般模式前起作用,
因此不必非要通過ESC或者Ctrl+[轉至一般模式!
A,a 轉爲插入模式,光標後,行末
B,b 前一單詞首
C,c 刪除至行末,刪除行,後轉爲插入模式(cw)
D,d 刪除至行末,刪除行或詞(dd,ndd,d1gg,dgg,d0,d$,dw,de,db,dh)
E,e 後一單詞尾(ge前一單詞尾)
F,f 行內單個字符查找,反向,正向
G,g 光標至文件尾,gg至文件首(ngg或nG爲跳轉至第n行,gf爲打開光標處文件名)
H,h 光標移至屏幕頂,左移光標
I,i 轉爲插入模式,光標至行首,光標在當前處
J,j 合併兩行(當前行和下一行),下移光標
K,k 打開幫助,上移光標
L,l 光標移至屏幕底,右移光標
M,m 光標移至屏幕中間,設置標註(需要其他參數)
N,n 向下和向上重複之前?與/查找的內容
O,o 插入新空行,並轉爲插入模式
P,p 向前與向後粘貼((Ctrl+p爲自動完成提示)
R,r 替換模式,替換字符(Ctrl+r,重做上一次操作)
S,s 轉爲插入模式,之前刪除行,刪除字符
T,t Back till, till
U,u 撤銷命令
V,v 行選擇與字符選擇(Ctrl+v可以塊選擇)
W,w 後一單詞首
X,x 退格,刪除字符(nX,nx,刪除後的內容可用p複製)
Y,y 複製(用法見D,d,其他如yw,ye,yb,yge,yny等)
Z,z 退出與附加命令(ZZ保存退出,ZQ不保存退出, zt移動光標至屏幕頂端,但不變換行,zb屏幕底,zz爲中間)
daw
C-w C-h C-u C-o
g~ gu gU
yt<char>
<C-r>0
gk gj
W,B,E,GE
選擇模式下:
va} va] va) va> va" vat
vi} va] vi) vi> vi" vit
ci} ci] ci) ci> ci"
其他重要命令如下:
Ctrl+F/B 上翻/下翻屏幕
Ctrl+E/Y 上滾/下滾屏幕
:h 幫助
:new 新建文件
:e filename 打開文件
:n1 n2s/word1/word2 將n1到n2行之間所有word1替換爲word2
:1 $s/word1/word2 全文中所有word1替換爲word2
:w filename 存盤
:r filename 讀取文件
:n1,n2 w filename 行n1到n2之間內容存盤
:! command 執行終端命令
:n1,n2y 從16行到24行執行復制,y也可以是d
Ctrl+X 代碼智能補全與提示(後續指令有Ctrl+L補全行,Ctrl+I補全當前文中出現的詞彙等)
Ctrl+P與Ctrl+N 均爲代碼提示
:n與:N 前一個與後一個編輯的文件
c+w+j/k 下一個窗口,上一個窗口
:tabnew 新開tab頁
gt, gT 前後tab頁切換
:cpen :cc N :cnext :cprev :cclose
VIM函數名高亮配置
VIM默認情況下,函數名是不會高亮的,將下面這段代碼添加到/usr/share/vim/vim73/syntax/c.vim文件的末尾即可:
"highlight Functions
syn match cFunctions "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2
syn match cFunctions "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1
syn match cOperators "[\=\,\&\*\;\?\:]"
會後在.vimrc或.vim文件中hi cFunctions ctermfg...即可設置顏色
要高亮其他部分都可以按此方法自行定義
其他
Some Example:
var s = method("+args+")
f+
s + <ESC>
; .