精华内容
下载资源
问答
  • 使用vi文本编辑器及Linux复制粘贴小技巧
    2021-05-15 01:14:47

    想成为一个高效的DBA,离不开熟练使用vi编辑器,尤其是准备OCM考试的人员更为如此。另外,在Linux系统中,通过鼠标左键选中的文字,再

    通过按住鼠标中间滚动条来粘贴功能也是需要掌握的小技巧。我接触Linux七年后,该技巧也是通过一次偶然的提问而得知的,Linux的这个功能起码提升

    我考试速度15%以上。因考过试的人知道考的不仅是熟练程度,更是对效率和速度的考验。

    使用vi文本编辑器

    配置文件是Linux系统中的显著特征之一,其作用有点类似于Windows系统中的注册表,只不过注册表是集中管理,而配置文件采用了分散的自由

    管理方式。vi是一个功能强大的全屏幕文本编辑工具,vim是vi编辑器的增强版本,在vi编辑器的基础上扩展了很多实用的功能,但是习惯上也将vim称

    作vi。

    vi编辑器的工作模式:

    命令模式:启动vi编辑器后默认进入命令模式,该模式中主要完成光标移动、字符串查找、以及删除、复制、粘贴文件内容等操作。

    输入模式:该模式中主要的操作就是录入文件内容,可以对文本文件进行修改,或者添加新的内容。出于输入模式时,编辑器最后一行会出现“--insert--”的状态提示信息。

    末行模式:该模式可以设置vi编辑环境、保存文件、退出编辑器,以及对文件女儿进行查找、替换等操作。出于末行模式,最后一行会出现":"提示符。

    一、vi打开编辑文件

    vi (示例:vi test.conf, vi /tmp/test.conf,...)

    如果指定的filePathAndName存在则会自动载入该文件内容,如果不存在则会自动创建。注:每行前显示波浪符号的表示该行为空行。

    二、模式切换:在命令模式中,使用a、A、i、I、o、O等按键快速切入输入模式,返回命令模式按Esc按键即可。进入末行模式在命令模式按":"即可。

    三、vi编辑指令

    1、屏幕翻页

    Ctrl+u: 向上翻半屏

    Ctrl+f: 向上翻一屏

    Ctrl+d: 向下翻半屏

    Ctrl+b: 向下翻一屏

    2、移动光标指令

    移动光标普遍使用的是方向键,考虑兼容问题,vi定义太多的方向指令,下面只是一小小部分(常用的几个):

    space: 光标右移一个字符

    Backspace: 光标左移一个字符

    Enter: 光标下移一行

    nG: 光标移至第n行首

    n+: 光标下移n行

    n-: 光标上移n行

    n$: 光标移至第n行尾

    0: 光标移至当前行首

    $: 光标移至当前行尾

    3、插入删除指令

    常用插入、删除指令如下:

    i:在当前光标前插入,光标后文本向后移

    a:从当前光标后插入,光标后文本后移

    I:在光标所在行首插入(第一个非空白字符前)

    A:从光标所在行末插入

    o: 在光标所在行下面新增一行(并进入输入模式)

    O: 在光标所在行上方新增一行(并进入输入模式)

    x: 删除光标所在字符,等同于[Delete]功能键

    X: 删除光标前字符,相当与[Backspace]

    dd: 删除光标所在的行

    yy:复制当前行正行内容到剪切板

    #yy:#是具体数字,可以复制从光标处开始的#行内容

    p:粘贴剪切板中的内容到当前光标位置之后

    P:粘贴剪切板中的内容到当前光标位置之前

    r: 修改光标所在字符

    R: 替换当前字符及其后的字符,直到按 [ESC]

    s: 从当前光标位置处开始,以输入的文本替代指定数目的字符

    S: 删除指定数目的行,并以所输入文本代替之

    do: 删至行首

    d$: 删至行尾

    四、vi查找、保存和退出

    退出输入模式,先按一下[ESC]键(有时要多按两下),然后执行:

    按/键——输入指定的字符串,从当前光标处向下查找。

    按?键——输入指定的字符串,从当前光标处向上查找。

    查找完按n、N键在不同的查找结果中进行选择。

    按u——取消最近一次操作,可按多次,类似撤销。

    按U——取消当前行所做的所有编辑。:w ——保存当前文件

    :wq —— 存盘退出(与指令 :x 功能相同)

    :q —— 直接退出,如已修改会提示是否保存

    :q! ——不保存直接退出

    五、打开新文件或读入其它文件内容

    在当前vi编辑器中,执行":e 新的文件"形式的末行命令可以编辑新文件。

    在当前vi编辑器中,执行":r 其他文件"形式的末行命令读入其他文件的内容,将其复制到当前光标的所在位置。

    在当前vi编辑器中,执行":r !命令"形式的莫行模式,可以将其他命令的输出粘贴至文本文件光标所在位置。

    在末行模式执行"set number"命令可显示行号,执行"set nonu"取消显示行号。

    六、vim编辑器有用的参数

    -o file1  file2;将同时打开两个文件,上下显示,使用ctrl+w切换文件。

    -O file1  file2;将同时打开两个文件,左右显示,使用ctrl+ww切换文件。

    七、查找和替换

    ? / n N

    :s/old/new/

    :N,M s/old/new/

    :%s/old/new/g %所有行 g全局

    另存

    :N,M w file.txt

    可视化模式v

    d 删除 y复制

    八、配置文件位置

    /etc/vimrc

    让vimtutor命令显示正常

    cd /usr/share/vim/vim72/tutor

    mv tutor.zh.euc tutor.zh.euc.bak

    iconv -f GBK -t utf-8 tutor.zh.euc.bak -o tutor.zh.euc

    vimtutor

    --------------------------------------分割线 --------------------------------------

    更多相关内容
  • 基于CRichEditView做一个编辑器,希望它任何时候只能够输入字符文本,不能输入图片,要怎么实现呢?
  • AR复制粘贴-文本原型 一个AR + ML原型,可以使用从周围环境中提取文本,并使用和交互地传输到桌面。 有关更多技术信息: 警告: 这是一个高度实验性的研究原型(我只能提供很少的支持) 如果您正在寻找基于此研究...
  • 我们或多或少都使用过各式各样的富文本编辑器,其中有一个很方便功能,复制一张图片然后粘贴进文本框,这张图片就被上传了,那么这个方便的功能是如何实现的呢? 原理分析 提取操作:复制=>粘贴=>上传 在这个操作...
  • 您必须使用鼠标突出显示要复制的文本,所以为什么不使用它来执行复制和粘贴操作呢? Once you have highlighted some text, right-click with the mouse and select “Copy” from the context menu. 突出显示某些...
    Concept of a Linux terminal full of text on a laptop
    Fatmawati Achmad Zaenuri/Shutterstock.com Fatmawati Achmad Zaenuri / Shutterstock.com

    Want to copy and paste at the command line of the Bash shell? We’ll show you multiple techniques whether you favor the keyboard or the mouse. These work whether you’re at a graphical desktop or at a traditional text-based TTY.

    是否要在Bash shell的命令行中复制并粘贴? 我们将向您展示多种技术,无论您偏爱键盘还是鼠标。 无论您是在图形桌面还是在传统的基于文本的TTY上,它们都可以工作。

    通常的键盘快捷键不起作用 (The Usual Keyboard Shortcuts Won’t Work)

    Copying and pasting text is a staple part of using a computer. When people use a Linux computer for the first few times, whether they come from the Windows or the macOS worlds, they are often confounded when trying to copy and paste within a terminal window.

    复制和粘贴文本是使用计算机的主要部分。 当人们第一次使用Linux计算机时,无论他们来自Windows还是macOS世界,当尝试在终端窗口中进行复制和粘贴时,他们常常会感到困惑。

    In Windows, you use Ctrl+C to copy a section of highlighted text and Ctrl+V to paste it. In macOS, you use Command+C to copy it and Command+V to paste it. They follow the same convention of C to copy and V to insert.

    在Windows中,使用Ctrl+C复制高亮显示的文本部分,并使用Ctrl+V粘贴。 在macOS中,您可以使用Command+C复制它,并使用Command+V粘贴它。 它们遵循C复制和V插入的相同约定。

    Those very same keystrokes work in most Linux graphical applications, such as the editor gedit or the LibreOffice office suite.Ctrl+C copies highlighted text and Ctrl+V pastes it at the cursor. Our newcomer to Linux probably doesn’t even think about the fact that these conventions have been carried through to these applications. They use the keystrokes from muscle memory and get on with their work.

    这些击键在大多数Linux图形应用程序中都可以使用,例如编辑器geditLibreOffice office suite。 Ctrl+C复制突出显示的文本,而Ctrl+V粘贴到光标处。 我们刚接触Linux的人甚至可能根本没有考虑过这些约定已被应用到这些应用程序中的事实。 他们使用肌肉记忆中的击键并继续工作。

    Once our newcomer opens a terminal window and tries to copy and paste at the Bash shell command prompt, that all changes. Ctrl+C and Ctrl+V were allocated functions long before copying and pasting were ever thought of.  In fact, those keystrokes were recruited a long time before graphical shells were invented, back when a teletype (TTY) was a physical thing.

    一旦我们的新手打开了一个终端窗口,并尝试在Bash shell命令提示符下进行复制和粘贴,则所有更改都会发生。 Ctrl+CCtrl+V在没有想到复制和粘贴之前就已分配了功能。 实际上,早在电传打字机(TTY)是一种物理事物的发明之前,这些按键就被招募了很久才被发明出来。

    TTY中的Ctrl + C和Ctrl + V (Ctrl+C and Ctrl+V in TTYs)

    When a TTY was a physical device, Ctrl+C was chosen as a handy key combination to generate a signal. That signal is SIGINT, which tells the current process to terminate. Because a terminal window is an emulated TTY, that keystroke combination (and many others) have been preserved and replicated in the emulation. Note that it is the terminal window that is the emulation. The Bash shell is a program running in that emulated TTY.

    当TTY是物理设备时,选择Ctrl+C作为方便的组合键来生成信号。 该信号是SIGINT ,它告诉当前进程终止。 由于终端窗口是模拟的TTY,因此该击键组合(以及许多其他组合)已保留并在模拟中复制。 请注意,是模拟的终端窗口 。 Bash shell是在该TTY中运行的程序。

    We can easily see the functions that have been allocated to Ctrl+C and Ctrl+V. Suppose you type the following command and press “Enter.”

    我们可以轻松地看到已分配给Ctrl+CCtrl+V 。 假设您键入以下命令,然后按“ Enter”。

    ls -R /
    
    ls -R / in a terminal window

    Because we’re using the -R (recursive) option the ls command will start to list every file and directory, starting from the root directory. After a couple of moments, you realize this is not what you wanted, so you terminate the process by hitting Ctrl+C.

    因为我们使用的是-R (递归)选项,所以ls命令将从根目录开始列出每个文件和目录。 片刻之后,您意识到这不是您想要的,因此您可以通过Ctrl+C终止该过程。

    Ctrl+C
    
    Ctrl+C in a terminal window

    The ls process is terminated. The visible evidence of the Ctrl+C is highlighted in the screenshot. It is displayed as ^C.

    ls进程终止。 屏幕截图中突出显示了Ctrl+C的可见证据。 它显示为^C

    The Ctrl+V key combination invokes “verbatim insert.” This allows you to enter a representation of a key into what you’re typing, instead of getting the effect of the key. To see this, try the following commands (don’t type the commas). (For example, to try the first one, press Ctrl+V and then press Enter.)

    Ctrl+V组合键调用“普通插入”。 这样,您就可以在键入的内容中输入键的表示形式,而不必获得键的效果 。 要查看此信息,请尝试使用以下命令(请勿键入逗号)。 (例如,要尝试第一个,请按Ctrl + V,然后按Enter。)

    Ctrl+V, Enter
    
    Ctrl+V, PgDn
    
    Ctrl+V, RightArrow
    
    Ctrl+V, Esc
    
    Ctrl+V, Enter in a terminal window

    As a quick aside, you may notice that Enter is represented by ^M . We saw earlier that  Ctrl+C showed up as ^C. It would seem that ^ represents Ctrl. So Ctrl+M probably means the same as Enter. Does that mean we can enter Enter by typing Ctrl+M? Try it in a terminal window. You’ll see that it does.

    顺带一提,您可能会注意到Enter由^M表示。 前面我们看到Ctrl+C显示为^C 看来^代表Ctrl 。 因此, Ctrl+M含义可能与Enter相同。 这是否意味着我们可以通过输入Ctrl+M来输入Enter? 在终端窗口中尝试。 您会看到的。

    So, plainly we can’t expect Ctrl+C and Ctrl+V to perform copying and pasting text when they already have time-honored functions allocated to them. So what can we use?

    因此,很明显,我们不能期望Ctrl+CCtrl+V在已经分配了具有悠久历史的功能时执行复制和粘贴文本。 那么我们可以使用什么呢?

    Ctrl + Shift + C和Ctrl + Shift + V (Ctrl+Shift+C and Ctrl+Shift+V)

    Easily remembered because they are very similar to their counterparts, Ctrl+Shift+C and Ctrl+Shift+V are direct replacements for Ctrl+C and Ctrl+V.

    容易记住,因为它们非常相似, Ctrl+Shift+CCtrl+Shift+VCtrl+CCtrl+V直接替代。

    If you highlight text in the terminal window with your mouse and hit Ctrl+Shift+C you’ll copy that text into a clipboard buffer.

    如果使用鼠标在终端窗口中突出显示文本,然后Ctrl+Shift+C ,则将这些文本复制到剪贴板缓冲区中。

    Ctrl+Shift+C
    
    Ctrl+Shift+C in a terminal window

    You can use Ctrl+Shift+V to paste the copied text into the same terminal window, or into another terminal window.

    您可以使用Ctrl+Shift+V将复制的文本粘贴到同一终端窗口或另一个终端窗口中。

    Ctrl+Shift+V
    
    Ctrl+Shift+V in a terminal window

    You can also paste into a graphical application such as gedit. But note, when you’re pasting into an application—and not into a terminal window—you must use Ctrl+V.

    您也可以粘贴到gedit类的图形应用程序中。 但是请注意,当您粘贴到应用程序中而不是粘贴到终端窗口中时,必须使用Ctrl+V

    Pasting from a terminal window into the gedit editor

    And you can go the other way too. You can highlight text in gedit and hit Ctrl+C , and then paste it into a terminal window using Ctrl+Shift+V.

    您也可以选择其他方式。 您可以在gedit突出显示文本,然后Ctrl+C ,然后使用Ctrl+Shift+V将其粘贴到终端窗口中。

    Copying from the gedit editor and pasting into a terminal window

    The key combination Ctrl+Insert is the same as Ctrl+Shift+C , and the combination Shift+Insert is the same as Ctrl+Shift+V. The caveat here is that these can only be used within the same terminal window.

    组合键Ctrl+InsertCtrl+Shift+C ,组合Shift+InsertCtrl+Shift+V 。 需要注意的是,它们只能在同一终端窗口中使用。

    使用鼠标:右键单击 (Using the Mouse: Right-Click)

    You can use the mouse to copy and paste in a terminal window. You have to use the mouse to highlight the text you’re going to copy, so why not use it to perform the copy and paste actions?

    您可以使用鼠标复制并粘贴到终端窗口中。 您必须使用鼠标突出显示要复制的文本,所以为什么不使用它来执行复制和粘贴操作呢?

    Once you have highlighted some text, right-click with the mouse and select “Copy” from the context menu.

    突出显示某些文本后,右键单击鼠标,然后从上下文菜单中选择“复制”。

    terminal window with context menu and copy highlighted

    To paste the copied text, right-click with the mouse once more and select “Paste” from the context menu.

    要粘贴复制的文本,请再次用鼠标右键单击,然后从上下文菜单中选择“粘贴”。

    terminal window with context menu and paste selected

    The text is pasted at the position of the cursor on the command line. In this example, the relative path has been given incorrectly, and Bash cannot change directory. The user missed the “~/” from the start of the path. They’ve typed the “~/” and then copied the remainder of the path from their previous attempt and pasted it into their second command line.

    文本粘贴在命令行上光标的位置。 在此示例中,相对路径指定错误,并且Bash无法更改目录。 用户从路径的开头错过了“〜/”。 他们输入了“〜/”,然后复制了上一次尝试的其余路径,并将其粘贴到第二个命令行中。

    When they hit Enter, they are moved to the directory.

    当他们按Enter键时,它们将移至目录。

    terminal window with a changed directory achieved through copying and pasting

    This example showed pasting into the same terminal window, but you can use this right-click technique to paste into different terminal windows. You can also paste into graphical applications using this method.

    此示例显示了粘贴到相同的终端窗口中,但是您可以使用这种右键单击技术将其粘贴到不同的终端窗口中。 您也可以使用此方法粘贴到图形应用程序中。

    使用鼠标:中间按钮 (Using the Mouse: Middle-Button)

    There’s an even faster way to copy and paste using the mouse, as long as your mouse has a middle button. If you press down on your scroll-wheel (gently!) and it clicks, you’ve got a middle-button.

    只要您的鼠标具有一个中间按钮,就有一种使用鼠标进行复制和粘贴的更快的方法。 如果您按下滚动轮(轻轻地!)并且它发出咔嗒声,则您有一个中间按钮。

    Highlight some text in a terminal window and then press your middle-button. The highlighted text is pasted to the cursor position on the command line. The copy and paste happen at the same time.

    在终端窗口中突出显示一些文本,然后按中键。 高亮显示的文本粘贴到命令行上的光标位置。 复制和粘贴同时进行。

    So, highlight some text:

    因此,突出显示一些文本:

    terminal window with some text highlighted

    Then press your middle-button:

    然后按下您的中间按钮:

    terminal window with highlighted text pasted on the command line

    You can use this method to paste between different terminals windows, and into graphical applications too. Just highlight the text, move to the other terminal window or application, and press your middle button.

    您可以使用此方法在不同的终端窗口之间粘贴,也可以粘贴到图形应用程序中。 只需突出显示文本,移至另一个终端窗口或应用程序,然后按中间按钮即可。

    老派–没有老鼠 (Old School – No Mouse)

    What about when you don’t have a mouse? If you can’t highlight any text, how can you copy and paste it?

    没有鼠标怎么办? 如果您无法突出显示任何文本,如何复制和粘贴?

    Linux servers are often configured without a graphical desktop environment (GDE), which means you don’t have access to a mouse. Even on a Linux computer that is running a graphical desktop environment like GNOME and you do have a mouse, there will be instances when you can’t use the mouse to highlight text.

    Linux服务器通常配置为没有图形桌面环境 (GDE),这意味着您无权访问鼠标。 即使在运行图形桌面环境(如GNOME)Linux计算机上,并且确实有鼠标,在某些情况下,您也无法使用鼠标突出显示文本。

    For example, you might have swapped over to one of the additional TTYs. On modern distributions, these are located at Ctrl+Alt+F3 (TTY3) through to Ctrl+Alt+F6 (TTY6). (Ctrl+Alt+F2 will return you to your GDE session and Ctrl+Alt+F1 will take you to the log in screen of your GDE.)

    例如,您可能已切换到其他TTY之一。 在现代发行版中,它们位于Ctrl+Alt+F3 (TTY3)到Ctrl+Alt+F6 (TTY6)。 ( Ctrl+Alt+F2将使您返回到GDE会话,而Ctrl+Alt+F1将使您进入GDE的登录屏幕。)

    Perhaps you are even using a genuine hardware TTY device to connect to a Linux or Unix computer.

    也许您甚至在使用真正的硬件TTY设备连接到Linux或Unix计算机。

    Either way, these techniques will work for you. The point to remember here is that this isn’t copy and paste, it is cut, copy, and paste, and you can only cut and copy from the current command line. Of course, you can use the arrow keys to scroll through your history to find the command line you wish to cut, copy, and paste from.

    无论哪种方式,这些技术都将为您服务。 这里要记住的一点是,这不是复制和粘贴,而是剪切,复制和粘贴,您只能从当前命令行剪切和复制。 当然,您可以使用箭头键滚动历史记录,以查找要剪切,复制和粘贴的命令行。

    The keystrokes you can use are:

    您可以使用的击键是:

    • Ctrl+W: Cut the word before the cursor, and add it to the clipboard buffer.

      Ctrl + W :在光标之前剪切单词,并将其添加到剪贴板缓冲区。

    • Ctrl+K: Cut the part of the line after the cursor, and add it to the clipboard buffer. If the cursor is at the start of the line, it will cut and copy the entire line.

      Ctrl + K :剪切光标后的部分行,并将其添加到剪贴板缓冲区。 如果光标在该行的开头,它将剪切并复制整行。

    • Ctrl+U: Cut the part of the line before the cursor, and add it to the clipboard buffer. If the cursor is at the end of the line, it will cut and copy the entire line.

      Ctrl + U :剪切光标之前的部分行,并将其添加到剪贴板缓冲区。 如果光标在该行的末尾,它将剪切并复制整行。

    • Ctrl+Y: Paste the last text that was cut and copied.

      Ctrl + Y :粘贴剪切和复制的最后一个文本。

    Let’s hop over to TTY3. (Use Ctrl+Alt+F1 to get back to your desktop afterward.)

    让我们跳到TTY3。 (然后使用Ctrl + Alt + F1返回到桌面。)

    Ctrl+Alt+F3
    
    tty
    
    tty3 in a terminal window

    We have a file we wish to delete, let’s check it is here.

    我们有一个要删除的文件,让我们检查一下它在这里。

    ls -l file_to_delete.txt
    
    ls -l file_to_delete.txt in a terminal window

    If we use the Up-Arrow key, we’ll call the last command we used out of the command history. We could just edit this line, but the object is to demonstrate the cut, copy and paste, so we’ll accomplish our task of deleting the file in a slightly protracted fashion.

    如果使用向上箭头键,则将在命令历史记录中调用上次使用的命令。 我们可以只编辑此行,但目的是演示剪切,复制和粘贴,因此我们将以稍微拖长的方式完成删除文件的任务。

    Retrieved command from command history in a terminal window

    We’ll move the cursor to the first letter of the file name, and then press Ctrl+K. This will remove that part of the line and copy the text to the clipboard buffer.

    我们将光标移到文件名的第一个字母,然后按Ctrl+K 这将删除该行的一部分并将文本复制到剪贴板缓冲区。

    The effect of Ctrl+K in a terminal window

    We’ll press Backspace until we clear the line.

    我们将按Backspace,直到清除该行。

    Line cleared with backspace in a terminal window

    We’ll type in the rm to delete the file.

    我们将输入rm来删除文件。

    rm in a terminal window

    And now we can hit Ctrl+Y and paste in the remainder of the line.

    现在我们可以Ctrl+Y并粘贴到该行的其余部分。

    The effect of Ctrl+Y in a terminal window

    This completes our command, and we can press Enter to have the file deleted.

    这样就完成了我们的命令,我们可以按Enter键删除文件。

    File deleted with no error message in a terminal window

    This type of cut, copy, and paste cannot be used between the additional TTYs. You cannot cut, copy, and paste between TTY3 and TTY4, for example.

    不能在其他TTY之间使用这种类型的剪切,复制和粘贴。 例如,您不能在TTY3和TTY4之间剪切,复制和粘贴。

    The additional TTYs are best thought of as a line of physical TTYs sitting side by side. There is no way to cut and paste between the different physical terminals, and there is no way to do so in these emulations.

    最好将额外的TTY视为并排放置的一系列物理TTY。 无法在不同的物理终端之间进行剪切和粘贴,并且在这些仿真中也无法这样做。

    复制那个,控制 (Copy That, Control)

    Whatever situation you find yourself in when using a Linux computer, there’ll be a way to copy and paste. You have options. Some of them are strange options, but at least there are options.

    无论您在使用Linux计算机时遇到什么情况,都有一种复制和粘贴的方法。 您有选择。 其中一些是奇怪的选择,但至少有一些选择。

    翻译自: https://www.howtogeek.com/440558/how-to-copy-and-paste-text-at-linuxs-bash-shell/

    展开全文
  • Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制吧? Chrome高版本提供了可以将单张图片转换在BASE64字符串的功能。但是无法处理多张图片。而且转换成...

    Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制吧?
    Chrome高版本提供了可以将单张图片转换在BASE64字符串的功能。但是无法处理多张图片。而且转换成BASE64后是作为内容一起提交给服务器,不能够将图片单独保存在另外一台服务器中。如果需要单独保存则需要自已进行处理。比较麻烦。

    我希望打开Word或者WPS文档后,复制内容然后直接粘贴到富文本编辑器中,编辑器自动将图片批量上传到服务器中,无论文档中有多少张图片,编辑器都全部自动上传,不需要再手动一张张处理。同时能够将图片上传到我指定的接口中,服务器需要将图片单独保存在存储服务器中,比如可能是云存储,或者是分布式存储,最后直接发布内容。
     

     

    感觉这个似乎很困难,因为Ueditor本身不支持,粘贴后直接就是空白,这里面一定有原因。

    好,开始尝试UMeditor,Chrome只能获得本地路径,无法读取文件。

    https://ueditor.baidu.com/website/umeditor.html(有兴趣可以试试)

     

     

    难道就这么失败了?

    不,但是我意外发现UMeditor竟然支持粘贴word中的多张图片(仅支持IE11,不支持IE10以下版本、以及Chrome等)

    切换HTML,会看到你的图片被组织成base64 

     

    nice,机会来了,既然IE支持复制word中的多张图片直接粘贴base64,既然有了base64我们就有办法上传转图片啦!

    那么我们来改造Ueditor,让他支持IE11(总比没得用强吧)

    打开你的ueditor.all.js(1.4.3版本以下行号根据自己使用的版本可能不同)

    1、注释掉14679行(暂时不明确有什么不良影响)

    //执行默认的处理

    //me.filterInputRule(root);

    2、在28725行插入以下代码(如果是使用IE11粘贴会得到base64,先用占位符占位,再逐个把base64专成Blob文件并上传,上传完成再替换为你的img属性src为服务器图片url)

     

    服务端上传代码

     

    处理后的效果,能够批量上传word中所有的图片,真的是太方便了。无论多少张图片都可以一次性批量上传。这个功能真的是太方便了,大幅度提升了内容编辑人员的效率。以前一天只能发布一篇文章,现在能够发布100篇,这效率简直提升了100倍呀。

     

    图片上传后保存在服务器端。而且也可以指定上传接口地址,这个也比较方便。因为我们的业务是将图片保存在单独的云存储服务器中。

     

    3、处理ueditor提供的uploadimage方法

    客户已经使用半年,没有问题,非常有用,非常方便的功能

    有需要的朋友可以下载:http://blog.ncmem.com/wordpress/2019/08/07/ueditor复制word图片粘贴上传-2/

    展开全文
  • 这是一款快速复制粘贴工具 比 Ctrl +C Ctrl + V 还要方便快捷, 只需要点两下鼠标就可以进行快速的进行复制粘贴, 选中文本(即复制) 按压鼠标滚轮(即粘贴),对于经常使用Ctrl +C 和 Ctrl+V 的人是一款不可获缺工具。...
  • 项目引入的是UEditor富文本编辑器,由于安全(把攻击脚本伪造成图片)和图片大小(base64格式的图片可能会太大)的原因,用户输入的图片都要先发送给后端,然后拿到后端的链接赋值给image标签的src属性。 这里有两种...

    项目引入的是UEditor富文本编辑器,由于安全(把攻击脚本伪造成图片)和图片大小(base64格式的图片可能会太大)的原因,用户输入的图片都要先发送给后端,然后拿到后端的链接赋值给image标签的src属性。

    这里有两种处理办法:
    第一种:
    ueditor.config.js里面的window.UEDITOR_CONFIG(配置项主体)加上imageUrl参数,大概32行处:
    在这里插入图片描述

    重写ueditor.all.js 里面的getActionUrl方法,差不多在8776行
    在这里插入图片描述
    但是由于这里的代码太多了,不容易维护,所以我用第二种方法去处理:
    重写getActionUrl方法,在src/extend里面,创建一个ueditor文件夹专门对UEditor编辑器的问题进行维护修改:

    let {UE} = window
    UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl
     /**
             * 根据action名称获取请求的路径
             * @method  getActionUrl
             * @remind 假如没有设置serverUrl,会根据imageUrl设置默认的controller路径
             * @param { String } action action名称
             * @example
             * ```javascript
             * editor.getActionUrl('config'); //返回 "/ueditor/php/controller.php?action=config"
             * editor.getActionUrl('image'); //返回 "/ueditor/php/controller.php?action=uplaodimage"
             * editor.getActionUrl('scrawl'); //返回 "/ueditor/php/controller.php?action=uplaodscrawl"
             * editor.getActionUrl('imageManager'); //返回 "/ueditor/php/controller.php?action=listimage"
             * ```
             */
    UE.Editor.prototype.getActionUrl = function _getActionUrl(action) {
        if (action === 'uploadimage') {
            return 'xxx' // 图片接口地址
        }
        // ... 
        return this._bkGetActionUrl(action)
    }
    

    这样写方便代码的维护,并且容易对后进行拓展。

    这时候使用工具栏的上传图片功能就处理完了,但是粘贴的图片有时候不会触发上述方法,不知道大家有没有这种情况,真是纳闷,检查发现是有时候粘贴的图片是在clipboardData的第二位???,emmm,只能去修改getPasteImage方法了,大概在26589行。

    function getPasteImage(e) {
    	var item = e.clipboardData && e.clipboardData.items
    	if (item) {
    	    var reg = /^image\//
    	    if (item.length === 1 && reg.test(item[0].type)) {
    	        return item
    	    } else if (item.length === 2 && reg.test(item[1].type)) {
    	        // 有时候粘贴的图片会在第二位
    	        return {
    	            0: item[1],
    	            length: 1
    	        }
    	    } else {
    	        return null
    	    }
    	} else {
    	    return null
    	}
    }
    
    展开全文
  • html中并不存在通过样式就可以控制复制纯文本,不过可以通过样式控制禁止复制的样式: .no_copy{ moz-user-select: -moz-none; -moz-user-select: none; -o-user-select:none; -khtml-user-select:none; -...
  • 一个文本框只能输入字母不可以复制粘贴 控制文本输入 禁用复制 禁用粘贴
  • UC浏览器里任意复制粘贴文本的方法

    千次阅读 2021-06-13 01:12:35
    为了让大家可以更加方便的使用复制与粘贴功能,大家分享“巧用UC浏览器 任意复制粘贴文本的方法”,希望对大家有所帮助。诺基亚 5800XM在论坛发帖的时候,经摸索,现在找到了一个可以在UC任意复制粘贴文本的方法,...
  • 只能点击粘贴“无格式文本” 才能粘贴进去。不方便。任何文档都是,包括新建文档。 刚才试了一下,原来在“工具”-“加载项”里面,将MathType commands 6 for 2013的选项取消勾选。就可以了,这是什么原因...
  • contenteditable 插入及粘贴文本内容

    千次阅读 2018-04-18 11:18:00
    本文主要介绍 div 标签设置contenteditable = ' true ' 时,在光标位置插入输入的内容,或在光标位置粘贴文本内容。文中涉及知识,可参考以下: ...
  • Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布...我希望打开Word或者WPS文档后,复制内容然后直接粘贴到富文本编辑器中,编辑器自动将图片批量上传到服务器中,无论文档中有多少张图片,编辑器都全部自动上传,不
  • 如果没有使用本软件,您需要重复地复制并粘贴一些文本,使用本软件后,电脑相当于有了多块剪贴板,您只需要按下不同的快捷键来输入不同剪贴板中的内容即可。  一些QQ客服人员,经常要回复客户一些重复重复又重复的...
  • 在富文本编辑器,粘贴文章时,禁止直接将图片和文字一起copy进去,以规避一些可能的问题。 解决思路: 在粘贴时,判断是否有图片,然后提示。 这里用到和粘贴相关的事件:onpaste。 获取粘贴板内容的方法: IE:...
  • 我又不想直接将自己的笔记本换成Ubuntu系统的,所以我选择了在VMware上安装Ubuntu虚拟机,但是我的笔记本内存很小,在一次使用中VMware突然卡死,再次开机就发现无法在虚拟机与电脑之间复制粘贴...
  • 之前的文章提到过过滤HTML的方法,保证内容都是纯文本。然而,这种方法的问题在于: 粘贴完毕到过滤结束有时间差,用户很看到内容一闪而过的糟糕体验; 光标的位置会发生变化,不是之前focus的位置
  • mac系统文本复制粘贴问题

    千次阅读 2017-05-27 11:14:37
    今天欧飞小编简单来给大家讲解一下mac在复制粘贴文本内容的时候为什么会出现格式错乱的问题。 首先是windows和mac 通用的地方,那就是有一些网站并不能直接复制文本内容,其中的某些图片类信息在复制之后是没有办法...
  • 相信很多人平时在网上查阅资料,好不容易找到自己需要的素材了,想要复制粘贴却受到了限制,没办法,只能对着屏幕一字一句的敲键盘?今天就来教你6招轻松搞定,快来跟我学。一、电脑端1.网页打印法如果在浏览带有...
  • 粘贴工具.zip

    2019-09-23 18:33:00
    windows 自身的剪贴板只能容纳一条记录,通过该工具可以保存多条记录, 可以自行配置快捷键和最大保留复制条数。 可复制内容不仅限于文本, 也可以是图片等。
  • Qt剪切板类是QClipboard,该类封装了对常用文件格式的复制与粘贴,例如文本,图片等, 一 、文本的复制与粘贴 文本复制粘贴操作的方法如下: QString text(Mode mode = Clipboard) const; QString text(QString& ...
  • Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布...我希望打开Word或者WPS文档后,复制内容然后直接粘贴到富文本编辑器中,编辑器自动将图片批量上传到服务器中,无论文档中有多少张图片,编辑器都全部自动上传,不
  • 字符流复制粘贴内容 只能复制粘贴文本文件 不能复制图片等内容
  • 今天交无线传感网的作业,发现老师在学习通设置了只能录入不能粘贴,我花了大半个小时辛辛苦苦整合的内容难道我还要手敲上去不成,于是我去百度"如何解决只能录入不能复制粘贴" 但我不是IE(用的百分浏览器),突然...
  • 只能粘贴HTML格式和无格式文本,不能粘贴有格式(RTF)等文本,利用自定义等功能也不行,只能用宏和指定快捷键的方法。 在word无格式粘贴快捷键怎么设置?mac系统下,在word里面使用command+alt optlon+shift+v在word...
  • 一般的复制粘贴功能都是只能操作最近一次的 文本,但是这种就无法使我们快速的复制多个文本了,现在教大家如何在IDEA中复制粘贴最近5次的文本内容 1.首先正常的复制copy五次 ctrl +cctrl +cctrl +cctrl +cctrl +c...
  • c#richTextBox怎么设置只能粘贴文本,不允许粘贴进图片
  • 插入文字当然没什么问题,QTextEdit也直接可以复制粘贴文字。但是对于插入图片怎么办呢?方案一:单击一个按钮,选择一张图片,将图片插入到光标位置。void QcTextEdit::insertImage() { QString file = ...
  • 粘贴文本 // 只能粘贴原文本 handleCustomMatcher(node, Delta) { let ops = [] Delta.ops.forEach(op => { if (op.insert && typeof op.insert === 'string') { // 如果粘贴了图片,这里会是一个对象,所以可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,855
精华内容 18,742
关键字:

为什么只能粘贴文本