vim移動一行或一段代碼


nmap <M-j> mz:m+<cr>`z
nmap <M-k> mz:m-2<cr>`z
vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z
vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z
 
 
把上面代碼放到vim的配置文件_vimrc,這段代碼實現的效果是
在普通模式 或可視模式下選擇一段代碼,

同時按[Alt]+[j] 或[Alt]+[k] 可控制代碼向上、向下移。

 

基礎

字符移動

k            上移                k
h            左移            h        l
l            右移                j
j            下移

你也可以使用鍵盤上的方向鍵來移動,但這么做h j k l的存在就失去了意義

之所以使用h j k l來控制方向,其主要目的是讓你的手不離開鍵盤中心,從而提高效率

tips:在命令前加上數字代表命令執行次數,如:5k,表示上移5行

 

單詞移動

W w 移動到下一個單詞開頭 E e 移動到下一個單詞結尾 B b 倒退到上一個單詞開頭

需要注意的是,E會忽略標點符號,如:I‘m,e會當成兩個單詞,E則不會

同樣,在命令前加上數字代表執行次數,如:2w,表示往下移動2個單詞

開頭我也許會多說幾遍,因為這個技巧很重要

 

整行移動

0 移動到行首 $ 移動到行末 + 移動到下一行開頭 - 移動到上一行開頭

這里需要注意的是+ -和上面的j k有什么不同之處

j k也是移動到上一行和下一行,但它們移動的是光標所在的位置

+ -不管你的光標在何處,總是移動到下一行或上一行的行首

 

進階

滾屏

復制代碼
Ctrl+f            往前滾動一整屏
Ctrl+b 往后滾動一整屏 Ctrl+d 往前滾動半屏 Ctrl+u 往后滾動半屏 Ctrl+e 往后滾動一行 Ctrl+y 往前滾動一行
復制代碼

看似比較多,但是可以根據鍵盤的位置來進行記憶,並且下面兩個也不常用

上面的滾屏都有一個共同點,就是會改變光標的位置,且屏幕也在改變

如果想讓光標維持在原來的位置實現滾屏請看下面

 

用z調整光標

z<Enter>        將光標所在行移動到屏幕頂端
z.              將光標所在行移動到屏幕中間
z-              將光標所在行移動到屏幕低端

tips:980z<Enter>可以將第980行移動到屏幕頂端

好吧,有時候你其實不想滾屏,你只想在當前屏幕中移動

請往下看

 

在屏幕中移動

H            移動到屏幕頂端的行
M            移動到屏幕中央的行
L            移動到屏幕底端的行

nH           移動到屏幕頂端往下的第n行
nL           移動到屏幕頂端往上的第n行

據我猜測這三個字母應該是HIgh、Middle和Low的縮寫,其實挺好記的

多練習幾遍就行了,需要注意的是:這里只是光標的位置變化,和上面兩種不同

tips:你可以用+ -和j k實現同樣的位置變化,只不過要操作多次而已

+ -和j k的區別忘了嗎?往上看看吧

 

在當前行移動

^            移動到當前行的第一個非空格處
n|           移動到當前行的第n列

這里的^與上面的0通常情況下表示的位置是一樣的

而n|,個人感覺還沒有h l方便,慢慢的數出行數還不如直接按着h l 左右移

 

根據文本塊移動

所謂的文本塊也就是句子、段落、小節等

(            移動到當前句子開頭
)            移動到下一個句子開頭
{            移動到當前這一段開頭   
}            移動到下一段開頭
[[           移動到當前這一節的開頭
]]           移動到下一節的開頭

其中,VIM以? . !等符號來標記一個句子

空白行來標記一個段落

用節宏來標記一個節(節宏是什么我還沒搞清楚)

 

根據行號來移動

Ctrl+g            顯示當前行信息
nG                轉至第n行
G                 轉至文本末尾
gg         移至文本開頭

如果你不知道當前是多少行的話就可以用Ctrl+g來查看

如果想轉到第800行,可以用800G

其實z命令也可以做到,並且把光標移動到第一行

tips:``反引號可以返回到使用G之前的位置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM