linux c/c++ 编程之-----vim 基本使用

时间:2021-04-28 17:16:03
//高亮表示重要,易忘

设置一直显示行号:  /etc/vim vimrc 增加 set nu
General
在命令模式下:
命令的组合:数字+命令
编辑模式的命令 小写一般往后,大写一般往前

visual mode 
v
visual block mode 
ctr+v

repeat the previous command (last change)
.

undo/redo 
u/ctr+r

很多命令能通过 
开始位置 命令 结束位置    执行

ctr+- 减小Vim窗口
ctr+shift+= 增大Vim 窗口

移动光标
basic movement 
h j k l

word movement 
w    下一个单词的开头
e     下一个单词的末尾
如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W
b     当前(前一个)的开头

ctr +f向下翻页
ctr + b 向上翻页

H 当前屏幕的最左上角
nH 当前屏幕第 n 行的行首

number powered movement
5w

goto start/end
0/$

goto matching parentheses 
%

goto #line
gg G NG

^ 到本行第一个不是blank字符的位置
g_ 本行最后一个不是blank字符的位置

t,   在,之前的一个字符,,可以换成其他字符

区域选择 <action>a<object> 或 <action>i<object>

在visual 模式下,这些命令很强大,其命令格式为

<action>a<object> 和 <action>i<object>

  • action可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择)。
  • object 可能是: w 一个单词, W 一个以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符:"、 '、 )、 }、 ]。

假设你有一个字符串 (map (+) ("foo")).而光标键在第一个 的位置。

  • vi" → 会选择 foo.
  • va" → 会选择 "foo".
  • vi) → 会选择 "foo".
  • va) → 会选择("foo").
  • v2i) → 会选择 map (+) ("foo")
  • v2a) → 会选择 (map (+) ("foo"))

块操作: <C-v>

块操作,典型的操作: 0 <C-v> <C-d> I-- [ESC]

  • ^ → 到行头
  • <C-v> → 开始块操作
  • <C-d> → 向下移动 (你也可以使用hjkl来移动光标,或是使用%,或是别的)
  • I-- [ESC] → I是插入,插入“--”,按ESC键来为每一行生效。


复制粘帖
p  粘帖
yy 拷贝当前行 相当于 ddp

y 从这里开始拷贝
0y$
ye
y2/foo

    还有很多时间并不一定你就一定要按y才会拷贝,下面的命令也会被拷贝:

  • d (删除 )
  • v (可视化的选择)
  • gUw (变大写)
  • guw(变小写)??
插入,删除
a 光标后插入
c 修改命令,进入编辑模式
    cw 替换光标所在位置后到一个单词结尾的字符,进入插入模式
r 取代命令,不进入编辑模式
s 替换光标所在位置字符

自动提示: <C-n> 和 <C-p>
在 Insert 模式下,你可以输入一个词的开头,然后按 <C-p>或是<C-n>,自动补齐功能

I 移到当前行首,在前面插入文本
A 移到当前行尾,在后面插入文本

insert a line after/before
o/O

insert text repeatedly 
3iyesEsc

remove charactor under/before cursor
x/X

delete  and save to the paste board
dw d3e

查找,替换
find a charactor
f

     find word under curser next/previous
*/#

search text  next/previous
/text  n/N

命令模式
:e <path/filename> 打开文件
:saveas <path/filename> 另存为
:x :wq ZZ 保存退出
:q! 不保存直接退出
:bn :bq 移到打开的文件