`
ninghuan
  • 浏览: 9378 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Vim 学习笔记

    博客分类:
  • Vim
阅读更多
引用
曾经尝试过学习 Vim 和 Emacs, 都没坚持几分钟, 一直都在用 Eclipse/Netbeans/Komodo Edit, 刚无聊玩了下Emacs, 没弄明白, 又玩了下Vim, 感觉 快记下来


显示行号, 配置文件还不知道怎么改
:set nu

运行命令
:!command

:tabnew 新 Tab,

i 插入模式, o/O 所在行下/上方插入行, a/A 光标后/当前行末尾插入,

r+X, 用 X 替换当前字符,

(x) + Shift-G 跳转到该行, (x)行出错了? 跳过去

:r file, 插入别的文件内容到光标位置后, 小模板应该不错, :read 缩写?


移动(上下左右): (x)jkhl, 到单词末尾(包括/不包括空格): w/e, 当行末 $,

:wq!

删除字符 x; 删除行 dd, 删除单词 dw(超强大), 删除到行末 d$,
撤销 u/U, Ctrl-Z/Ctrl-R
将删除插入到光标之后 p,



vimrc, 只在第一行插入了 set nu 别的还不熟悉

:edit ~/.vimrc UNIX
:edit $VIM/_vimrc WINDOWS

:read $VIMRUNTIME/vimrc_example.vim
  • 大小: 170 KB
  • 大小: 66.1 KB
  • 大小: 82.3 KB
分享到:
评论
2 楼 ninghuan 2009-05-20  
vim多窗口之奇妙境界

参考资料:http://www.linuxpk.com/doc/vim/usr_08.html#usr_08.txt

准备创建一个新文件
$ vim 1.txt

创建一个新文件(会在屏幕的上方开一个新的窗口)
: new 2.txt

再创建一个新的文件(会在屏幕的上方左侧再开一个窗口)
: vsplit 3.txt

切换到文件1.txt的区域

按下CTRL+WW
再按,知道光标进入 1.txt的编辑区域即可

再创建一个新的文件(这个文件将把1.txt的编辑区域给分成两块)
: split 4.txt

如果想关闭某个窗口,按下CTRL+WW切换过去,然后
: close
最后一个只能退出哦
:q

总结:
new 创建新窗口
split 水平分割窗口
vsplit 垂直分割窗口
close 关闭窗口
CTRL+WW 跳转到其他窗口

okay. 好好玩!更多有意思的东西,看vim的手册
$ vimtutor
或者看这个
http://www.linuxpk.com/doc/vim/

---------------------------
补充一个重要的东西:如何恢复文件

假如你正在编辑一个文件,不小心强制退出了vim的编辑窗口(可能是你按了CTLL+C,也可能是机器慢得要死,你关掉了,也可能是突然掉电),那么,vim会给你保存一个用于恢复的隐藏文件,这个文件有个.swap后缀。如果发现你在退出之前做过的修改没有保存,那么请不要担心,用下面的方法可以恢复。

打开的时候加个-r参数,并保存
$ vim -r file_name
:w

之后,删除这个隐藏文件 .file_name.swap,下次就不会再提示你恢复啦,记得隐藏文件是以 . 开头的。
1 楼 ninghuan 2009-05-20  
VIM高级命令集锦

原帖地址:http://www.linuxsir.org/bbs/showthread.php?threadid=46167
(为方便记忆,falcon有补充,见大部分括号里的内容,建议对着后面几楼的VIM键盘图和一张速记图练习,勤学苦练终有成效!)

(在命令行下输入: vim 文件名, 开始执行下面的操作,文件里头最好有些内容)

1.交换两个字符位置
xp (x是把当前字符删除掉,p是复制一下,自然就跟后面的字符交换位置啦)

2.上下两行调换
ddp (这个类似上面,dd是删除当前行,p是复制,自然就把前后两行替换啦)

3.把文件内容反转
:g/^/m0/ (貌似第一行替换不了,你在某行执行一下:mN N为行号,看看是不是当前行跑到第N行啦[所以:mN大概是把当前行移动到指定行吧],g是扩展命令到全文,也就是说,对后面所有包含有^[行首哦,很抽 象吧]的行,都m0一下,你想想是啥效果,自然是后面的行都跑到前面去啦,仔细想想 :g/./m0/ 的效果应该一样,.可以匹配任意的字符哦,即包含有任意字符的行都要执行m0)

4.上下两行合并
J (字母j的大写哦)

5.删除所有行
dG (d是删除,G代表行末,实际上删除当前位置之后的所有行啦)

6.从当前位置删除到行尾
d$ ($是行尾,那就是删除到行尾罗,如果要删除第几行到第几行呢 :n,md,如果要删除从当前开始的几行呢 ndd)

7.从当前位置复制到行尾
y$ 如果要粘贴到其他地方 p 就可以了(y是用来粘贴的,类似d命令,如果要粘贴几行可以nyy)

由于vi 是建立在 EX 上的 所以 当键入 : 时就来到了 EX 命令状态

8.
:ab string strings
例如 ":ab usa United States of America" ,
当你在文见里插入 usa 时
United States of America 就蹦出来了(如果有些东西太长懒得写,这样挺好)

9.
:map keys new_seq
定义你当前 键盘命令 (很多快捷方式就是map出来的)

10.
:set [all]
vi or ex 的编辑状态
如 显示每行 :set nu (显示行号啦,不过要保存行号的话,可以用nl或者cat -n来显示文件,然后重定向,如果要用nl显示空行的话,要加-b a 参数呢)

11.
在命令状态下,nyy表示拷贝从光标行起的下n行内容,p表示paste,可刚复制的内容粘贴在光标处的
下面。

12.
单个字符替换用r,覆盖多个字符用R,用多个字符替换一个字符用s,整行替换用S

13.

:%s/old_word/new_word/g
这个指令是于在整个文件中替换特定字符串
(如果只想替换某个范围内的字符呢,有两种灵活的办法:第一种是把上面的%换成指定行N或者一个行的范围N,M,另外一种是先切换到可视模式[按下 ESC,然后按下V],然后用光标和方向键选中一片文本,然后执行上面的命令, hello,有个重要的内容得提示一下,/只是个分界符,你可以换成你感兴趣的或者方便的,比如#,对啦,如果old_word或者new_word里头 有/,得加上\转义一下,否则vim的解释器就莫名其妙啦,不过方便些,就把分界符换成#好啦。)

14.光标控制(所以,如果不小心把键盘上的方向键砸坏了,不用担心vim用不了)

k:上移 nk 上移n行
j:下移 nj 下移n行
h: 左移
l: 右移


将光标移到第n行,按下 mk
将光标移到第m行,按下 "ay'k
即将第n到m的行存到a寄存器,以此类推,b,c........寄存器等

这样就可以将你常用的需要复用的内容粘贴到不同的寄存器中以备用


想粘贴到某处,直接将光标移到某地,按下 'ap 即可,以此类推,b,c........寄存器等

在当前屏幕中
H 跳到第一行
M 跳到中间一行
L 跳到最后一行

15.
表8-2 删除命令
删除命令操作
d l 删除当前字符(与x命令功能相同)
d 0 删除到某一行的开始位置
d ^ 删除到某一行的第一个字符位置(不包括空格或TA B字符)
d w 删除到某个单词的结尾位置
d 3 w 删除到第三个单词的结尾位置
d b 删除到某个单词的开始位置
d W 删除到某个以空格作为分隔符的单词的结尾位置
d B 删除到某个以空格作为分隔符的单词的开始位置
d 7 B 删除到前面7个以空格作为分隔符的单词的开始位置
d) 删除到某个语句的结尾位置
d 4) 删除到第四个语句的结尾位置
d( 删除到某个语句的开始位置
d } 删除到某个段落的结尾位置
d { 删除到某个段落的开始位置
d 7 { 删除到当前段落起始位置之前的第7个段落位置
d d 删除当前行
d /t e x t 删除从文本中出现" t e x t"中所指定字样的位置,一直向前直到下一个该字样所出现的
位置(但不包括该字样)之间的内容
d fc 删除从文本中出现字符"c"的位置,一直向前直到下一个该字符所出现的位置(包括
该字符)之间的内容
d tc 删除当前行直到下一个字符" c"所出现位置之间的内容
D 删除到某一行的结尾
d $ 删除到某一行的结尾
5 d d 删除从当前行所开始的5行内容
d L 删除直到屏幕上最后一行的内容
d H 删除直到屏幕上第一行的内容
d G 删除直到工作缓存区结尾的内容
d 1 G 删除直到工作缓存区开始的内容

修改命令操作
c l 更改当前字符
c w 修改到某个单词的结尾位置
c 3 w 修改到第三个单词的结尾位置
c b 修改到某个单词的开始位置
c W 修改到某个以空格作为分隔符的单词的结尾位置
c B 修改到某个以空格作为分隔符的单词的开始位置
c 7 B 修改到前面7个以空格作为分隔符的单词的开始位置
c 0 修改到某行的结尾位置
c) 修改到某个语句的结尾位置
c 4) 修改到第四个语句的结尾位置
c( 修改到某个语句的开始位置
c } 修改到某个段落的结尾位置
c { 修改到某个段落的开始位置
c 7 { 修改到当前段落起始位置之前的第7个段落位置
c tc 修改当前行直到下一个字符c所出现位置之间的内容
C 修改到某一行的结尾
c c 修改当前行
5 c c 修改从当前行所开始的5行内容


.重复上一次修改!


表8-4 替换命令
替换命令操作
s 将当前字符替换为一个或多个字符
S 将当前行替换为一个或多个字符
5 s 将从当前字符开始的5个字符替换为一个或多个字符


vi替换使用规则:
:g/s1/s/s2/s3/g
第一个g表示对每一个包括s1的行都进行替换,第二个g表示对每一行包括s1的行所有的s2都用s3替换
s表示替换,s2是要被替换的字符串,他可以和s1相同(如果相同的话用//代替),s3是替换字符串


16.

fx
往右移动到 x 字符上
Fx
往左移动到 x 字符上
tx
往右移动到 x 字符前
Tx
往左移动到 x 字符后
(注意:以上四个命令中,其中x是键入的字符)
;
分号,配合 f 和 t 使用,重复一次
,
逗号,配合 f 和 t 使用,反方向重复一次


17. vi 环境选项 Solaris ksh

noautoindent nomodelines noshowmode
autoprint nonumber noslowopen
noautowrite nonovice tabstop=8
nobeautify nooptimize taglength=0
directory=/var/tmp paragraphs=IPLPPPQPP LIpplpipnpbtags=tags /usr/lib/tags
noedcompatible prompt tagstack
noerrorbells noreadonly term=vt100
noexrc redraw noterse
flash remap timeout
hardtabs=8 report=5 ttytype=vt100
noignorecase scroll=11 warn
nolisp sections=NHSHH HUuhsh+c window=23
nolist shell=/bin/ksh wrapscan
magic shiftwidth=8 wrapmargin=0
mesg noshowmatch nowriteany


For C-Shell:
setenv EXINIT "set nu"
For Bourne or Korn Shell:
EXINIT="set nu"; export EXINIT
For Korn Shell Only (alternate method):
typeset -x EXINIT="set nu"
在 .profile 里设置 vi 的环境选项 , 以上均测试过


18.标记文本

mchar 用字母char标记当前光标的位置
`char 移至char所标记处
'char 移至char标记所在行的开头处
" 移至当前行上一次所在位置(在光标移动之后)――一个双引号
'' 移至当前行上第一次所在位置的行的开头处(在光标移动之后)――两个单引号
(感觉某个地方有意思,先按下ESC,用"m字符"标记一下,随时想回去看看,用`或'加上m后的字符,对啦,是不是还没介绍跳到指定行号的行呢,按下 ESC,再按下":行号",或者用vim打开的时候:vim +行号 文件,这个很有用呢,在编译的时候编译器告诉我们哪行有语法错误啦,这样就很快定位到出错的行啦)

19.
同时vi多个文件时,CTRL-SHIFT-6回到上一个文件,在本次vi的文件和上次vi的文件之间切换。
但是我发现一个BUG:在用CTRL-SHIFT-6切换到上一个文件后,用:args查看多文件vi状态时,
屏幕底部仍然显示目前vi的是刚才的文件。
(在HP-UX,Solaris,AIX上通过)

也可以使用:
:e#
进行切换

20.在文本前/后加内容

在文本前加东西
%s/^/要加的内容/g (如要注释一片字符,可以选中一片内容,然后替换前导字符为#, 按下ESC,按下字母v,移动光标选中一片字符,然后按下: vim会自动补'<,'>,我们再加s/^/#/g就okay,如果在C语言里头要注释一片内容,想想怎么弄?)

在文本后加东西
%s/$/要加的内容/g

21.
如何去掉文本中的 ^M 硬回车?不必用binary传回去再ascii传回来的方式,用shell或者unix语句实现。

cat filename |tr -d '\015' >newfile
不同的unix系统还存在一些其他不同的命令,如:doscp
sed 也可以实现这个功能.

dos2unix filename filename2
反之
unix2dos filename filename2

在vi 中用:$s/^M//g
^是crtl-V crtl-M

(其实这个命令最管用, "cat 带有控制字符的文件 | col -b" ,非常感谢sigsegv11师兄,呵呵)

22.如何在"unix命令行"下将一个文件的某字符串用另一个串换掉

sed 's/string1/string2/gp' file1 > file2

(sed强大得让我不好意思,适合于字符串替换等操作,如果想熟悉的话,先了解下正则表达式;如果是替换单个字符,用tr哦。这里有篇资料很不错建议看看:http://www.ibm.com/developerworks/cn/linux/shell/sed/sed-1/index.html)

23.将/etc/hosts下所有的地址都ping 2次

1 #/usr/bin/sh
2 #grad /etc/hosts and ping each address
3 cat /etc/hosts|grep -v '^#' | while read LINE
4 do
5 ADDR=`awk '{print $1}'`
6 for MACHINE in $ADDR
7 do
8 ping $MACHINE -c 2
9 done
10 done

(怎么都开始讲shell啦,cat命令是显示文本的,grep用来查询字符串的[非常伟大的一个东西],read是读取一行的,while...do... done和for.in...do...done是循环结构,"ping -c N ipaddress"是给某个地址发几个数据包,awk同样是个非常伟大的家伙,用来处理文本数据库,很厉害)

24

到前一个函数[[ ,到下一个函数]] ,括号配对% ,交叉参考Ctrl_] (事先用ctags -R做索引),回来用e# ` 编辑一个函数:vi -t 函数名 ,编辑加密文本vi -X
(阅读源代码的利器,当然cscope基于ctags,自然是处于蓝,胜于蓝的啦,想学习,看手册吧,或者快速入门:
A. 到一个源代码的目录结构下cscope -Rbkq,生成索引
B. 打开vim,执行 : help cs-find,看看帮助,自然就知道怎么用啦)

25
在插入模式下ctrl+p,自动补齐剩余单词,以赖规则:tags,以有的单词等等
(恩,懒鬼的利器)

相关推荐

    VIM学习笔记书

    ### VIM学习笔记书知识点详解 #### 一、VIM简介 VIM(Vi Improved),作为VI编辑器的增强版,是一款功能强大的文本编辑器,其功能与Emacs相当,深受程序员和技术人员的喜爱。VIM提供了多种模式,使得用户能够高效地...

    vim学习笔记

    ### VIM学习笔记知识点详解 #### 一、VIM基本操作与安装 VIM,全称为Vi IMproved,是一款在Linux和其他Unix-like操作系统上广泛使用的高级文本编辑器,基于原始的vi编辑器进行了一系列增强和改进。对于IT行业人士...

    vim学习笔记(linux)

    { 1:介绍 2:3种命令 3:删除 4:复制粘贴 5:搜索替换 6:保存退出 7:其他 }

    vLinux下学习vim学习笔记及总结

    关于vim使用 小技巧

    learning-vim:无废话极简版Vim学习笔记!文章按主题分拆为多个章节,并试图控制每节的信息量;通过文字色彩和字体,将命令,快捷键突出显示;在每节结尾,提供一个命令列表,盔甲回顾文中介绍的重要命令。如果这些文章能对喜欢Vim的朋友有所帮助,我将不胜荣幸

    这份学习笔记分为多个章节,每个章节专注于一个特定的主题,以控制学习的难度和信息量。作者明智地使用了颜色和字体样式来强调关键的命令和快捷键,这使得读者可以快速识别并记忆重要的操作。每章结束时提供的命令...

    vim 常用快捷键笔记

    ### vim 常用快捷键知识点 #### 一、引言 Vim 是一款功能强大的文本编辑器,广泛应用于各种...对于初学者来说,建议从最基本的快捷键开始练习,逐渐深入学习更高级的功能。希望本文能够帮助大家更好地理解和使用 Vim。

    vim之学习笔记主要是个人经验总结

    :w FILENAME 可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的文件中。 21. :#,#w FILENAME 可将当前编辑文件第 # 行至第 # 行的内容保存到文件 FILENAME 中。 22. :r FILENAME 可提取磁盘文件 FILENAME...

    在CentOs系统中关于Vim的学习笔记

    在CentOs系统中关于Vim的学习笔记 文章目录在CentOs系统中关于Vim的学习笔记一、常用命令1)如何打开小程序vim_test_linux2)插入模式和退出vim的方法a. 进入插入模式b. 返回普通模式c. 进入插入模式的几种方法d. 退出...

    vim使用笔记

    ### Vim使用笔记 #### Getting Started - **vimtutor**:`vimtutor` 是一个交互式的教程,适合初学者快速上手 Vim 的基本操作。它通过一系列练习帮助用户掌握 Vim 的基本命令。 - **gvim 和 vim 命令**: - `...

    兄弟连linux教程1-16章学习笔记(全)

    《兄弟连Linux教程1-16章学习笔记》是一份全面涵盖Linux基础知识的学习资料,特别适合初学者和希望快速提升Linux技能的人群。这个压缩包包含了一系列文本文件和辅助图片,旨在帮助用户深入理解Linux系统的基本操作和...

    vim命令.docx

    Vim,全称Vi Improved,是一款强大的文本编辑器,广泛应用于Linux系统中。它具有丰富的命令集,使得用户可以通过键盘高效地操作文本。...通过不断地练习和学习,Vim可以成为一款极其高效且个性化的文本编辑工具。

    文本编辑器vim的个人笔记

    本篇文章将根据在学习windows下的gvim 7.2以及通过vimtutor过程中整理的笔记,详细介绍vim的基础知识与实用技巧。 #### 二、启动与退出vim - **启动vim**:在命令行中输入`vim FILENAME`,其中`FILENAME`是你想要...

    超详细的linux学习笔记

    这份"超详细的Linux学习笔记"涵盖了Linux运维管理的多个重要方面,包括DNS(Domain Name System)、Samba、Apache、Sendmail以及常用的Linux命令。让我们逐一探讨这些知识点。 首先,DNS是互联网上的名称解析服务,...

    MyVim:vim,vimrc,vimrc模板,vim文档,vim note,vim学习,vimtutor,学习vim,vim实践,vim学习,vim笔记,vim训练营,vim教程,vim入门教程,vim简明教程,vim实操教程, vim入门文档,vimtutor中文版

    在`MyVim-master`这个压缩包中,可能包含了作者黄剑关于Vim的学习资料、笔记、教程和配置示例。这是一份宝贵的资源,可以帮助你深入理解Vim的使用和配置。你可以找到关于Vim的实践案例,学习如何通过Vim提高编码效率...

    vim命令壁纸改进

    总的来说,这款改进的Vim命令壁纸是学习和提升Vim技能的极佳辅助工具,它不仅解决了原有的显示问题,还增加了实用性,使得学习过程更加愉快。如果你是Vim的新手,或者希望提升Vim操作的流畅度,不妨下载这份壁纸并将...

    Linux学习笔记【博文整理系列】

    学习linux的笔记,发到博文了,鉴于文档方便保存和查阅,发出来,免费的哈 博文来自http://blog.csdn.net/wklken,共12篇,类似手册,可快速练习和查阅,容易上手 文档列表: Linux笔记——vim常用操作及扩展补充...

    学习笔记.md

    ### JavaWeb 学习笔记知识点总结 #### Spring Boot 和 Spring MVC 的区别 1. **Spring MVC**: - **定位**:Spring MVC 是 Spring 框架中的一个重要组成部分,主要用于构建 Web 应用程序。 - **作用**:提供了一...

    WanShiTong:Vimwiki笔记

    Vimwiki 是一个基于 Vim 的个人 Wiki 系统,它允许用户以文本文件的形式轻松创建、组织和管理笔记,特别适合编程、并发、数据库和算法等技术领域的学习和研究。 Vim 是一款极其强大的文本编辑器,以其高度可配置性...

Global site tag (gtag.js) - Google Analytics