1. vim 中 ctrl+c 作爲一個退出文件的快捷鍵來使用。
在一些操作軟件中,比如 有道, ctrl+c 被屏幕劃詞(取詞)佔用, 導致在vim 中,鼠標選中一行後, vim 就會斷掉 。
最簡單的解決方法: 使用vim 的時候, 把取詞和劃詞功能關掉。
2:vim 中使用table 可以自動補全命令,比如
:vs + table -- > vsplit
:e + tablle --> explore
:s + table --> sexplore
3 :vim 編輯區的折行
點擊v進入visual模式,移動光標選擇一定區域,輸入 zf 就可將相應段落折行顯示,zr 可展開,恢復原狀
4 : 大小之間切換
在vistual mode 下, gu , 全部變爲小寫, gU 全部變爲大寫 ,只修改光標當前位置的大小寫,用 shift+ (鍵盤左上角的1 左邊的按鍵)
title:用Vi/Vim/gVim處理字符的大小寫轉換(暨命令gu gU的靈活
url: http://space.itpub.net/519536/viewspace-589227
note: 很好的頁子
5 vim 中的自動提示
在 insert mode,from XX import yy, 輸入 ctrl+p,可以在當前文件(以及一些相關文件)中自動匹配,做一些提示,在type 中還是很有用的。
6:使用快捷鍵進行頁面翻動
上 j
下 k
左 h
右 l
ctrl + f 屏幕前翻一頁 (常用) front
ctrl + b 屏幕後翻一頁 (常用) back
ctrl + d 屏幕後翻半頁down
ctrl + u 屏幕前翻半頁up
# 除了使用快捷鍵,鍵盤上的pageup, pagedown 也是可以的。但正像vim 最早的“將雙手從鼠標或其它位置解放出來”,如果雙手位置不動,只要停留在主鍵盤區就可以完成翻頁的效果,何樂而不爲?
7:針對一個屏幕的光標移動
+ 光標移動到非空格的下一列
- 光標移動到非空格的上一列
n<space> 按下數字後再按空格,光標向右移動這一行的n 個字符。eg: 20<space> 光標向右移動20個字符
0 或者 <home> 數字0,移動到這一行的第一個字符 (常用)
& 或者 <end> 移動到這一行的最後一個字符
G (shift+g) 光標移動到文件末尾
8 : 針對一個屏幕的光標移動:
H 光標移動到這個屏幕最上方的一行
L 光標移動到這個屏幕最下方的一行
M 光標移動到這個屏幕最中央的一行
9 針對一個文件中光標的移動:
G 光標移動到這個屏幕最下方的一行 (相對於 gg , 移動到文件最開始的一行)
:n 移動到第n行,比如 :20 移動到第20行。 可以結合 :set number :set nu :set nonum 一起使用
還有一個功能和 :n 一樣的命令是 nG , 個人感覺不如 :n 快捷, 不是嗎?呵呵
n<enter> 光標向下移動n 行 (真的非常有用,這也是我決心重新學習 viim commands 的最初動機)
10: 查找與替換:
/word 在光標之後查找一個名爲word 的字符串 (我個人使用的時候,一般是 先使用 gg 移到文件頭,然後 再使用 /word 查找)
?word 在光標之前查找一個名爲word 的字符串
# 查找是一般是區分大小寫的。如果想不區分大小寫,可以使用進入order 模式 :set ingorecase , 或者直接在 .vimrc 中添加 set ignorecase
*(#) 當光標停留在某個單詞上時, 輸入這條命令表示查找與該單詞匹配的下(上)一個單詞 同樣, 再輸入 n 查找下一個匹配處, 輸入 N 反方向查找
g*(g#) 與上條命令相似, 只不過它不完全匹配光標所在處的單詞, 而是匹配包含該單詞的所有字符串
% 查找與光標所在處相匹配的反括號, 包括 () [] { }
#如果括號嵌套較多的時候,還是很有用的
f(F)x 在光標所在行進行查找, 查找光標右(左)方第一個x字符。找到後: 輸入 ; 表示繼續往下找。輸入 , 表示反方向查找
:n1,n2s/word1/word2/g 在第n1行與n2行之間查找word1 這個字符串,並將該字符串替換爲 word2 (常用)
#note: 這裏很像linxu 中的sed 命令, 比如 sed [-i] 's/word1/word2' xxx.py
:n1,n2s/word1/word2/gc 相比上一個命令增加了一個 c ,會在修改之前輸入一個確認, (y/n/a/q/l/^E/^Y) y 表示替換,自動移動到下一個字符,n 表示不修改,自動移動到下一個字符,a 表示全部替換,
:q 表示放棄修改,修改完這一個後退出,11: 刪除,複製,粘貼
x 向後刪除一個字符
X 向前刪除一個字符nx 數字加x, 向後刪除n個字符。 比如 3x , 向後刪除3 個字符
nX 類nx, 改爲向前
D 或者 dd 將光標所在行剪切至剪切板,以後 輸入 p, 就可以將其黏貼至文件中
dd or D 刪除(剪切)光標所在的一整行
ndd 剪切光標所在列的向下n 列
d1G 刪除(剪切)光標所在行到文件第一行的所有數據 (有用)
dG 刪除光標所在行到文件最後一行的所有數據
yy 複製光標所在的行
nyy 數字加yy, 複製光標所在行的向下n 行。 比如 4yy, 複製光標向下的4 行
yw 將當前單詞複製到緩存區
y1G 複製光標所在行到文件第一行的所有數據 (有用)
yG 複製光標所在行到文件最後一行的所有數據
p 將剪切的數據黏貼在光標的下一列(如果剪切板中是一行),下一個位置 (一個字符)
P 將剪切的數據黏貼在光標的上一列
J 將光標所在的列與下一列的數據整合成一列
u or U 恢復前一個動作 (我一直疑心u 和 U 表示的含義是一樣的))
ctrl+r 重做
i 在當前光標所在列之前插入字符
I 在當前光標所在行首插入字符
a 在當前光標所在列之後插入字符
A 在當前光標所在行末插入字符
o 在光標所在列的下一列添加一行,並且進入可編輯模式
O 在光標所在列的上一列添加一行,並且進入可編輯模式
r 替換光標所知的那一個字符
R #note 看不出 R r 什麼區別
esc 退出當前模式,回到一般模式
命令行模式:
:w 將編輯的數據寫入硬盤中 (常用)
:w! 若文件屬性爲只讀,強制寫入該文件
:q 退出vim, 快捷方式爲 shift + zz #note: 其實 :q 命令本身已經很快捷了,沒有必要再去快了,再說也不安全, 不是嗎?
:q! 若曾修改過文件,又不想保存,使用! 強制退出不保存文件,快捷方式 shift+zq , 建議如上
:wq! 強制保存後退出
:w filename 將當前文件保存爲另外一個文件 (類似另存新文檔)
:r filename 在編輯的文件中,讀入另一個文件中的內容,即將filename這個文件內容加到光標所在行的後面 #BIG NOTE 非常炫,非常有用
:n1,n2 w filename 將當前文件的n1 到 n2 內容保存爲 filename 這個文件
:set nu 顯示行號,在每一行的前面顯示該行的行號 nu 的全稱爲number
:set nonu 取消行號
:set nohlsearch 取消高亮顯示
12: 針對一行中選取
進入visual 模式進行光標移動的選取自然可以。如果需要從某一個位置一直選取到行首或行尾, 可以使用:
將光標移到起始位置, 點擊v進入visual 模式,^, 就可以選取至行首; 同樣, $ 就可選取至行尾。
13: screen 的鎖定和解鎖
ctrl + s: vim 屏幕鎖定
ctrl + q: vim 屏幕解鎖
14: vim 用spaces 替換table 的幾種方法
method 1:
在VIM中如何使得源碼中的TAB全部用相應的空格替換?比如四空格.
在.vimrc中設置自動語法對齊後能不能設置用空格來補充前面的對齊位? [/quote]
:set ts=4
:set expandtab
:%retab
tabstop, table 鍵的佔位符, table 的寬度爲 4, 其實這個也可以調整,知道達到你需要的縮進效果
expandtab 擴展 table 鍵盤的功能
如果打開一個已存在的文件,並不會將所有的tab 替換爲空格。如果希望這樣的替換的話,可以使用 :retab
method 2:
使用 sed:sed -i 's/\t/ /g' test.py
method 3:
自己的,也是最好的方法:
在文件中,使用這種形式,(table 和 space 都可可以直接輸入,vim 可以識別)
:s/jia/luo/gc (嚴格來說,應該是這樣的東西::%s/jia/luo/gc)