vim 另存为-程序员宅基地

技术标签: linux  questions  

==========

在linux系统上,vim编辑系统文件的时候,很多时候编辑结束才发现,没有权限写入文件。

vim实现文件另存为的功能

只要在:w 后面加上文件名字,就能把当前的编辑内容另存到其他文件中去。

:w new_filename

============

https://www.vpser.net/manage/vi.html


======

https://thief.one/2017/08/09/1/




复制剪切粘贴


1
2
3

yy # 复制一行
dd # 剪切一行
p # 粘贴

查找单词


1
2
3

bin/bash>:/nmask # 查找存在nmask字符串的位置
或者
bin/bash>:?nmask # 查找存在nmask字符串的位置

继续查找下一个存在nmask字符串的位置

  • n 往上查找
  • N 往下查找

编辑器显示设置


1
2
3

: set nu! # 显示行号
: set autoindent # 自动缩进
:syntax enable # 语法高亮

文件内容定位


1
2
3
4
5

gg # 首行
G # 末行
XG # 定位到第X行
或者:
bin/bash>:10 # 定位到第10行

插入数据


1

o # 在当前行下插入一行

保存退出


1
2
3

ZZ # 保存退出
ZQ # 不保存退出
bin/bash>:w filename # 另存为

字符替换


1

bin/bash>:%s/regexp/replacement/g # 文本中所有匹配的都替换

行内移动


1
2

# 移动到句首
# 移动到句尾

vim保存没有权限的文件

文件只读

使用:w!强制写入
或者:set noreadonly然后只要使用正常的:w

不能写,但有sudo权限。

1

:w !sudo tee %

这是一个接收管道信息并可以写入文件的命令。

无权写入该文件,没有管理员权限sudo

使用:w! ~/tempfile.ext将更改写入临时文件,然后采取措施将临时文件移动到目录(将临时文件发送到目录所有者/管理员)。

=======================

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html




=============

https://hackernoon.com/a-glossary-of-vi-commands-e17cbc5b12f1


A Beginner’s Guide to Vim Commands

I figured it was probably time to memorize vim commands. At my high school, all of our CS classes required that we learn emacs and terminal commands. While I did have cursory knowledge of vim (enough to save git commits and exit the window), I didn’t necessarily have enough knowledge to entirely disregard the keybindings.

Recently, I stumbled across Vim Adventures, an adorable text-based game modeled after the likes of Legend of Zelda. It teaches some of the more basic commands of vim, as well as drastically lowering the learning curve (vim and vi in particular are known for being extremely minimalist in their interfaces and yet containing numerous shortcuts that are often crucial for regular use — a bit like Street Fighter and VSCO).

Anyway, as I was progressing through the game, I realized that it would probably help to have some sort of cheat sheet to refer back to. The game lists out all of the main commands you need to know in no particular order.

Here’s my version of a glossary with a bit more order:

General

[count]: specifies the number of times s the command will be iterated, defaults to one

<Del>: deletes the last character behind the cursor

yank: stores text, but does not modify text (copy text)

mark: hidden positions set within a file for navigation purposes

  • `<mark>: places cursor directly on the mark
  • ‘<mark>: places cursor on first non-blank character of the mark’s line

register: specified storage in memory for text. There are nine types:

  • The unnamed register “”
  • Numbered registers “0-”9
  • Small delete register “-
  • Named registers “a-”z
  • Black hole register “_
  • Four read-only registers “;/”,/”%/”#
  • The expression register “=
  • The selection and drop registers “*/”+/”~
  • The Last search pattern “/

nu, nonu: show the line number in front of each line in the text

  • :set nu: shows line numbers
  • :set nonu: hides line numbers
  • :set nu!: toggle line numbers
  • :set nonu!: toggle line numbers.

Main

Esc: escape key — exits current mode into “command mode”

i: insert mode for inserting text

:: last line mode for inserting commands (saving document, help)

q: allows you to exit or quit vi

  • q!: force quits
  • wq: quits, writing out modified file to original file

Scrolling

[count]h: moves the cursor one space to the left

[count]j: moves the cursor one space down

[count]k: moves the cursor one space up

[count]l: moves the cursor one space to the right

[count]w: moves the cursor to the start of the next word (punctuation considered as individual words)

[count]W: moves the cursor to the start of the next word (words are sequences of characters/punctuation delimited by spaces)

e: moves the cursor to the end of the next word (punctuation considered as individual words)

E: moves the cursor to the end of the next word (words are sequences of characters/punctuation delimited by spaces)

[count]b: moves the cursor to the start of the previous word (punctuation considered as individual words)

[count]B: moves the cursor to the start of the previous word (words are sequences of characters/punctuation delimited by spaces)

0: moves the cursor to the start of the line

^: moves the cursor to the first non-blank character of the line

[count]$: moves to the end of the line or [count]-1 lines

[count]f{char}: moves the cursor to the [count]th occurrence of {char} to the right

[count]F{char}: moves the cursor to the [count]th occurrence of {char} to the left

[count]t{char}: moves the cursor one space before the [count]th occurrence of {char} to the right

[count]T{char}: moves the cursor one space after the [count]th occurrence of {char} to the left

[count];: repeat the last f/F/t/T command

[count],: repeat the last f/F/t/T command in the opposite direction

Navigation (around the document)

[count](: navigates to the start of the previous sentence (a sentence ends in ‘.’, ‘!’, or ‘?’ followed by a space or line break)

[count]): navigates to the start of the next sentence (a sentence ends in ‘.’, ‘!’, or ‘?’ followed by a space or line break)

[count]{: moves the cursor to the empty line before the current paragraph

[count]}: moves the cursor to the empty line before the next paragraph

[count]gg: navigates to the [count]th line in the document, by default goes to the first line

[count]G: navigates to the first non-blank character on the [count]th line in the document, by default goes to the start of the last line

[count][{, [(, ]), ]}: goes to the previous (or next) unmatched ‘{‘ ‘)’ starting at, but not including, the current cursor position

[count]|: moves the cursor to the [count]th column in the current line

Navigation (around the window)

z: redraws the cursor line to:

  • zt: top of the window
  • zz: middle of the window
  • zb: bottom of the window

[count]H: to the first non-blank character on the [count]th line from the first line on the window without scrolling the screen

M: to the first non-blank character on the middle line of the window

[count]L: to the first non-blank character on the [count]th line from the last line on the window

Search

*: searches forward for the [count]th occurrence of the word nearest to the cursor in the current line. The word searched for is the first of

  • the keyword (A-Z, a-z, 0–9, _, @) under the cursor
  • the first keyword after the cursor
  • the non-blank word under the cursor
  • the first non-blank word after the cursor

#: same as * but searches backwards

[count]/{pattern}: searches forward for pattern, defaults to last pattern

[count]?{pattern}: searches backwards for pattern, defaults to last pattern

[count]n: repeats the last “/” or “?” search

[count]N: repeats the last “/” or “?” search in the opposite direction

%: find the next item on the line or after that and jump to its match (includes ( [ { } ] ) /* */ #if #ifdef #else #elif #endif)

Selection

Note: Abridged, see text-object for more details

[count]aw: selects a word and the white space after it unless the cursor was in the white space before a word (then the white space before is included)

[count]aW: selects a WORD and the white space after it unless the cursor was in the white space before a WORD (then the white space before is included)

[count]iw: selects a word (white spaces count as words)

[count]iW: selects a WORD(white spaces count as WORDs)

[count]as: selects a sentence and the white space after it unless the cursor was in the white space before(then the white space before is included)

[count]is: selects a sentence (white spaces count as sentences)

[count]ap: selects a paragraph and the white space after it unless the cursor was in the white space before(then the white space before is included)

[count]ip: selects a paragraph (white spaces count as paragraphs)

Deletion

[count]x: deletes characters under and after the cursor in the current line

[count]X: deletes characters before the cursor in the current line

[count]r{char}: replaces the character under the cursor with {char}

d{motion}: deletes characters/words that {motion} moves over

[count]dd: deletes entire line, regardless of cursor position in the line

[count]D: deletes characters under the cursor until the end of the line and [count]-1 more lines

[count]~: switches the case of the character under the cursor and moves the cursor to the right

:delm {args}, :delmarks {args}, :delm!, :delmarks!: deletes specified marks including a-z, A-Z; for !, all existing a-z marks are deleted

Text Modification

[count]p: places text from specified register after the cursor. When no register is specified, use the unnamed register (“) containing the last text deleted, changed, or yanked

[count]P: places text from specified register before the cursor. When no register is specified, use the unnamed register (“) containing the last text deleted, changed, or yanked

[count].: repeat the last simple change, defaults to the count of the last change (if the last change included a numbered register, the register number will be incremented)

Insert Mode Commands

Note: Esc exits insert mode

[count]i{text}: inserts text before the cursor

[count]I{text}: inserts text before the first non-blank char in the line

[count]a{text}: appends text after the cursor, if the cursor is in the first column of an empty line then insert begins there

[count]A{text}: appends text to the end of the line

[register]c{motion}: deletes over motion

[register][count]cc: deletes lines into register and starts insert (linewise)

[register][count]C: deletes from the cursor position to the end of the line and [count]-1 more lines into the register and starts insert

[register][count]s: deletes or substitutes characters into the specified register and starts insert (not linewise), synonym for “cl”

[register][count]S: synonym for cc

[count]o{text}: begin a new line below the cursor and insert text

[count]O{text}: begin a new line above the cursor and insert text

Yanking

[register]y{motion}: yanks {motion} text into a register, by default stores in “0 register

[register][count]yy: yanks the line into a register, cursor position in the line doesn’t matter

[register][count]Y: synonym for yy

Undo/Redo

[count]CTRL+R, :redo: redo changes that were undone

[count]u, :undo: undo changes

Registers

:reg {arg}: displays the content of the numbered and named registers specified by {arg}, or lists all by default

Text Objects

word: a sequence of letters/digits/underscores OR non-blank characters separated by white space (space, tabs, <EOL>), including an empty line

WORD: a sequence of non-blank characters separated by white space (space, tabs, <EOL>), including an empty line

sentence: a series of words that ends in ‘.’, ‘!’, or ‘?’ followed by a space or line break

paragraph: a series of sentences that ends in a line break

text-object: two characters used after an operate to specify range of operation. The first character is either ‘a’ (an object, including white space) or ‘i’ (inner object without white space or just white space). The second character determines the object type

  • w, W, s, p (word, WORD, sentence, paragraph)
  • “, ‘, ` (quoted string)
  • {, }, B ({} block)
  • (, ), b (() block)
  • [, ] ([] block)
  • <, > (<> block)
  • t (HTML/XML tag block))

Interested in Learning More?

There are luckily tons of resources online to help acclimate you to the vi/vim environment. These range from sites that help you memorize the basic keybindings and shortcuts to setting up your own macros and customizing your work environment. You’ll soon find that vi/vim has far more utility than as a simple text editor!


Did you find this guide helpful? If so, give it a ‘clap’ and a share!

Feel free to find me elsewhere online:

Twitter @sharontlin

Facebook @sharonlinnyc

GitHub @sharon-lin




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34907701/article/details/79964896

智能推荐

毕业设计django新闻发布和评论管理系统-程序员宅基地

文章浏览阅读587次,点赞6次,收藏14次。因为媒体的宣传能够带给我们重要的信息资源,新闻发布和评论管理是国家管理机制重要的一环,,面对这一世界性的新动向和新问题,新闻发布如何适应新的时代和新的潮流,开展有效的信息服务工作,完成时代赋予的新使命?在新闻发布和评论管理系统开发之前所做的市场调研及其他的相关的管理系统,都是没有任何费用的,都是通过开发者自己的努力,所有的工作的都是自己亲力亲为,在碰到自己比较难以解决的问题,大多是通过同学和指导老师的帮助进行相关信息的解决,所以对于新闻发布和评论管理系统的开发在经济上是完全可行的,没有任何费用支出的。

python中set详解_python set-程序员宅基地

文章浏览阅读1.7w次,点赞44次,收藏177次。python中set方法详解以及案例说明超详细_python set

【贝壳】数据分析岗位笔试+四面面经_贝壳如果去新的城市扩张需要看哪些指标-程序员宅基地

文章浏览阅读1.3w次,点赞5次,收藏16次。贝壳是今年秋招得第一个offer,因此回馈网友,记录一下贝壳得笔试+四面:【笔试】笔试是去公司现场面之前,给的一套题目,包括一下几题:1.找出数据中的错误数据,并给出理由2.贝壳如果去新的城市扩张,需要看哪些指标3.聚类分析有哪几种,说说其中一种得原理以及计算步骤4.一道SQL,需要用到rank()函数即可笔试不刷人,然后直接带着自己做的笔试卷子,去一面【一面】1.万年自我介绍..._贝壳如果去新的城市扩张需要看哪些指标

java计算机毕业设计计算机公共课程学习资源管理系统源码+mysql数据库+系统+lw文档+部署-程序员宅基地

文章浏览阅读58次。java计算机毕业设计计算机公共课程学习资源管理系统源码+mysql数据库+系统+lw文档+部署。springboot基于Springboot的滑雪场学具租赁管理系统。ssm基于HTML的“牧经校园疫情防控网站”的设计与实现。springboot基于springBoot公告管理。JSP企业进销存系统的设计与实现SQLServer。JSP服装销售网站的设计与实现sqlserver。ssm基于Vue.js的音乐播放器设计与实现。springboot多维分类的知识管理系统。

什么是前端开发?什么是后端开发?-程序员宅基地

文章浏览阅读1.9w次,点赞29次,收藏46次。什么是前端开发?概念我们通常所说的前端开发通常指的是网站的创建网站是一个用户界面,也就是你在网站上看到的的文本、按钮、图像还有视图。那么创建这些可交互界面的实践就叫做WEB界面的开发就像是你在银行里取钱不是直接往库存里伸手去拿,而是通过ATM这个银行的前端去进行一些操作尽管我们说的前端开发尽管通常指网站开发,但是现如今的前端开发已经是全平台的开发了,例如手机APP、微信小程序等。所以准确的来说前端开发,应该是直接给予用户的可交互式界面的开发,是创建用户界面的实践让用户以安全且友好的方式与数据_后端开发

Binary XML file line #40: Error inflating class ImageView_binary xml file line #40: binary xml file line #40-程序员宅基地

文章浏览阅读1.6k次。ImageView中src的图片放到mipmap中基本就好了_binary xml file line #40: binary xml file line #40: error inflating class an

随便推点

c# controls.add 控件的使用 ,间接引用还是值引用_this.controls.add-程序员宅基地

文章浏览阅读8.6k次。c# controls.add 控件的使用 10函数内部用下面代码增加控件:Button btn = new Button();btn.Location = new Point( 20, 20);btn.Size = new Size( 60,40);btn.Text = "btn'sText";this.Controls.Add( btn );问题:函数执行完后,bt_this.controls.add

占位式插件化一Activity的跳转_activity跳转 插件-程序员宅基地

文章浏览阅读329次。原理宿主APP安装在手机中的APP,并且通过该APP加载插件中的Activity插件APP没有安装的apk,通过宿主直接打开其内部Activity标准(协议)宿主APP和插件APP通信的桥梁。宿主APP通过一个空壳Activity(代理Activity)加载插件app中的Activity,实际上插件app中的Activity并没有入栈,也没法入栈,因为插件app没有安装,没有上下文和..._activity跳转 插件

PTA 剥洋葱(C语言 + 详细注释 + 代码超简单)_c语言pta怎么使用-程序员宅基地

文章浏览阅读1.0k次,点赞9次,收藏13次。输入格式:一行,一个整数,即图形的层数输出格式:如上述图形输入样例:3输出样例:AAAAAABBBAABCBAABBBAAAAAA//打印图形题关键是找规律,一般只需两重循环(行循环、列循环)#include<stdio.h>#include<string.h>int main() { int i, n; char ..._c语言pta怎么使用

docker配置国内镜像源_docker国内镜像源-程序员宅基地

文章浏览阅读3.3w次,点赞9次,收藏25次。刚开始学习docker,发现下载镜像非常的慢。如果不经过,docker的镜像下载都来源于国外,因此需要配置国内的镜像源。Docker中国区官方镜像。_docker国内镜像源

Unity中怎么播放视频_unity 播放视频-程序员宅基地

文章浏览阅读1.9w次,点赞40次,收藏209次。一.首先在场景中新建UI中的Raw Image可以按住Alt再点击下图红色箭头所示将Raw Image铺满游戏全屏(也可以自己调整大小)二.给Raw Image添加Video Player组件三.在Assets或者自己想要的文件夹中创建Render Texture四.将准备好的视频(这里用到的视频格式是mp4)拖入项目中并做如下修改这里我把新建的Render Texture命名为2,拖入的视频也命名为2(随便命的,不要在意)这里我们看到这个Render Te..._unity 播放视频

使用BOOTICE 恢复系统启动项_bootice保存后没用-程序员宅基地

文章浏览阅读9.7k次,点赞2次,收藏9次。使用BOOTICE 恢复系统启动项我在安装deepin 系统的时候,经常遇到重启进不去系统,每次重启都会进入windows 系统,这让我感到特别头疼,试了好多次都不成功,有些情况是,成功后再次重启又回到了windows系统。后来终于在PE中利用一款叫做BOOT ICE的工具成功解决。BOOTICE— 引导扇区维护工具简介BOOTICE 是一个启动相关的维护的小工具,主要用于安装、修复、备份和恢复磁盘_bootice保存后没用