vim学习3-《Vim实用技巧》

注:<C-o>代表 按着Ctrl+o

 

其他

删除

J  - join line 。删除空白行  \n \t

xp 调换两个字符的位置

 

查找并跳转

 

查找光标所在的单词,“*”  next identifier  , ";" 下一个。 ","上一个

 

复制

 

y$  复制到光标所在位置到该行最后一个字符。

"+y  复制中内容到+寄存器,也就是系统的剪贴板,供其他程序用 

来自 <https://www.cnblogs.com/webStyle/p/4354464.html>

 

剪切

移动将到 xx 行

:开始行, 结束行 move 目标行 

6,9 co 12
复制第6行到第9行之间的内容到第12行后面。

移动当前行向上或向下

nnoremap <C-S-Up> ddP 

nnoremap <C-S-Down> ddp

 

移动光标:

  Ctrl + O 移动光标到前一次位置

  Ctrl + I 移动光标到后一次位置

来自 <https://blog.csdn.net/u011046042/article/details/49884215>

H M L 分别让光标跳到当前页 首 中 尾 行。

 

方便的组合:

f+)+a,就可以在括号后面插入; v+i+(,选中所有括号里面的内容

 

来自 <https://www.cnblogs.com/litifeng/p/5651283.html>

 

滚屏 

  1. ”CTRL+U”显示文本的窗口向上滚动了半屏。
  2. “CTRL+D”命令将窗口向下移动半屏。
  3. “CTRL+E”向上滚动一行。
  4. “CTRL+Y”向下滚动一行。
  5. “CTRL+F”向前滚动一整屏。
  6. “CTRL+B”向后滚动一整屏。
  7. “zz”命令会把当前行置为屏幕正中央。
  8. “zt”命令会把当前行置于屏幕顶端。
  9. “zb”则把当前行置于屏幕底端.。

  j.    “ze” 屏幕移动到最左边

  k.  “zs”屏幕移动到最右边

 

来自 <https://blog.csdn.net/qq_36084640/article/details/79312354>

 

标记与跳转

'{mark}

跳转标志处

标志所在的行

`{mark}

跳转标志处

标志所在的行、列位置

m{a_zA_Z}

设置位置标志

大写字母时为全局标志,可在文件间跳转

marks

列出标识位置

 

 

来自 <https://blog.csdn.net/xidwong/article/details/75581370>

 eg.    mA        'A

 idea 非vim模式也可以 Ctrl+F11 1,  Ctrl+1

vim自动创建的位置标志

Col1

Col2

Col3

`

当前文件中上次跳转动作之前的位置

 

.

上次修改的位置

 

缩进

>> 相当于TAB 可以增加缩进 << 减少缩进

>G 可以增加 从当前行到末尾行的缩进

 

删除:

      C  等效  c$

   s  等效  cl

   S  等效  ^C

 

重复

命令

重复

回退

/pattern<CR>

?pattern<CR>

n

N

查找

f/t/F/T

;

,

执行替换

:s/target/replace

&

u

 

 

技巧81 高亮匹配

hlsearch  , 禁用:set nohlsearch 或者 :se hls!   , :se nohls

 

 

技巧1 认识“.”

微小的宏,重复上次修改,可以是修改的单位可以是字符、整行、文件。

 用于格式化 eg.    >G  j.  j.      一个.代替  >G

                       eg       A;<Esc>  j.   j.  j.         一个.代替A;<Esc>

将+替换成“ + ”,       f+    s + <Esc>   ;  .   ;.      一个.代替了 s + <Esc>

用i <右键> <Esc>可以代替s + <Esc>

("+abc+","+cde+")          >>>      (" + abc + "," + cde + ")

 

#* 查找相同的字符

可以配合n.替换

 

eg. 查找Int 替换成 float

移动到int的i上,*到下一个int然后#回来 ,  cwfloat<ESC>      n.

 

和 :%s/int/float/g 类似

<C-a>   <C-x> 对数字加 减  可以是10<C-a>

 

技巧11 多用重复,少用数字,方便u撤销

 

技巧13 在插入模式中即时更正错误

插入模式使用ctrl+h 删除前一字符,ctrl+w删除前一单词,ctrl+u删除至行首

 

技巧14 返回普通模式

<ESC>  或者 <C-[>

 <C-o>  切换到【插入-普通模式】 , 可以执行一次普通模式的命令,执行完后回到插入模式中。

 

技巧15 不离开插入模式,粘贴寄存器中文本<C-r>{rigister}

插入模式中使用 <C-r>0

使用<C-r><C-p>{register} 会原义插入,并减少不必要的缩进

Vim 寄存器完全手册

1. 匿名寄存器

使用 dcsx 等会删除字符的命令时,被删除字符会进入匿名寄存器 ""。 你可以认为 "" 寄存器是一个指针,指向刚才被存到的寄存器。

使用 y 命令未指定寄存器会存到 "0 寄存器中,同时 "" 会与该寄存器保有同样的值。 这意味着你使用 p 和 "p 总会得到同样的结果。

2. 编号寄存器

编号寄存器从 "0 到 "9 共 10 个,其中 "0 保存着拷贝来的字符串"1 到 "9 保存着删除掉的字符串。 删除操作符包括 scdx。 删除掉的字符串会被存到 "1 中,上次删除的则会被存到 "2 中。以此类推,Vim 会保存你最近的 9 次删除。

 

  • 只有整行整行的删除,和通过段落级别的移动指令(包括 %,(,),/,`,?,n,N,{,}) 的删除才会被放到 "1 中。
  • 当用户指定拷贝操作的寄存器时(如 "ap),"0 不会被写入;但删除操作一定会被写入到 "1 中。

"0 寄存器很有用,比如我们 copy 了一段文本然后用它替换另一段文本。 这时默认寄存器 "" 中的值就变成了被替换文本,如果还需要用 copy 的文本继续替换的话就需要 "0p 了。

 

技巧16 随时随地做运算

插入模式下

<C-r>=6*35<CR>

 

<C-v>{数字}   等于对应的字符如: <C-v>65  等于A

 

技巧21 选择高亮选区

gv 重选上次高亮选区

 

o切换到高亮选区的另一端 

       可以对选区进行 >  后 . . . . 来重复缩进

vit 选择标签内的内容。 。innerHtml    。 it 表示inside tag

vat , at表示 arount tag
vab  /  vib  , select a () block.

vaB / viB  , select a {} block;

 

所以对标签内的内容大写:  gUit   。下一行重复:    j.

 

快速替换一行为-   Vr-

 

 

 

 

技巧27 命令行模式

这里[x]指 从/到 寄存器x中

:[range]delete [x]

:[range]yank [x]

:[line]put [x]

:[range]subsititute/{pattern}/{string}/[flags]

 

:数字 等于 数字G

 

:数字 操作  如:  :3y  复制第三行的内容 :3d 删除第三行内容, :3,5y 复制3到5行内

.代表当前行,所以  当前行到末尾行为:    :.,$

%s代表所有行, 如替换的时候 :%s/xx/cc/gc 

%s等同于 :1,$

0为虚拟行,位于文件正上方

 

高亮区的时候按: , 会出现 :'<,'> 可以理解成选择高亮区

 

目标行复制到当前行下方  :数字copy.   这里copy可以换成co或者t ,.代表当前行下方

 

技巧30 在范围上执行普通模式命令

 Ex命令:

   先A;  行尾增加一个分号。

 然后 jVG,选中到最尾行。

然后 :'<,'>normal . 让选中行都执行 行尾添加分号的操作。

:%normal A;    符号%代表整个文件范围

 

可以用@:来重复Ex命令

 

技巧35 运行shell命令

在编写a.py的同时,:w  然后 :!python a.py看效果

:!{cmd}只能执行一条命令,:shell 可以启动一个shell会话 执行多条,exit退出。

也可以<C-d>到将vim变到后台,然后exit退出

 

把缓冲区内容作为标准输入或输出

:read !{cmd}  ,如 :read !ls a*


技巧39 将工作区分成窗口

    <C-w>s  水平切分
    <C-w>v 垂直切分

    切换窗口
    <C-w>w 窗口间循环切换
    <c-w>h 切换到左边窗口

    <c-w>j
    <c-w>k
    <c-w>l
    关闭窗口
    <C-w>c 关闭活动窗口
    <C-w>o 只保留活动窗口,关闭其他所有窗口
 切换标签页
    :tabedit {filename} 打开新的窗口页
    :tabc 关闭当前窗口页

    :tabo 只保留当前窗口页
    gt gT 分别是切换Tab
    {N}gt 切换到编号为{N}的标签页。默认从1开始。

posted @ 2018-08-29 16:56  thewindkee  阅读(184)  评论(0编辑  收藏  举报