vim 不常見但好用的命令

● 跳躍
○ 向前跳躍是 f
○ 向后跳躍是 F
● 繼續
○ 保持方向是 ;
○ 改變方向是 ,
● 可以加上 [count] 來加速

● ^ 是到本行第一個非空字符
● 0 是到本行第一個字符,不管是不是空格
● g_ 是到本行最后一個非空字符
● 兩個按鍵要依次按下
● $ 跳到本行最后一個字符,即使他是空格
● I
○ 相當于^i
● A
○ 相當于$a
● w
● 意思是 word
● 還學習了向后一個單詞
● b
● 意思是 backward
● 配合d有刪除的效果
● dw 會刪到下一個單詞的頭 所以如果下個單詞前面有空格的話會被刪掉
● de會刪除到這個單詞的末尾 如果這個單詞到下個單詞直接有空格的話會停在這個空格上
● db 也是有效果的
W 真的就是跳一個字符串了 w只是一個單詞 會在“ -等字符前停下
大詞和小詞的區別
● 從插入模式到正常模式要用 esc
● 但是 esc 距離基本起手勢太遙遠了
● 可以用 ctrl + c 來替代
● 可這仍然很慢
● 有沒有更有效率的方法呢?
● 可以自定義配置
● i、I和a、A 都可以進入插入模式
○ i 在光標前插入
○ I 在本行最前插入
○ a 在光標后插入
○ A 在本行最后插入
● ctrl+c退回到正常模式
● 現在又加了 o、O
○ o 本行下方插入一個新行
○ O 本行上方插入一個新行
● 再練練重復、撤銷、重做
○ 按幾次 . 重復插入操作
○ u 可以撤銷
○ ctrl+r 可以重做
如果不顯示行號,就輸入 :set nu
● 反悔是重做
● 就在 u 的幫助下面有介紹
● ctrl+r
● 在正常狀態下按 ctrl+r 可撤銷撤銷操作
● 就是重做
○ 按一次 u 撤銷一步
○ 再 ctrl+r 再撤銷撤銷
○ 按一次 u 撤銷一步
○ 再 ctrl+r 再撤銷撤銷
○ 好像可以來回來去拉鋸
想在 vim 中使用鼠標控制,我們先需要進行基本的配置:
● 首先我們在 vim 中搜索幫助,輸入 :h mouse
● vim 提示我們執行 :set mouse=a,就可以用鼠標了!!!
○ 我們可以使用鼠標移動光標
○ 使用滾輪可以翻頁
○ 還可以使用鼠標點擊相關的主題鏈接
這些現代科技真的很不錯,使用鼠標后操作更便捷了,但是鼠標其實會更影響效率,因為鼠標會讓我們的手離開鍵盤。
然而 vi 就是想讓用戶可以實現,手不離開鍵盤核心區域就完成所有的編輯工作:
● 方向移動是最常用的操作
● 他想讓你相對靈活的右手位置在鍵盤核心區完全不動
● 只需要按下手指就完成相應的移動操作
● 而且比鼠標還快速請添加圖片描述
● 正常模式 (Normal mode)
○ 也叫默認模式。
○ 進入 vim 時默認的模式所有輸入的鍵都直接對應著命令
○ 也被叫做命令模式.
● 插入模式 (Insert mode)
○ 任何鍵盤錄入都會插入到當前文檔中
● 可視模式 (Visual mode)
○ 很像正常模式
○ 但是移動命令會改變選中的一塊高亮區域
○ 執行的命令會對選定范圍進行
● 選擇模式 (Select mode)
○ 可以用鼠標或光標鍵高亮選擇文本
○ 任何輸入都會替換選擇的高亮文本
○ 并進入插入模式
● 命令行模式 (Command-Line mode)
○ 可以窗口下方執行一條命令
○ 一般是通過 : 執行單行命令
○ 通過 / 和 ? 進行搜索
● Ex mode (多行命令執行模式)
○ Ex 指的是 Execute
○ 在 Normal 正常模式下使用 gQ 進入
○ 使用 :visual 退出

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

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

相關文章

加密機組會 會議紀要

2020年9月28日 1,使用基類繼承的機制,調用寫好的函數接口 1,不要 使用Content(封裝數據,本質是一個json字符串),1,因為每次使用這個需要對里面的內容進行序列化,轉化成…

c++為什么沒有垃圾回收

垃圾回收 內存清理的另一個方面是垃圾回收。在支持垃圾回收的環境中,程序員幾乎不必顯式地釋放與對象關聯的 內存。運行時庫會在某時刻自動清理沒有任何引用的對象。 與C#和Java不一樣,在C語言中沒有內建垃圾回收。在現代C中,使用智能指針管理…

C++ Vecctor容器淺析

Vector的定義 向量(Vector)是一個封裝了動態大小數組的順序容器(Sequence Container)。跟任意其它類型容器一樣,它能夠存放各種類型的對象。可以簡單的認為,向量是一個能夠存放任意類型的動態數組。vector…

C++primer第二章2.4節對于const限定符相關內容進行詳解

const限定符 const對象一旦創建后其數值就不會被再次改變,因此const對象必須初始化。const對象只在文件中有效在不同的文件中使用不同的const來定義不同的常量,那么每個文件定義的變量只會在自己所屬的文件中有效。如果想讓多個文件共享同一個const變量…

二分法的常見問題

mid(leftright)/2; mid (high - low) / 2 low; 這樣寫可以防止left right溢出 ,不過數足夠大是時候該溢還是溢 為什么要取右邊中間數呢?這是因為在區間里 只有 2 個元素的時候,把[left…right]劃分成[left…mid - 1]和[mid…right]這兩個區間&#x…

演示IPFS的一個完整的流程以及針對部分概念的詳解

整體的流程 1,創建ipfs節點 通過ipfs init在本地計算機建立一個IPFS節點本文有些命令已經執行過了,就沒有重新初始化。部分圖片拷貝自先前文檔,具體信息應以實物為準 $ ipfs init initializing IPFS node at /Users/CHY/.ipfs generating 2…

c++ 算法的時間復雜度

一般ACM或者筆試題的時間限制是1秒或2秒。 在這種情況下&#xff0c;C代碼中的操作次數控制在 10^7為最佳。 下面給出在不同數據范國下&#xff0c;代碼的時間復雜度和算法該如何選擇&#xff1a; 1.n≤ 30,指數級別&#xff0c;dis剪枝&#xff0c;狀態壓縮dp 2.n < 100 &g…

簡單工廠模式實現計算器

#include <iostream> #include <vector> #include <string> #include <iostream> #include <map> using namespace std; #define __THROW_ZERO do {cerr << "The dividend is 0" << endl; exit(1);}while(0);/* 簡單工廠處…

TDengine安裝教程

TDengine安裝教程 前言 TDengine的安裝十分簡單&#xff0c;可以有以下三種安裝方式&#xff0c;源碼安裝、通過Docker容器進行安裝、通過安裝包進行安裝。但是使用源碼安裝較為復雜&#xff0c;通過docker的方式最為簡單&#xff0c;但是需要一定docker相關的知識&#xff0…

C++中size_t的學習

size_t的定義 size_t是一種數據相關的無符號類型&#xff0c;它被設計得足夠大以便能夠存儲內存中任意對象的大小。設計 size_t 就是為了適應多個平臺&#xff0c;size_t等效于unsigned short int 或者 unsigned long int 類型&#xff0c;這個過程是動態匹配的。在需要通過數…

策略模式解決商店打折問題

#include <bits/stdc.h> using namespace std; /*策略模式解決商店打折問題*/class Cashsuper { private:/* data */ public:virtual double addcash(double cash) 0;double Getresult(double money){return addcash(money);} };class Cashnormal : public Cashsuper {p…

android 軟件首次運行時引導頁左右滑動效果

很多手機軟件在安裝后首次運行都會進入到引導頁面&#xff0c;再次運行時會進入到主頁面。 多了不說了&#xff0c;先看效果圖&#xff1a; 代碼如下&#xff1a; main.xml <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:an…

C++中size_type類型詳解

介紹 是和string類類型和vector類類型定義相關的類型&#xff0c;用以保存任意string對象或vector對象的長度&#xff0c;標準庫類型將size_type定義為unsigned類型string抽象意義是字符串&#xff0c; size&#xff08;&#xff09;的抽象意義是字符串的尺寸&#xff0c; str…

單一職責原則 實現貪吃蛇代碼的封裝

單一職責原則(SRP),就一個類而言&#xff0c;應該僅有一個引起它 變化的原因。 一個c語言的貪吃蛇代碼 如何使用單一職責原則封裝成c面向對象呢 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> #include <wi…

android ProgressBar實現掃描SD卡文件 + SimpleAdapter綁定ListView

代碼 activity_main.xml <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:layout_height"match_parent"to…

C++標準庫函數begin和end函數

主要的目的 為了讓指針更加簡單、安全&#xff0c;引入了begin和end函數&#xff0c;這兩個函數和容器中兩個同名的成員函數類似。但是由于數組畢竟不是類類型&#xff0c;因此這兩個函數不是成員函數。正確的使用形式就是將數組作為他們的參數int ia[] {0,1,2,3,4,5,6,7,8,9…

dex分包之--------multidex包的配置使用

目錄&#xff1a;一、前言二、產生原因三、MultiDex的簡要原理四、MultiDex的使用 一、前言 首先說一下我遇到的情況&#xff0c;最近接手了一個項目是在已有的項目里進行更新添加一些功能&#xff0c;然后該項目導了N多的包&#xff0c;在我使用Android Studio的run”App”直…

C++ primer第六章函數的學習

介紹 首先介紹函數的定義和聲明&#xff0c;包括如何傳入參數以及函數如何返回結果。C語言允許使用重載函數&#xff0c;即幾個不同的函數可以使用向同一個名字。所以接下來介紹重載函數的方法&#xff0c;以及編譯器選擇如何從函數的若干重載的形式中選取一個與調用模板相互匹…

C語言指針作為函數參數 以及智能指針作為函數參數

總所周知指針作為函數參數傳遞的時候 傳遞的是指針的拷貝&#xff08;指針也是變量&#xff09; 這里提供四種指針的傳遞方法 改到實際的指針。 #include <stdio.h> #include <memory> #include <iostream> using namespace std; void test1(char **string)…