linux工具——vim文本编辑器整理

求知探索 1年前 ⋅ 677 阅读

vim是一个文本编辑神器, 长时间没用生疏了,这篇文章整理了一下vim常用操作和快捷键

注释:

[] 表示括号内容可有可无

() 表示括号内容可以跟前面一个字符替换

 

一、vim的几种模式

        

普通模式

 

 1)光标移动

 

hjkl  表示  左下上右(最基础)

行内

w(b) 移动到下(上)一单词首字母

[g]e  移动到[上]下一单词尾字母

0(^) 移动到行首(非空字符)

$(g_)  移动到行尾(非空字符)

n| 移动到当前行第n列

f(F)w: 移动到下(上)一个w出现的地方

t(T)w: 移动到下(上)一个w出现地方的前(后)一个字符

行间

 G 跳转到最后一行

 gg: 跳转到第一行

 nG(gg) 或:n 跳转到第n行行首(非空字符)

 {(}) 跳转到段首(尾)

 +(-) 移动到下(上)一行行首

翻页

  ctrl+b 向下翻页

  ctrl+f 向上翻页

查找

 /word 查找word 第一个位置

 n(N) 查找下(上)一个

 *(#) 向下(上)查找光标处的单词  

 

2)删除

        [n]x(X): 删除光标(前)n个字符

        d: 删除

[n]dd: 删除光标所在行向下共n行

d[1]G: 删除光标所在行到[第一行]最后一行

d$(0): 删除光标到行尾(行首)

D: 删除到行尾

dw: 删除光标到单词结束

d[n]a(i)w: 删除光标所在的n个单词,(不)包括单词后的空格

d[n]j(k): 删除当前行及向下(上)n行;jk 也可替换成hl, 表示向左向右n个字符

d{(}): 删除到段落开头(末尾)

 

3) 复制

         y(Y) 用法同删除d

 

4) 粘贴

         p(P): 在光标后(前)插入粘贴板内容

 

插入模式

 

      普通模式键入以后字符自动变为插入模式

i(a): 光标所在字符前(后)插入
I(A): 光标所在行首(尾)插入
o(O): 光标所在行下(上)面插入新行
r: 光标所在处的字符替换为下一个键入字符
R: 替换模式, 连续替换光标所在处字符为后续键入字符,直至退出
c(C): 用法同删除d,在删除的同时进入插入模式
 (超级有用)

s(S): 删除字符(此行)并插入,相当于cl(c)

-- 以下操作还是普通模式

x(X): 删除光标处(左边)字符,相当于dl(h)

 

命令行模式

 

       普通模式键入 : 进入命令行模式

       命令行模式按键  esc 退出

set (no)nu : (不)显示行号

wq: 保存退出

q! 不保存退出

r!command 导入命令行输出(在当前文件中导入系统文本内容或者路径很有用,如 r!echo /usr/local/jdk_1.8)

!command 执行shell命令

   

块模式(不常用)

 

       v 配合移动命令移动

 

v(V): 配合 hjkl选中

ctrl+v: 选中列

   

二、小技巧

 

清除文本所有内容

 

    命令行模式输入以下3中方式均可:

                1,$d

                ggdG

                %d

    

    特殊方式:

             echo '' > a.txt

 

连续行注释(加#号) 

 

第一种方法:

            光标移动到需要注释开始行行首

            ctrl+v 进入块模式

            向下移动光标到添加注释的末尾航

            键入 I

            输入 #

            按esc 退出

        

第二种方法:

            键入: 进入命令行模式

            2,5s/^/# /   (意思为2到5行行首添加#)

            g/^/2,5s/# /

            

第三种方法: (sed)

            sed -i '2,5s/^/# /' filename

        

第四种方法:(宏)

             光标移动到需要注释开始行

            键入qa

             键入I

             键入 #

             按键 esc 进入普通模式

             键入q 退出宏录制模式

             jV2j

             命令行模式 :'<,'>normal @a

 

按键组合(提高效率)

 

diw/daw/ciw/caw 等等删除完整一个单词,w可替换为别的词()/}/)/]/>/'/"/`/t)

dt(w) : 从光标处删除到下一个w的位置

gu(U)[u/aw/j...] 转换为大小写

xp 调换前后字符

ddp 调换前后行

insert模式下:

           ctrl+h :删除前一个字符(同退格键)

           ctrl+w :删除前一个单词

            ctrl+u :删至行首


全部评论: 0

    我有话说: