持續更新 Vim一日一技

2021-09-29 03:43:58 字數 3084 閱讀 5545

經常容易出現將」name"打成「nmae"的情況,如何快速的交換ma的位置呢?

交換前後兩個字元

解釋:x 用於刪除單個字元,同時刪除的字元會進入快取,p既可以將快取的字元新增到游標後。多說一句,p是將字元新增到游標前。

主要利用視覺化模式和$的選擇,以及a的插入模式。

在每一行後面插入文字

更好的操作:,g,$,a,\,esc

快速處理複製**時出現的詭異縮排問題。<向左縮排,>向右縮排。

處理縮排

~/.vimrc中增加快捷操作

nnoremap :nohlsearch
nnoremap: normal model remap, 對普通模式下的快捷鍵進行對映。

: 對映不會在命令列輸出資訊,定義後續的行為。

左邊的表示要定義的快捷鍵,右邊的:nohlsearch>則是左邊快捷鍵實現的工作。其中原本的表示清屏重寫,也就是重新整理

vim區分螢幕行和實際行,實際行小於或等於螢幕行。這是因為當一行文字過長時,vim會自動以多行進行展示。

為了實現螢幕行移動,只要在原本的移動,例如 hjkl 前加上 g, 也就是gh等。

關於vim的命令模式,要從vi的起源說起。最初的有乙個unix的文字編輯器叫做ed,也就是editor的縮寫,之後改進成em(editor for mortals), en,直到ex。ex增加了乙個功能,將終端螢幕設定互動視窗的形式,該模式通過:visual啟用,簡寫成vi,也就是vi編輯器名字的由來。vim表示vi improved,vim在設計過程中就繼承了命令列模式。

說到ed,就會想到sed。如果學過sed,那麼sed裡面的操作幾乎能無縫地在vim的命令列模式中使用。

行選擇

演示**現的幾個選擇方法

按照子串移動比按照單詞移動快

在寫**的時候, 如果出現了"(", 那麼後面就一定會有")"和他搭配,有左引號,就會有右引號。 可用:h text-object了解文字物件。

需要用vim --version | grep textobjects檢查所用的vim是否支援。

選擇單詞,句子或段落

a 和 i 區別可以簡單的認為是a還會選擇附近的空白,i只會選擇單詞本身。一般d和aw, as,ap 配合使用,c和iw配合使用

選擇類似於**塊的區域

既可以用d2w一次性刪掉2個單詞,也可以是dw. ,先刪掉乙個單詞,然後重複一次。究竟選擇那種方案,沒有絕對對錯之分,只能具體情況具體分析了。

剛開始學習vim的時候,它最讓我吃驚的一點是,可以按照自己思維的方式進行編輯,比如說刪掉乙個單詞,就是daw, delete a word, 或者是刪除字元後開始編輯,ciw。 這種操作由操作符號和動作命令組成。

vim的操作符號如下

轉換大小寫的用途在於,你可以安心地把caps lock鍵替換成ctrl。當你要輸入乙個全大寫單詞時,你可以先照常輸入小寫,然後用guiw 把字元轉換成大寫。如果你只是想首字母大寫,那麼在輸入第乙個字元的時候,用shift+對應的字母就能輸入大寫的字母。

操作符在使用時,後面必須跟著動作命令。如果想要作用當前行,那麼就同時輸入兩個操作符。

幾個操作演示

預設就是如上幾個操作符,但是可以通過外掛程式增加一些操作符號,比如說提供了注釋的操作符。他會根據指令碼型別進行注釋,當我知道這個檢查外掛程式之後,我終於不用自己手動加注釋符號了。

注釋

同樣我們也可以額外增加一些動作命令,例如外掛程式提供了ieae作用於整個檔案。

在之前的快速處理**複製貼上時出現的詭異縮排問題時,我還是花了很多不必要的操作,主要原因是我對vim還不熟悉。

引起貼上出現問題的背後原因是,我在~/.vimrc裡設定了set autoindent。從系統剪下板貼上文字時,原本的空格被保留的同時,每次換行,vim還會自動幫我們縮排。

自動縮排引起異常

一種解決方案就是不設定自動縮排。但寫**沒有自動縮排是絕對不可以的,因此我們需要另一種解決方案,也就是使用:set paste,這樣子vim裡很多會導致貼上異常的引數都會被關掉。之後再用set paste!復原即可。

如果經常有從系統命令貼上內容這個動作,那麼:set pastetoggle=既可以讓我們用f5在插入模式下自動切換模式了。

解決系統剪下問題

除錯斷言失敗 一日一技 python中的斷言

一 使用python中的斷言來自動檢測python程式中的錯誤,讓程式更加可靠且更易於除錯 從根本上來說,python中的斷言語句是一種除錯工具,用來測試某個斷言條件,如果斷言條件為true,則程式將繼續正常執行 但如果斷言條件為假false,則會引發assertionerror異常並顯示相關的錯誤...

一日一技 不用輪詢,基於事件監控檔案變動

我們經常會遇到監控檔案變化的需求。例如日誌監控程式監控日誌檔案,一旦日誌檔案發生變化,就進行讀取。或者是大批量爬蟲的規則配置檔案監控,爬蟲本身持續執行,一旦規則檔案發生修改就自動讀取新的規則。常見的做法,如果檔案比較小,可以直接讀取以後跟上次讀取的內容做對比 也可以判斷檔案的修改時間是否發生變化 也...

擁有一技之長

在當今社會立足的根本是擁有一技之長。現在這個社會,沒有一項突出的技能,在各行各業激烈的競爭中想要立足,猶如是痴人說夢一般。未來怎麼樣我們很難下定論,但是不管未來怎麼變化,擁有一技之長總會讓自己有吃飯的資本。其次,有一技之長 有益於國家的繁榮昌盛,有益於我們個人生活品質的提高。放眼望向周圍的人,凡是對...