vim 使用_vim cant open file for writing

vim 使用_vim cant open file for writingVim入门必知:http://blog.csdn.net/ljheee/article/details/53307396一、Vim启动与退出1、Vim启动在终端更改目录后,使用vim+文件名,即可用vim打开文件

vim 使用_vim cant open file for writing

Vim入门必知:Vim使用&操作

一、Vim启动与退出

1、Vim启动

      在终端更改目录后,使用vim+文件名,即可用vim打开文件。如 vim read.txt

2、退出与文件保存

      在Normal命令模式下,按键盘:键进入末行模式,表示要输入vim命令;可输入的命令如下:

  :q           退出(更确切的说应该是关闭当前文件)

  :w          文件名 保存。如果还是保存为当前文件,不必写文件名

  :wq       保存并退出(退出后自动进入Normal命令模式

  :q!         强制退出不保存

  :wq!      强制保存并退出。  保存时遇到E45 readonly option is set (add!to override)可用。

二、光标的移动

      光标的移动,在编辑模式下可按键盘的方向键,任意移动。下面所讲的光标移动,是在命令模式中。原始的vi只能在命令模式中移动光标,在insert输入模式只做文字的输入,而不做光标的移动。当然vimelvis的方向键是不论在哪一种模式皆可移动。

1、基本移动

左,或 Backspace 或方向键

下,或 Enter  +(要 Shift 键),或方向键

上,或 方向键或 (不必 Shift 键)

右,或 Space 或方向键

Ctrl+上翻一页, PageDown 翻页。

Crtl+下翻一页, PageUp 翻页。

Ctrl+d下滚半。 

Ctrl+u上滚半

2、高级移动

是数目字 0 而不是英文字母 o。或是 Hmoe 键,移至行首,

   (含空格符)。

移至第一个非空格符,注意,要 Shift 键。

移至行尾,或 End 键。要 Shift 键。

· 以上两个按键是源自规则表示式(regular expression),在regexp^是匹配行首,$是匹配行尾。

 

移至档尾(最后一行的第一个非空格符处)

gg 移至档首(第一行之第一个非空格符处)

· gg vim的扩充功能,在elvis或原始vi中可用1G来移至文件首(是数字1不是英文字l)。

· 之原意是goto,指移至指定数目行之行首,如不指定数目,则预设是最后一行。

 

移至次一个字(word)前缀。当然是指英文单字。

同上,但会忽略一些标点符号。

移至前一个字字尾。

同上,但会忽略一些标点符号。

移至前一个字前缀。

同上,但会忽略一些标点符号。

移至屏幕顶第一个非空格符。

移至屏幕中间第一个非空格符。

移至屏幕底第一个非空格符。

· 这和 PageDownPageUp不一样,内文内容并未动,只是光标在动而已。

 

n| 移至第 n 个字符()处。注意,要用 Shift 键。n 是从头起

   算的。

:n 移至第 n 行行首。或 nG

3、特殊移动

移至下一个句子(sentence)首。

移至上一个句子(sentence)首。

移至下一个段落(paragraph)首。

移至上一个段落(paragraph)首。

· sentence 是以. ! ?为区格。

· paragraph 是以空白行为区格。

 

这是匹配 {}[]() 用的,例如您的光标现在在 {

   只要按 %,就会跑到相匹配的 } 上。写程序时好用的。

三、基本编辑操作

      下面的指令用在命令模式,即刚进入vim时的模式,只能下指令,不能键入文字。通过下面的指令,可完成相应的功能。

1、进入输入模式

在光标所在字符前开始输入文字(insert)

在光标所在字符后开始输入文字(append)

在光标所在行下开一新行来输入文字(open)

在行首开始输入文字。

 

在行尾开始输入文字。

· 这个好用,您不必管光标在此行的什么地方,只要按A就会在行尾等着输入文字。

 

在光标所在行上开一新行来输入文字。

将下一行整行接至本行(Joint)

· 并无相对的split功能,可在i-mode下按Enter来达成,当然如果您熟macro的话,可自行定义。

· 使用J时,预设会消去本行的EOL,且上下行接缝间会留下一个空格符,这符合英文习惯,却对中文会造成困扰,欲不留空格符,可使用gJ(大写J)指令,但这是vim的扩充功能,elvis不适用。

2、删除

此处的删除,是在命令模式下,将光标移至要删的字符处,按键完成删除。

删除光标所在处之字符。在 vim  elvis 亦可用 Del 键。

删除光标前之字符。不可使用 Backspace 键。

· vim 可以正确使用以上两个指令于中文,会删去一个中文字。elvis则不行,一个中文字要删两次,即使用 xx

 

dd 删除一整行(delete line)

dw 删除一个字(delete word)。不能适用于中文。

dG 删至档尾。

d1G 删至档首。或 dgg(只能用于 vim)

删至行尾,或 d$(含光标所在处字符)。

d0 删至行首,或 d^(不含光标所在处字符)。

3、取代和还原

取代光标所在处之字符。vi(m) 很有个性的,您在 c-mode

    r 她就会停在那里等主人键入所要替代的字符,希望您这

   个当主人的,不要傻呼呼的也楞在那里,赶快键入您的新字符

   吧!:-)

· vim 中可用于中文字,也就是可以替换一个中文字,elvis则不行。当然您的vim是要设在taiwan的才行。怎么样!有没有看过如此有个性的取代方式?ㄚ!r就是replace啦!

 

取代字符至按 Esc 为止。

cc 取代整行内容。或大写 S 亦可。

cw 替换一个英文字(word),中文不适用。(change)

游标所在处之大小写互换。当然不能用于中文。别忘了 Shift

取代至行尾,即光标所在处以后的字都会被替换。或 c$

c0 取代至行首,或 c^

替换一个字符为您所输入的字符串。和 R 不同,R 是覆盖式的取

   代,s 则是插入式的取代,您可亲自实验看看。ㄟ!是小写的

   s

这个太重要了,就是 undo,传统的 vi 仅支持一次 undovim

    elvis 就不只了,vim 是没有限制的。

U  在光标没离开本行之前,回复所有编辑动作。

Crtl+r 这个也是很重要,就是 redo 键。

4、加上数字

      这是vi(m)一个非常强大的功能,只此一家别无分号(当然同源的edsed等不在此限)。就是您可以在大部份的指令前加上数目字,代表要处理几次的意思。以下用实例来说明比较清楚。

5dd  删除游标所在处(含)起算以下五行内容。妙吧!

3r   按了 3r 后,您键入一个英文字,则三个字符皆会被您所键

       入的英文取代。很抱歉,这不能用于中文。

5J   将五行合并成一行。

3x   删除三个字符。抱歉,不能用于中文。

5i A 然后按 Ecs,插入五个 A。中文也可以!

2i system Esc  插入 systemsystem。中文也可以!

5G 光标移至第五行,是从档首开始起算。

5l 移至右第五个字符处,当然 j 是可以用方向键取代的。

   所有移动指令(参考第二单元)都可以加上数目字来控制,中

   文也通喔!elvis 当然是不能用于中文。

其它的指令和数目字结合,就留待各位去发掘吧!最重要的是请您亲自操作看看,使用vi(m)常常要动动脑筋,会有更妙的操作方式。

5、重排

>>  整行向右移一个 shiftwidth(预设是 8 个字符,可重设)。

<<  整行向左移一个 shiftwidth(预设是 8 个字符,可重设)。

· :set shiftwidth? 可得知目前的设定值。:set shiftwidth=4可马上重设为4个字符。shiftwidth可简写成sw。ㄟ,别忘了Shift键!

:ce(nter)  本行文字置中。注意是冒号命令!

:ri(ght)   本行文字靠右。

:le(ft)    本行文字靠左。

· 所谓置中、靠左右,是参考textwidth(tw)的设定。如果tw没有设定,预设是 80,就是以 80个字符为总宽度为标准来置放。当然您也可以如sw一样马上重设。

 

gqip  整段重排。中文会出槌!:-(

gqq   本行重排。

      重排的依据也是textwidth。这里的重排是指您键入文字时没有按Enter键,就一直在keyin,这样会形成一个很长的一行(虽然屏幕上会替您做假性折行),重排后,则会在每一行最后加入EOLgq重排功能是vim才有的功能。

四、复制(yank)

      yank拔罐的意思。这在vi(m)的思考逻辑里,就是「拔」yank起来,「放」put上去。其实复制的指令就是y

yy  复制游标所在行整行。或大写一个 Y

2yy  y2y  复制两行。ㄟ,请举一反三好不好!:-)

y^  复制至行首,或 y0。不含光标所在处字符。

y$  复制至行尾。含光标所在处字符。

yw  复制一个 word

y2w 复制两个字。

yG  复制至档尾。

y1G 复制至档首。

p   小写 p 代表贴至光标后(下)。

P   大写 P 代表贴至光标前(上)。

· 整行的复制,按 p P时是插入式的贴在下(上)一行。非整行的复制则是贴在游标所在处之后(前)。

 

“ayy  将本行文字复制到 a 缓冲区

· 可为26个英文字母中的一个,如果是小写的话,原先的内容会被清掉,如果是大写的话是append的作用,会把内容附加到原先内容之后。

· ” Enter键隔壁的那一个同上符号(ditto marks)。

 

“ap   a 缓冲区的内容贴上。

· 缓冲区的术语在vim称为registersvim扩充了相当多的功能,有兴趣深入的朋友请:h registers。您用dcsxy等指令改变或删除的内容都是放在registers中的。例如:您用dd删除的一行,也是可以使用 p来贴上的。只要是在缓冲区的内容都可以使用 p来贴上,不是一定要y起来的内容才能用 p。因此您认为 p paste也可以,认为是 put可能较正确。

 

5″ayy  复制五行内容至 a 缓冲区。

5″Ayy  再复制五行附在 a 内容之后,现在 a 中有十行内容了!

· ㄟ!不要我一直用a您就认为只有a可以用喔。26个英文字母都可以的,交叉运用下,您会发觉vi(m)肚量不小。

· 问题来了!忘记谁是谁的时候怎么办?:reg(冒号命令)就会列出所有registers的代号及内容。您现在就试着按看看。咦!怎么还有数目字、特殊符号的缓冲区,原来您刚刚删除(复制)的内容就预设放在这个缓冲区,然后依序是 0,1,2,…9。也就是说您按p不加什么的话,是取出缓冲区的内容的。%指的是目前编辑的档案,#指的是前一次编辑的档案。还有其它的呀!因为没什么重要,就请:h registers 吧!registers有个“s”结尾,不要搞错了,而且Tab的补全键vim也支持的,也就是说您键入:h regi再按Tab键,vim就会帮您补全,按了Tab后发现不是您要的,那就继续按,总会出现您要的。:-)

· Tab 补全的功能,elvis也有,但叫出registers列表的命令则没有,您得自行记忆在您的脑袋瓜子里。而且elvis的补全能力并没vim强。

 .  英文句点没错,就是英文句点。什么意

     思?重复前次的编辑动作。只要是编辑动

     作(移动光标不算,冒号命令也不算)都可以按英文句点来重

     复,要重复几次都可以。

五、查找替换

      查找、替换的功能几乎是每个编辑器必备的功能vi(m)中最特殊的地方是支持正则表示式(regular expression,简称regexp的使用。简单的说regexp是一种pattern的表示法,在执行动作,如寻找或替换,就会依据这个 pattern去找,所有符合 pattern的地方就会执行您所下的动作。关于正则表达式:Vim使用&操作

1、查找

 命令模式下,按 / 就会在左下角出现一个 /,然后键

   入要寻找的字符串,按个 Enter 就会开始找。

 / 相同,只是 / 是向前(下)找,? 则是向后(上)找。

继续寻找。

继续寻找(反向)。

2、快速查找

寻找游标所在处之 word(要完全符合)。

同上,但 * 是向前(下)找,# 则是向后(上)找。

g*  * ,但部份符合即可。

g#  # ,但部份符合即可。

· n, N 之继续寻找键仍适用。

3、替换

:[range]s/pattern/string/[c,e,g,i]

 

range  指的是范围,1,7 指从第一行至第七行,1,$ 指从第一行

       至最后一行,也就是整篇文章,也可以 % 代表。

· 还记得吗?%是目前编辑的文章,#是前一次编辑的文章。

 

pattern  就是要被替换掉的字符串,可以用 regexp 来表示。

string    pattern  string 所取代。

c  confirm,每次替换前会询问。

不显示 error

g  globe,不询问,整行替换。

i  ignore 不分大小写。

· 大概都是要加的,否则只会替换每一行的第一个符合字符串。可以合起来用,如cgi,表示不分大小写,整行替换,替换前要询问是否替换。

[实例]:%s/Edwin/Edward/g
    这样整篇文章的 Edwin 就会替换成 Edward

4、书签

      作用是:可以在文章中的某处做个记号(marks),然后跑到其它地方去编辑,在呼叫这个mark时又会回到原处。

mx  x 代表 26 个小写英文字母,这样光标所在处就会被 mark

`x  回到书签原设定位置。

· ` backward quote,就是Tab键上面那一个。

 

‘x  回到书签设定行行首。

· ‘ forward quote,是Enter键隔壁那一个。

5、书签扩展

小写字母  只作用于单一档案内。

大写字母  可作用于编辑中之各档案间。

数目字    可作用于前次编辑的十个档案。

· 数目字的用法比较特殊,‘0是回到前一次编辑档案中离开前的最后位置,‘1则是回到前二次编辑档案的最后位置,依此类推。您不必使用m来标示,vim会自动记忆。很玄吧!其实这是viminfo的功能,您要认真追究的话,请:h viminfo-file-marksviminfo关掉,就没这个功能了!

· 所谓前次指的是前次启动的vim

 

:marks  得知目前所有书签的列表。

六、设置Vim

    ●显示行号           :set number   

    ●取消行号显示   :set nonumber   

    ●设置显示用户模式 :set showmode   

    ●设置文件只读   :set readonly

 

 

参阅:http://blog.csdn.net/jianzhanger/article/details/6700431

今天的文章vim 使用_vim cant open file for writing分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/68397.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注