vim 另存为

原创 2018年04月16日 19:17:09

==========

在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




- Redirect printStackTrace() to a String

 import java.io.*; public class TestStack2String {  public static void main(String s[]){   try {    ...
  • wxyxl
  • wxyxl
  • 2001-05-04 14:17:00
  • 697

[vim] vim实现文件另存为

在linux系统上,vim编辑系统文件的时候,很多时候编辑结束才发现,没有权限写入文件。 vim实现文件另存为的功能 只要在:w 后面加上文件名字,就能把当前的编辑内容另存到其他文件中去。 :w...
  • jibing57
  • jibing57
  • 2012-10-24 11:09:12
  • 15605

Linux下的vim另存为

Linux下的vim另存为
  • q357010621
  • q357010621
  • 2017-12-17 16:23:29
  • 797

vim-6 执行shell命令、文件另存为、合并文件和打开多个文件

1、执行shell命令 在vim中想要查看当前/下边有哪些目录和文件,在vim中可以输入:!ls 然后敲一下回车。 总之,在输入冒号(:)进入命令行模式,输入感叹号(!),在其后便可以加上s...
  • AlvinPanda
  • AlvinPanda
  • 2017-01-13 21:36:11
  • 2053

vim 用指定编码保存文件

本文主要讲解下,让Vim能正确显示和保存各种编码文件的一些常用方法。 Vim编码配置里面有3个选项,分别是encoding 、fileencodings、fileencoding 简写分别对应为...
  • dengxu11
  • dengxu11
  • 2011-09-09 15:13:46
  • 15634

强大的VIM 配置文件 以及 .vimrc隐藏文件

配置文件: http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html?plg_nld=1&plg_usr=1&plg_vkey=1&p...
  • u010071621
  • u010071621
  • 2015-09-13 11:01:42
  • 1282

命令行下的编辑工具 Vim(vim相关)

转自:http://blog.csdn.net/zdl1016/article/details/5919129 前言: 后台开发不用vim是不可能的,特别是有的环境下只有vim可用,这可如...
  • shanliangliuxing
  • shanliangliuxing
  • 2013-04-10 14:53:33
  • 933

VIM从崩溃中恢复

*11.1*  基本恢复在大多数情况下,恢复一个文件相当简单。假设你知道正在编辑的是哪个文件 (并且硬盘没坏的话)。可以用 "-r" 选项启动 Vim:        vim -r help.txtV...
  • lvsmaster
  • lvsmaster
  • 2010-08-24 00:32:00
  • 1549

Vim 中截取部分内容保存到其他文件

Vim 中截取部分内容保存到其他文件。      按 Escape进入命令模式,然后输入 :start,endw file,其中的 start 是当前文件中要保存的第一行,end 是要保存的最后...
  • lcj_cjfykx
  • lcj_cjfykx
  • 2014-01-27 02:36:09
  • 3997

WebStorm 常用安装,配置,快捷键

原文地址:https://www.cnblogs.com/qingqingzou-143/p/6701765.html 软件资源   http://pan.baidu.com/s/1c2OmyQW(不...
  • milkhq
  • milkhq
  • 2018-03-16 11:10:56
  • 47
收藏助手
不良信息举报
您举报文章:vim 另存为
举报原因:
原因补充:

(最多只允许输入30个字)