vim:你的不二選擇

最好的方法就是在使用中學(xué)習(xí)逞力,即 :help善茎。

vim 升級(jí)到 9 版本

  • yum list installed | grep -i vim 查看當(dāng)前已安裝的 vim 版本
    查看當(dāng)前已安裝的 vim 版本
  • sudo yum remove vim-enhanced vim-common vim-filesystem 移除老的安裝
  • yum install gcc make ncurses ncurses-devel
  • github 下載、編譯、安裝

https://github.com/vim/vim/archive/refs/tags/v9.0.1940.tar.gz
make distclean # if you build Vim before
make
sudo make install
vim --version 即可看到版本為 9 了。

參考

Vim Cheat Sheet:基礎(chǔ)經(jīng)典;
vimdoc.sourceforge:非常完整锥咸;
Book - Practical Vim: Edit Text at the Speed of Thought 2nd Edition
www.vim.org(請(qǐng)翻墻)
Vim Tips Wiki @ vim.wikia.com

vim --help
  • vim -o2 - 上下兩個(gè)窗口
  • vim -O2 - 左右兩個(gè)窗口
  • vim 已經(jīng)打開(kāi)文件,切分窗口使用 press <Ctrl>+<w> then press <v> 則會(huì)在右側(cè)開(kāi)窗细移。
  • 左右切換(在 vim 中 h 左移搏予,l 右移)
    切到左邊:pressing <Ctrl>+<w> and then pressing <h>
    切到右邊:pressing <Ctrl>+<w> and then pressing <l>
  • diff -E -Z -b -y --suppress-common-lines old new 左右窗口對(duì)比兩個(gè)文件。如何安裝 diff 見(jiàn) 這里弧轧。
基本
  • 按 "i"或"I" 進(jìn)入編輯模式雪侥,編輯后按 "esc" 退出編輯模式,然后按 ":" 進(jìn)入命令行模式精绎,":wq" 保存退出 vim.
  • R - 進(jìn)入替換模式速缨,和 i 模式相對(duì)應(yīng);
    Enter overtype (replace) mode, where you destructively retype everything until you press ESC;
  • r - 替換當(dāng)前字符代乃;
  • 使用 vim 打開(kāi)文件旬牲,編輯了半天仿粹,要保存時(shí)發(fā)現(xiàn) readonly 打開(kāi)的,如何辦原茅?
    Using vim to force edit a file when you opened without permissions
    有 sudo 權(quán)限時(shí):

    Issue: :w !sudo tee %. This will write the buffer to tee, a command that receives pipe information and can write to files. And as tee is run with sudo powers, tee can modify the file.`

定位
  • <num>G [enter] - Go To that line
  • : <num>[enter] - Go To that line
  • :set nu 或者 : set number 設(shè)置顯示行號(hào)吭历。
  • gg - go to the top,相當(dāng)于 1 G [enter]
  • G - go the bottom擂橘,相當(dāng)于 0 G [enter]
  • 0 - 行頭
  • $ - 行尾
  • % - {} 花括號(hào)對(duì)的查找切換晌区,找對(duì)應(yīng)的花括號(hào)(匹配花括號(hào));
  • <num>h, <num>l:左右移動(dòng)光標(biāo) num 字符通贞;
  • <num>j, <num>k:下上移動(dòng)光標(biāo) num 行朗若;

Undo and Redo

  • u:undo
  • Ctrl + r:redo

Copy, cut and paste

  • y - yank

  • yy - yank (copy) a line。

  • <num>yy 則 yank <num> lines昌罩,如 4yy捡偏。

  • y0y$峡迷,yG - yank to the begin of line, to the end of line,to the end of file.

  • 進(jìn)入 v 模式后你虹,選擇绘搞,然后 y
    對(duì)于不太好確定邊界的復(fù)制傅物,v模式非常方便夯辖。

  • p - put (paste) the clipboard after cursor;
    P 則插在當(dāng)前光標(biāo)位置(P 即 shift+p)董饰;

  • x - delete (cut) current character蒿褂;
    <num>x:刪除光標(biāo)右側(cè)的 num 字符;
    <num>X:刪除光標(biāo)左側(cè)的 num 字符卒暂;

  • d - 刪除

  • dd - delete (cut) a line啄栓,5dd - 刪除5行。

  • d0也祠,d$昙楚,dggdG - 刪除到行頭诈嘿、行尾堪旧、文件頭、文件尾奖亚。
    *i_0_CTRL-D*:0 CTRL-D Delete all indent in the current line. {Vi: CTRL-D works only when used after autoindent}
    <num>dw, <num>db:光標(biāo)右側(cè)淳梦、左側(cè)刪 num 個(gè) word(/-#=空白分隔,何為 word 不太好講昔字,不常用爆袍;包括 yw, yb 在內(nèi)都不常用);
    df(d f space),這是一個(gè) 自定義分隔符的簡(jiǎn)單做法螃宙;

  • v - visual selection
    visual selection, cut-and-paste or copy-and-paste
    v, d v進(jìn)入visual蛮瞄,然后選擇,然后 d 即可刪除谆扎。
    v, y
    v, p

Working with multiple files

:e filename - Edit a file
:tabe - make a new tab (tabedit)
:r <file> 把文件 file 的內(nèi)容追加到當(dāng)前光標(biāo)行之后挂捅;

gt - go to the next tab
gT - go to the previous tab
ctrl+wv - Split windows verticall(:vsp - vertically split windows)
ctrl+ww - switch between windows
分窗口后,使用 :e 切換文件堂湖。
:split 橫向分割為上下窗口闲先,:close,:10split 則新窗口10行无蜂。
:vsplit 縱向分割為左右窗口

Search

  • search forwards
    /<pattern>伺糠,Then press n to search forwards for the next occurrence, or N to search backwards, or # to search backwards.

  • /\c<pattern>:search, case insensitive matching(不區(qū)分大小寫(xiě))。

  • /\C<pattern> 區(qū)分大小寫(xiě)搜索斥季;

  • Search backwards
    ?<pattern>训桶,Pressing n searches in the same direction (backwards), while N searches in the opposite direction (forwards).

  • Searching for the current word
    Press * to search forwards for the next occurrence of that word, or press # to search backwards. n next forwards, N backwards.

  • 搜索 only whole words
    the pattern begins with \< and ends with \>, so only whole words are found. *# 就是典型的 word 搜索。

Search and replace 搜索和替換

  • g flag
    The g flag means global酣倾,即:Replace all matches舵揭,而不是 replace the first occurrence.

  • c flag
    The c flag means asking for confirmation.

  • %:in all the lines (on each line), 即搜索每一行,而不是僅僅當(dāng)前行躁锡。

  • :%s/foo/bar/gc
    Change each 'foo' to 'bar', but ask for confirmation first.
    / 分隔符可以改為 @ 或者 # 等字符午绳,但不能是 | 字符,這在替換含有 / 字符的字符串時(shí)很好映之。
    :%s/\<foo\>/bar/gc

Change only whole words exactly matching 'foo' to 'bar'; ask for confirmation.`

  • :3,8 s/foo/bar/g 搜索替換第3到第8行的所有foo并替換為bar拦焚。

v 進(jìn)入 -- VISUAL -- 模式

  • :'<,'>s/foo/bar/g
    v 進(jìn)入 visual 模式,選中區(qū)域后杠输,: 進(jìn)入命令行赎败,輸入s/foo/bar/g 即可。
    When compiled with +visual, change each 'foo' to 'bar' for all lines within a visual selection. Vim automatically appends the visual selection range ('<,'>) for any ex command when you select an area and enter :.

  • :'<,'>s/ /#/
    visual 選中若干行蠢甲,以 # 注釋若干行螟够,僅將最前面的一個(gè)空格替換為#(replace the first occurrence)。直接在行頭插入 # 則 :'<,'>s/^/#/ 即可峡钓。

縮進(jìn) indent

  • In command mode
    you can use >> to indent a single line. 4>> will indent the current and next three lines. 可結(jié)合 . 重復(fù)操作妓笙。
  • visual mode
    先選中若干行,然后 >能岩,可結(jié)合 . 重復(fù)操作寞宫。
  • 使用 < 則相反方向。
  • Shifting blocks visually

tab 字符轉(zhuǎn) 空格 space

~/.vimrc 配置文件

vim 個(gè)性設(shè)置钥屈,里面是各個(gè) vim 命令悟民。The vimrc file contains optional runtime configuration settings to initialize Vim when it starts.
使用 " 標(biāo)識(shí)注釋?zhuān)╟omments),可以使用中文篷就;

set number " display line number
set laststatus=2 " status line: display filename
set ignorecase " Do case insensitive matching
set tabstop=4 " ts
set shiftwidth=4 " sw
set expandtab " tab to spaces,當(dāng)你鍵入tab時(shí)竭业,自動(dòng)轉(zhuǎn)為空格智润。
set cursorline " highlight the cursor line
set hlsearch " highlight search: hlsearch/hls/nohlsearch/nohls
set nowrap
  • Syntax highlighting in vim,通常默認(rèn)支持未辆;
:syntax enable
or
:sy enable
or
:syn enable
  • c2a0 問(wèn)題窟绷;
    在頁(yè)面上出現(xiàn)的代碼,由于 頁(yè)面字符處理轉(zhuǎn)換 的緣故咐柜,經(jīng)常會(huì)出現(xiàn)一些奇奇怪怪的東西兼蜈,比如 c2a0,看起來(lái)也是一個(gè)空格拙友,但實(shí)際上不是(空格 Space 的十六進(jìn)制20)饭尝,網(wǎng)頁(yè)上使用
    奇怪字符可以使用 xxd 或者 hexdump 觀察献宫;錯(cuò)誤提示和語(yǔ)法著色也能看出問(wèn)題所在;
  • 查看當(dāng)下設(shè)置
:verbose set
:verbose set ts
:verbose set shiftwidth
:verbose set all
  • 查看 highlight 設(shè)置
:hi
:hi search
  • vim 下查看ASCII 碼
    :%!xxd 十六進(jìn)制
    :%!xxd -b 二進(jìn)制

  • /etc/vimrc
    System wide Vim initializations.

  • vim


    vim.png
  • vim --version


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末实撒,一起剝皮案震驚了整個(gè)濱河市姊途,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌知态,老刑警劉巖捷兰,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異负敏,居然都是意外死亡贡茅,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)其做,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)顶考,“玉大人,你說(shuō)我怎么就攤上這事妖泄【匝兀” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵蹈胡,是天一觀的道長(zhǎng)渊季。 經(jīng)常有香客問(wèn)我朋蔫,道長(zhǎng),這世上最難降的妖魔是什么却汉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任驯妄,我火速辦了婚禮,結(jié)果婚禮上合砂,老公的妹妹穿的比我還像新娘青扔。我一直安慰自己,他們只是感情好既穆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布赎懦。 她就那樣靜靜地躺著,像睡著了一般幻工。 火紅的嫁衣襯著肌膚如雪励两。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天囊颅,我揣著相機(jī)與錄音当悔,去河邊找鬼。 笑死踢代,一個(gè)胖子當(dāng)著我的面吹牛盲憎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胳挎,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼饼疙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了慕爬?” 一聲冷哼從身側(cè)響起窑眯,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎医窿,沒(méi)想到半個(gè)月后磅甩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡姥卢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年卷要,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片独榴。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡僧叉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出棺榔,到底是詐尸還是另有隱情彪标,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布掷豺,位于F島的核電站捞烟,受9級(jí)特大地震影響薄声,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜题画,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一默辨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧苍息,春花似錦缩幸、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至盖喷,卻和暖如春爆办,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背课梳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工距辆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人暮刃。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓跨算,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親椭懊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子诸蚕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 文/面包 01 上次回家,一進(jìn)門(mén)氧猬,我媽剛好在和爺爺奶奶通電話(huà)背犯,我媽一見(jiàn)到我,就招呼我過(guò)去跟他們說(shuō)幾句狂窑。想想上一次見(jiàn)...
    面包走走停停閱讀 346評(píng)論 0 0