原文链接:https://www.cnblogs.com/tianyajuanke/archive/2012/04/25/2470002.html

1、vim ~/.vimrc 进入配置文件

如果不知道vimrc文件在哪,可使用 :scriptnames 来查看

set nu      #行号

set tabstop=4  #一个tab为4个空格长度

set ai  #设置自动缩进

syntax on   #高亮

2、基本

空格键 向右移动一格

x 删除后面的字符 X 删除前一个字符  删除3个字符就是3x

dd:删除一行   D 删除到行尾

caw:改写单词  c 相当于 d 变为编辑模式

J:删除换行符,使下一行并上来。     nJ:连接后面的n行

u:撤销上一次操作      U:撤销当前行的所有修改

ctrl+r:对撤消的撤消

i 在光标前插入

I 在行首插入 
a 在光标后插入

A 在行末插入

o:在当前行的下面另起一行,并变为插入模式

O:在当前行上面另起一行,变为插入模式

Ctrl+o:临时变成命令模式(一次而已)

:e!:放弃更改,然后相当于重新打开

:help:帮助,可用ZZ退出帮助窗口

vim中Nyy可以复制光标后的N行。有时我们不容易得出行数,这时可以用做标记的方法来制定复制范围:

  1. 在开始行上输入ma作一个标记a

  2. 移动到结束行,输入y'a会复制当前行到标记a之间的文本。d'a会删除。

或者是v进入可视模式,再13G跳转到相应行,y即可。

:10,20y    回车即可,相应的删除也是如此     :10,20d     (此方法比上面两种方法更简单)

:10,20 m 30    把10行到20行的内容,剪切到30行之后

:10,20 co 30   把10行到20行的内容,复制到30行之后

将光标放在 { 处,然后输入v%就可以把大括号中内容选定

如果光标放在第一个s上,想删除到“(”为止,则输入dt(就可以了,t(的作用是跳到下一个"("前。

ctrl +n 自动补全 ctrl + p 也一样

:ab hw hello world  用一个缩写字符串代替一个长的字符串,此处用 hw 代替 hello world

%: 移动到与制匹配的括号上去(),{},[],<>等

' 移动到上一次的修改行

fx 向右跳到本行字符x处(x可以是任何字符)
Fx 向左跳到本行字符x处(x可以是任何字符)
tx 和fx相同,区别是跳到字符x前
Tx 和Fx相同,区别是跳到字符x后

# 到与当前单词相同的上一个单词上, * 到与当前单词相同的下一个单词上

如果你要重复键入一个短语或一个句子, 也有一种快捷的方法。Vim有一种记录宏的机制。你键入"qa"开始把一段宏记录入寄存器变量`a'中。
按下来你可以象平常一样键入你要的操作,
只是这些操作都会被Vim记录进它命名为`a'的宏中, 再次再下"q"键,
就结束了宏`a'的录制。当你要重复执行你刚才记录的那些操作时只要使用"@a"命令。共有26个可用的寄存器供你记录宏。 使用宏你可以重复多个不同的操作。而不仅仅是插入文本了。如果你要进行某种重复的操作,
记着要用这一招呀。

:abbr hte the

:abbr hw Hello World

输入先面的单词时,自动用后面的替换。

3、移动:

b、3b、w、3w:向前\后移动几个单词,标点也算一个单词。相应的大写状态为不含标点,即只把空格和换行符作为单词间隔符。

$:移动到行尾  3$:移动到3行后的行尾

^:移动到行首,0也是

+:移到下一行的行首

-: 移到上一行的行首

f:搜索命令,小写时向后搜索(用来定位)如 fx:定位到下一个x上。   Fx:定位到上一个x上,重复时,可用;或,  不过 , 表示反方向

%:跳到相对应的括号上,编程时常用

33G:跳转到33行   此时按``可以返回到原来行

gg:文件头   G: 文件尾

30%:跳转到文件的30%处

"H"意为Home, "M"为Middle, "L"为Last.  当前屏幕的上中下位置,大小写皆可

Ctrl+G:显示当前位置

set number:设置显示行号,set nonumber:关闭显示

:set ruler 设置在窗口右下角显示行号,与上面的好处是,节省空间

ctrl+u\d  向上\下滚动半屏

ctrl+e\y  向上\下滚动一行

ctrl+b\f  向上\下滚动一屏  这个比较实用,记住。

zz:将当前行滚动于屏幕中间,方便查看上下文  zt置顶,zb置尾

/string  查找string,回车后,按n键可以跳到下一个,N上一个,另外按/键后,按上下键可以找到以前查找的记录,同样的 :也有记录

?/string 同上,默认向上查找

:set ignorecase 大小写无关

:set noignorecase 大小写敏感

* :查找下一个光标所在单词  #是查找上一个

:set hlsearch  高亮显示查找结果

:set nohlsearch  取消高亮

:nohlsearch  去掉当前显示的高完(一次性)

`` 上次光标停靠的行

% 匹配到相应括号处

>>   向右移动本行一段距离     <<   向左移动本行一段距离    3<<    把下面3行(包括本行),向左移动一段距离     :20,30>>  把20行到30行向右移动一段距离

4、小幅改动:

:%s/str1/str2/g   替换每一行的 str1为 str2

:10,20s/str1/str2/g   替换从行10到行20之间的 str1为 str2

:10,$s/str1/str2/g   替换从行10到最后一行之间的 str1为 str2

:s/str1/str2/g   替换当前行的 str1为 str2

.  重复执行命令

:10,$ w test2.cpp     取行10到最后一行内容,保存到test2.cpp

:r class/User.hpp    读取文件中的内容,插入到当前行的后面

dw:删除一个单词(光标后部分) 
不如:daw实用    d4w:删除4个单词    d$:删除当前光标到行尾    d^:删除当前光标至行首  
    d换成c效果是一样的,只是操作完会变成insert模式   dnw: 删除N个单词   dnj: 向下删除n行      dnk:
向上删除n行

X:删除左边的字符,相当于<-键,x删除当前字符  D:相当于d$  C:相当于c$  s:相当于c1  S:相当于cc

r:替换当前字符,但不会进入insert模式    3r:把后面3个字符替换掉    R:替换模式

.:重复上一次操作

v:进入Visual模式    V:进入可视行模式,比如 Vjjd 删除3行  Ctrl+v:可视块模式

P:粘贴至光标前    p:粘贴至光标后    3P:粘贴3次      "2p     粘贴最后第二次的删除的内容

yy:复制一行  yaw: 复制一个单词,光标在单词任意位置    ynw: 复制N个单词       ynj: 向下复制n行          ynk: 向上复制n行

自动缩进:

:set cindent(所有的set都可以简写为se,虽然只节省了一个字符, 译者注)
需要注意的是cindent控制缩进量是通过shiftwidth选项的值, 而不是通过tabstop 的值,
shiftwidth的默认值是8(也就是说, 一个缩进为8个空格, 译者注), 要改变默认的设置, 可以使用":set
shiftwidth=x"命令, 其中x是你希望一个缩进量代表的空格的数目.

{ = 到前一个空行上
} = 到下一个空行上

5、VIM的一些插件:

c.vim :如果是用root账号的,把文件复制到/usr/share/vim/vim70中解压没有用的,不存在 $HOME/.vim
这个目录,没办法,只能新建个目录,然后把压缩包cp到这个目录,再unzip即可。在 ~/.vimrc 中 写入 filetype plugin
on

:e!   返回上次保存后的状态

Ctrl+z:暂停vi,回到Unix提示符,再输入fg即可回到vi。

^回到行首,光标位于行首字母处;0回到行首,光标位于行首字母前。$回到行尾,光标位于行尾字母处。

nb:向前移动n个单词,nw:向后移动n个单词。光标位于单词的第一个字母处。 nw这个操作很慢,不知何故。 以空格、标点符号与单词的分界为分隔符。(几个连续的标点视为一个单词)

同样的,也可以使用nB,nW,只是这里只使用空格做为分隔符。

相换两个相邻字母的位置:x、p

s:删除一个字符,并进入编辑模式。 S:删除一整行,进入编辑模式,相当于cc。   ns:删除后面n个字符,并进入编辑模式。

~:更改字母的大小写,同时光标进入到下一个字符。  n~:把后面n个字母的大小写状态改变。

dw:删除单词后面部分     db:删除单词前面部分。  如果要删除整个单词(光标位于单词中间的话),可以 dbw\wdb

de:类似于dw,删除单词后面的部分(只删除到本单词结尾,dw会删除掉单词后面的空格)   dE:删除的范围包括标号在内的单词结尾。

e:相当于w,向后移动一个单词。不同的是,w移动到单词第一个字符上,e移动到单词最后一个字符上。  所以ea,可以给本单词追加内容。

D:d$ 的简写,同样的,C:c$的简写。

U:会恢复一整行原先的面貌,即最原始的样子。

Y:相当于yy,不同于D与C的操作方法。

.:重复上一个命令。

除了O/o,插入命令(A,a,I,i)接受数值参数,如:5Ihello,然后按ESE键。会在行首输入5个连接的hello

nr:替换后面n个字符。

nJ:合并下面的n行(从本行算起)。

ynl:向后复制n个字符。

e/E:到单词的结尾。

滚动整屏:

^f:向前(下)一整屏

^b:向后(上)一整屏

^d:向前(下)一半屏

^u:向后(上)一半屏

z,Enter:将光标所在行移动到屏幕顶部(同于zz)

z.:将光标所在行移动到屏幕中间

z-:将光标所在行移动到屏幕尾部

nz,Enter:将第n行移动到屏幕顶部,同样的,z. 与 z- 前也可以加数字。

在屏幕中移动:

H、M、L分别移动到屏幕的顶部、中间和尾部。

nH、nL 移动到距离屏幕顶部和顶部n行的位置。

Enter:到下一行的第一个字符。

+:到下一行的第一个字符。

-:到上一行的第一个字符。

n|:移动到当前行的第n列

e:移到单词的结尾

E:移到单词的结尾(忽略标点符号)

(   )   {   }  [[  ]] 这几个对编程作用不大,可忽略。

d/it:向后删除到it之前的位置(不删it)。    d?it:向前删除到it之前的位置(删除it)。

fx:本行中向右搜索x,光标置于x上。  Fx:向左搜索。; 重复上一个搜索命令,方向相同。   ,重复上一个搜索命令,方向相反。

tx:同fx,只是光标置于x之前。 Tx类似。

dfi:向右删除第一个i的位置(包括i)  dti:同dfi,只是不包括i

Ctrl+G 查看当前行信息

nG跳转后,可使用``回到上一次的位置,''功能一样,不过只是回到前次位置所在行的开头,而不是确定的位置上。

删除包含keyword字符串的行: :g/keyword/d

删除空行::%s/^\n$//g

【linux】vim常用快捷键(转)的更多相关文章

  1. [Linux] VIM 常用快捷键2

    如何使用MacVim 1.在插入模式之外 基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面 VIM 就像一个“哑巴”编辑器一样.很多新手都会一直呆在插入模式里面,因为这样易于使用.但 ...

  2. [转帖]VIM常用快捷键

    VIM常用快捷键 https://www.cnblogs.com/markleaf/p/7808817.html 快捷键能够显著的提高工作效率 一.移动光标 h,j,k,l 上,下,左,右ctrl-e ...

  3. Linux/Ubuntu常用快捷键

    问题描述:         Linux/Ubuntu常用快捷键   问题解决: +++++++++++++++++++ 全局系统 +++++++++++++++++++++ Alt + F1:相当于w ...

  4. VIM常用快捷键(转载)

    移动光标 h,j,k,l 上,下,左,右 ctrl-e 移动页面 ctrl-f 上翻一页 ctrl-b 下翻一页 ctrl-u 上翻半页 ctrl-d 下翻半页 w 跳到下一个字首,按标点或单词分割 ...

  5. [转贴] VIM 常用快捷键 --一直记不住

    vim 常用快捷键  原帖地址: https://www.cnblogs.com/tianyajuanke/archive/2012/04/25/2470002.html 1.vim ~/.vimrc ...

  6. Linux系统下vim常用快捷键及功能

    1. 什么是vim Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在vi的基础上改进和增加了很多特性. vim编辑器是Linux系统下标准的编辑器,作用相当于windows系统中的记 ...

  7. Linux 文本编辑常用快捷键

    一.编辑模式 vim有三种编辑模式 1. i 进入文本编辑模式 2. esc 进入命令编辑模式 命令编辑状态下 dd删除整行 3. :进入底行模式 底行模式状态  输入q 退出 w保存  wq 保存并 ...

  8. Linux—vim常用命令

    vim常用命令: 1. 键入i进入编辑模式2. esc进入命令模式3. a,进入编辑模式3. b,光标移动到单词前,end,光标移动到行尾4. home光标移动到行首5. cc,删除当前行,并进入编辑 ...

  9. vim常用快捷键总结一(光标移动命令)

    vim编辑器的工作模式分为3种即(命令模式,编辑模式和尾行模式),具体定义这里就不在赘述了,这里只简单介绍各工作模式下对应的操作和快捷方式. 通常来说三三种模式功能划分大致如下 命令模式:定位.翻页. ...

随机推荐

  1. 8、Spring Cloud-配置中心 Spring Cloud Config(待补充)

    8.1.Config Server 本地读取配置文件 Config Server 可以从本地仓库读取配置文件,也可以从远处 Git 仓库读取.   本地仓库是指将所有的配置文件统 写在 Config ...

  2. leetcode300. Longest Increasing Subsequence 最长递增子序列 、674. Longest Continuous Increasing Subsequence

    Longest Increasing Subsequence 最长递增子序列 子序列不是数组中连续的数. dp表达的意思是以i结尾的最长子序列,而不是前i个数字的最长子序列. 初始化是dp所有的都为1 ...

  3. 关于日期的一些常用方法的封装——dates.js

    针对自己在日常用到的一些日期方法,整理成一个js日期插件,插件定义了一个dates全局对象,继承了Date函数,相当于在Date函数上做了一些扩展. 这个插件会不断更新,所有我之后用到的关于日期的自定 ...

  4. Android的JNI调用(二)

    Android Studio 2.3在native下已经有了代码提示功能,按照提示下载相应组件就可以debug native代码. 一.Java调用JNI与JNI调用Java 1.1 C调用Java ...

  5. 一篇很好的解释了.Net Core, .Net Framework, .Net standard library, Xamarin 之间关系的文章 (转载)

    Introducing .NET Standard In my last post, I talked about how we want to make porting to .NET Core e ...

  6. leetcode -50. Pow(x, n) Accepted

    前言:其实之前自己也有了解关于算法数据结构的一点内容,但是都是用相应的开发工具来写相应的代码,今天面试的时候直接leetcode来写代码,还是用的体内根深蒂固的C和Java来解的题,毕竟目前没见支持O ...

  7. 关于如何解决bootstrap table 列 切换 刷新 高度不一样

    在使用bootstrap table时候,碰到bootstrap table 列 切换 刷新 高度不一样的问题,如图所示: 解决这个问题很简单,在你的页头加一句<!DOCTYPE html> ...

  8. Xcode12 libstdc-.6.0.9.tbd问题

    https://github.com/Kila2/libstdc-.6.0.9.tbd # libstdc-.6.0.9.tbd libstdc++.6.0.9.tbd # for device pu ...

  9. execute immediate

    首先在这里发发牢骚,指责下那些刻板的书写方式,不考虑读者理不理解,感觉就是给专业人员用来复习用的一样,没有前戏,直接就高潮,实在受不了!没基础或基础差的完全不知道发生了什么,一脸懵逼的看着,一星差评! ...

  10. Difftime

    功 能:返回两个time_t型变量之间的时间间隔,即 计算两个时刻之间的时间差. 用 法: double difftime(time_t time2, time_t time1);