Vim 進階1

Vim 進階1

所有你覺得簡單重復,可以自動化實現的操作,都是可以自動化實現的。

Vim光標移動拾遺

w:下一個單詞的開頭,e:下一個單詞的結尾,b:上一個單詞的開頭,

0:行首(最行首,不管行首字符是否為空),$:行尾,^:非空字符行首,

%:匹配括號處,前跳后,后跳前都可,

gd:跳到某變量定義處(其實是當前函數體內,該變量第一次出現的位置),gD:整個文件內該變量第一次出現的位置,*#nN

[{:移動到前一個沒有匹配的左大括號處,(用于跳到函數、循環等作用域的開頭)

r:normal 模式下替換一個字符,如 ra 將當前字符替換為 a,R:normal模式下從當前到行尾替換

cw:刪除單詞并進入編輯模式,C:輸出到行尾并進入編輯模式。S:刪除整行并進入編輯模式,s:刪除當前字符并進入編輯模式,

~:替換大小寫,并后移一個字符

自定義計數操作

  • d2w:刪除(其實d都是剪切)兩個單詞

  • 2dw:刪除單詞,做兩遍。4dd == d3j

Vim 修飾詞

  • i inner

    dip:(delete inner paragraph) 刪除一段文字(空行分隔),刪除操作不包括空行

    di(:刪除括號內內容

  • a around

    dap:刪除一段文字,刪除操作包括空行

  • t till

    dt):刪除從當前光標到本行下一個 ) 處,刪除操作不包括 )

  • f find

    df):刪除從當前光標到本行下一個 ) 處,刪除操作包括 )

vim mark標簽

  • m 生成一個 mark 標簽,如 a ,生成一個名為 a 的標簽
  • ` 跳轉到一個 mark 標簽,如 a ,跳轉到名為 a 的標簽處,恢復行列位置
  • ’ 跳轉到一個 mark 標簽,如 a ,跳轉到名為 a 的標簽處,僅恢復行位置,即跳到標簽所在行行首
  • `` 或 ‘’ 在起跳點和標簽 a 間反復橫跳

mark 還有很多用法,可參考 https://vimjc.com/vim-mark.html

vim多標簽頁

對于vim這個來說, 單純的用多子窗口(spvsp)來操作, 感覺還是不夠的, 還要結合標簽頁tab pages來,才能更好的操作。

所有關于標簽的命令都是以 :tab 開始的, 可以用tab鍵來查看提示

  • :tabnew 新建標簽

  • :tabedit fileName 在新標簽中打開文件,簡寫為 :tabe

  • :tabc 關閉當前標簽, :tabo 關閉其他所有標簽

  • :tabfirst 切換到第一個標簽

  • :tablast 切換到最后一個標簽

  • :tabp 切換到前一個標簽 tab previous

  • :tabn 切換到下一個標簽 tab next

  • :tabs 查看標簽

  • gtgT 常規模式下直接切換標簽

visual模式

  • v:逐字符選中
  • V:整行選中
  • C-v:矩形塊 block 選中

搜索替換

:[range]s/from/to[flags]:在 range 范圍內,將 from 替換為 to。 range、flags 常用含義如下

flags

flag作用
%復制上次替換命令的flags
g替換每行所有的匹配值(默認只替換每行的第一個匹配值)
c替換前需確認
e替換失敗時不報錯
i / I大小寫不敏感 / 敏感

range

range功能
2121行
$最后一行
%全部行
21,25從21行到25行
.當前行
.+3當前行后的第3行
.,$當前行到最后一行
.,.5 / .,.+5當前行及之后5行

多個文件內替換

:args *.c *.h
:argdo %s/ext4/ext5/g 
:argdo update 
:argdo exit

注意 Vim 中的替換與 sed 中的替換其實是很像的:

sed -i "[range]s/from/to/[flags]" filename 將?件 filename 內的 from 替換為 to

-i 表示直接編輯文件內容,不加將會打印輸出到 stdout。

Vim 宏

如生成從 1 到 1000 的序列等多次雷同的操作

  • 錄制宏:q,如 qa 表示開始錄制名稱為 a 的宏。
  • 運行宏:@,如 @a 表示執行名稱為 a 的宏,10@a 表示執行 10 次。

詳見:Vim 重復操作的宏錄制

安裝插件

  • mkdir -p ~/.vim/pack/vendor/start
  • 將插件 clone 到該目錄下即可

ctags

生成 tags 方便跳轉看代碼,支持多種語言

  • 安裝 ctags:sudo apt install exuberant-ctags
  • 創建 tags 文件 ctags -R .
  • 若查找 inode_operations 的定義
    • No tags file
      • 當前目錄不存在 tags 文件
      • 在父目錄中尋找 tags 文件:在 .vimrc 中添加 set tags=./tags;,tags
  • 使用:
    • 查找當前文件中的某個變量的定義:光標在該變量上,Crtl+]
    • 列出所有某個變量的定義及引用:g]
    • 直接打開定義 inode_operations 的文件:直接在當前目錄下,命令行中 vim -t inode_operations

shell使用vim鍵位

  • bash : set -o vi

  • zsh : bindkey -v

  • fish : fish_vi_key_bindings

這里說一下 bash 中默認是 emacs 模式,具體當前是什么模式可以用 set -o 命令查看,然后通過 set -o enacsset -o vi 來回切換。

鍵位圖中文版

在這里插入圖片描述

其他常用插件

  • gitgutter
  • easymotion
  • fzf
  • Vim-linux-coding-style
  • cscope

Ref:

https://www.bilibili.com/video/BV1PL411M7bg?from=search&seid=12655157522675339145&spm_id_from=333.337.0.0

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532623.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532623.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532623.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

攻防世界web題ics-06(爆破id值)

打開界面:嚯!這花里胡哨 點來點去只有報表中心有回顯: 發現url中id等于1,sql注入嘗試無果, burp工具爆破id 對id的值進行爆破 burp報ERROR的話這是個bug,先點擊Hex后點decimal手動刷新就可以使用 強行總…

crontab用法與實例

crontab用法與實例 本文基于 ubuntu 18.04 在Linux系統的實際使用中,可能會經常碰到讓系統在某個特定時間執行某些任務的情況,比如定時采集服務器的狀態信息、負載狀況;定時執行某些任務/腳本來對遠端進行數據采集等。這里將介紹下crontab的配…

手工sql注入常規總結

1.發現注入點 2.報數據庫 先用單引號(也嘗試雙引號)閉合前面的語句,使注入的語句能夠執行, 數字 0 :匹配字段,還有 11 12 等等都可以使用,有些網站會有過濾處理,建議采用 1%2b12 1%2b1>1 繞…

Systemd入門教程:命令篇

Systemd入門教程:命令篇 轉自:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html 作者: 阮一峰 日期: 2016年3月 7日 Systemd 是 Linux 系統工具,用來啟動守護進程,已成為大多數…

【CVE-2018-12613】phpmyadmin 4.8.1 遠程文件包含漏洞復現

**環境:**http://62.234.56.138:8080/server_databases.php 官網下載phpmyadmin 4.8.1 源碼:index.php文件中 函數含義: targer非空targer是否位字符串不能以index為開頭,即過濾了index值不能出現在blacklist內,即…

Systemd 入門教程:實戰篇

Systemd 入門教程:實戰篇 轉自:https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html 作者: 阮一峰 日期: 2016年3月 8日 上一篇文章,我介紹了 Systemd 的主要命令,今天介紹如何使…

關于ubuntu自定義service服務時找不到/usr/lib/systemd/system目錄的問題

關于ubuntu自定義service服務時找不到/usr/lib/systemd/system目錄的問題 問題 我們知道在 systemd 取代了 init 而成為廣大 Linux 系統中 PID 為1的守護進程之后,Linux 中的服務(service)主要有 systemd 命令組來實現。在大多數發行版 Lin…

攻防世界web2(逆向加密算法)

打開網頁有如下代碼&#xff1a; <?php $miwen"a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";function encode($str){$_ostrrev($str);// echo $_o;for($_00;$_0<strlen($_o);$_0){$_csubstr($_o,$_0,1);$__ord($_c)1;$_cchr($__);$_$_.$…

ctags 基本使用方法

ctags 基本使用方法 簡介 ctags&#xff08;Generate tag files for source code&#xff09;是vim下方便代碼閱讀的工具。盡管ctags也可以支持其它編輯器&#xff0c;但是它正式支持的只有 Vim。并且 Vim 中已經默認安裝了 ctags&#xff0c;它可以幫助程序員很容易地瀏覽源…

vimrc配置文件

vimrc配置文件 轉自&#xff1a;https://www.ruanyifeng.com/blog/2018/09/vimrc.html Vim 是最重要的編輯器之一&#xff0c;主要有下面幾個優點。 可以不使用鼠標&#xff0c;完全用鍵盤操作。系統資源占用小&#xff0c;打開大文件毫無壓力。鍵盤命令變成肌肉記憶以后&am…

CTFHUB 《請求方式》 http請求,curl命令總結

打開網頁&#xff1a; 思路一&#xff1a; 根據題目&#xff0c;應該是向網頁發送get方式請求&#xff0c;但并沒有具體規定要發送什么&#xff0c;嘗試get發送參數后&#xff0c;都沒有返回網頁&#xff0c;emmm’…好像不是我想的那種套路 思路二&#xff1a; 網上找到思路…

Vim進階2 map映射

Vim進階2 map映射 簡介 map是一個 vim 中的一些列映射命令&#xff0c;將常用的很長的命令映射到一個新的功能鍵上。map是Vim強大的一個重要原因&#xff0c;可以自定義各種快捷鍵&#xff0c;用起來自然得心應手。 map系列命令格式 格式 以 map 命令為例&#xff0c;它的…

CTFHUB 《基礎認證》:burp使用,basic請求了解

題目簡介&#xff1a;在HTTP中&#xff0c;基本認證&#xff08;英語&#xff1a;Basic access authentication&#xff09;是允許http用戶代理&#xff08;如&#xff1a;網頁瀏覽器&#xff09;在請求時&#xff0c;提供 用戶名 和 密碼 的一種方式。詳情請查看 https://zh.w…

信息量、熵、交叉熵、KL散度、JS散度雜談及代碼實現

信息量、熵、交叉熵、KL散度、JS散度雜談及代碼實現 信息量 任何事件都會承載著一定的信息量&#xff0c;包括已經發生的事件和未發生的事件&#xff0c;只是它們承載的信息量會有所不同。如昨天下雨這個已知事件&#xff0c;因為已經發生&#xff0c;既定事實&#xff0c;那…

CTFHUB《Web-信息泄露-備份文件下載》網站源碼,

1.網站源碼 三種方法&#xff1a; 方法一&#xff1a;dirsearch掃描git泄露 有文件下載 拿到flag 方法二&#xff1a;御劍&#xff08;超時10s&#xff09; 御劍其實也可以掃出來&#xff0c;但是一般我們掃域名超時時間都是三秒&#xff0c;本環境中需要超時10秒才能得到…

Linux下C/C++程序編譯鏈接加載過程中的常見問題及解決方法

Linux下C/C程序編譯鏈接加載過程中的常見問題及解決方法 1 頭文件包含的問題 報錯信息 該錯誤通常發生在編譯時&#xff0c;常見報錯信息如下&#xff1a; run.cpp:2:10: fatal error: dlpack/dlpack.h: No such file or directory#include <dlpack/dlpack.h>^~~~~~~…

DVWA Command Injection 練習總結

low: 首先查看源碼沒有對字符進行任何過濾 target參數為將要ping的ip地址&#xff0c;比如在輸入框輸入127.0.0.1后&#xff0c;對于windows系統&#xff0c;會發出ping 127.0.0.1操作。 這里可以引入命令行的幾種操作方式&#xff1a; A && B&#xff1a; 先執行A…

在vimrc中設置record

在vimrc中設置record Vim的record功能在大量重復操作的場景下非常實用&#xff0c;但是&#xff0c;一般我們都要每次進入Vim時重新錄制record。而對于一些非常常用的record&#xff0c;我們想讓它永久地保持&#xff0c;我們知道這種需求需要借助Vim的配置文件vimrc。但是具體…

DVWA sql注入 WP

sql注入基本思路&#xff1a; 1.源碼 2.判斷數字型和字符型 3.猜測字段數 4.查詢數據庫中的字段 5.查詢表中的字段 6.查詢user表中的字段 7.拿字段中數據 low: 1.源碼&#xff1a; <?phpif( isset( $_REQUEST[ Submit ] ) ) {// Get input$id $_REQUEST[ id ];// Check…

cmake find_package路徑詳解

cmake find_package路徑詳解 轉自&#xff1a;https://zhuanlan.zhihu.com/p/50829542 經常在Linux下面寫C程序&#xff0c;尤其是需要集成各種第三方庫的工程&#xff0c;肯定對find_package指令不陌生。 這是條很強大的指令。可以直接幫我們解決整個工程的依賴問題&#x…