how can I stop vi from continuing comments on the next line? - vim

I'm using vim on Centos7 with :set compatible, to make it behave like vi.
If I start a line with a # (e.g. to make a comment in a bash script), when I press return the next line also begins with #.
I don't have this annoying behavior on mac os, nor on solaris nor on cygwin. Why is Vim doing this on Centos and how can I stop it?

I assume you are using vim or neovim. Remove the r from formatoptions, e.g. instead of using :set fo=tcrqn use :set fo=tcqn.
More information:
:h fo-table

Related

Why does Neovim not allow me to run an IPython embed when I run it in a shell?

In my init.vim for Neovim, I have the same line as in my .vimrc in Vim, which, when pressing F12, runs the file currently in the buffer using the python3 interpreter:
autocmd FileType python nnoremap <silent> <F12> :!clear;python3 %<CR>
Now I'm trying to run this tiny "test.py" script by pressing F12 in normal mode:
import IPython
IPython.embed()
Works fine in Vim:
But doesn't work in neovim despite exactly the same line in my ~/config/nvim/init.vim:
So it does run IPython, but then immediately (red arrow) inexplicably asks if I want to exit. It's also got a bunch of weird escape sequences inserted (yellow arrow) which I suspect are the reason why it wants to exit, and which don't appear with normal vim.
I don't really like the internal neovim terminal, so how can I get neovim to behave exactly like vim in this case?
This is a known limitation of NeoVim, :! is non-interactive and it will not allocate a pseudo-terminal which is typically required for full-screen applications such as IPython to run properly.
See issue #1496 for details.
An alternative is to use NeoVim's (or Vim 8's) support for terminal, with the :terminal command, or with a function such aa termopen() (in NeoVim) or term_start() (in Vim 8) to run full-screen applications such as IPython.
In your case, something as simple as :term python3 %, running the command in a terminal in a split, might be an adequate replacement.
You might also find the vim-bang-terminal plug-in interesting. It replaces a :! command with a similar command invocation that runs inside a Vim/NeoVim terminal instead.

what are the commands that can work in vi and not in vim?

Vim is an ascendant text editor to vi and is 99% compatible to the latter can someone tell me what is the 1%. I mean the command that can be executed in vi mode and not in vim.
You'll find the list at :help vi-differences. The only noted omission from Vim is the open mode; in Vim, :open is only emulated.
The runtime behavior can be controlled via the 'cpoptions' option; each letter in it stands for one vi-compatibility; most are turned off in Vim-mode (i.e. with :set nocompatible, or when a .vimrc file is found).

new line in vim doesn't display?

I invoke ghci in gvim by using :!ghci % to load my haskell file, However, the newline is displayed as ^J as the image below shows:
If I invoke ghci in vim instead of gvim, then everything is OK, so How could I get newline in gvim ?
For the graphical version of Vim, GVIM, a crude built-in terminal emulation is used for shell commands (cp. :help gui-shell). As the help page mentions, this has some limitations, and it is not meant to be used for interactive commands.
Switching to Vim in a terminal will run the shell command inside the terminal (with full capabilities); I guess that would be the best alternative if you cannot live with the discrepancies, and don't want to launch a separate terminal from gvim (i.e. :! xterm -e ghci %)

vim system register * and + not working

:echo has('clipboard') returns 1, but whenever I execute "+yy" or "*yy" nothing seems to be in those registers. If I use regular yy to copy another line of text, then try to paste from the register using CONTROL+V nothing happens. If I try "+p vim pastes the line of text I copied using the regular yy command.
What's going on here? I'm on FreeBSD by the way.
Your vim version may not be compiled with X11 clipboard integration.
In vim run the :version command and look for xterm_clipboard in the output. It will be prefixed with a + (supported) or - (unsupported) sign.
What worked for me in Ubuntu 20.04 and Vim 8.1.2269
sudo apt install vim-gtk3
Explanation
This package adds support for the x_term_clipboard in vim if not present already.
For more info: Click Here, #blankblank's answer.
Another thing that could be going on is your DISPLAY environment variable is not being set correctly. This could happen sometimes if you're running vim from tmux or screen.
Try opening a new terminal, running echo $DISPLAY, and then from the terminal running vim, leave vim, execute export DISPLAY=:0 (but replace :0 with the output from your other terminal), and then re-enter vim and see if clipboard works by doing "+p.
If you have copy something to clipboard and paste that in vim, you can use "+p.
+ is a quoteplus, which means CLIPBOARD documented X selection. :help quoteplus for more information.
If you want to copy something in vim to clipboard and paste the content in the other place by Ctrl+v, you can do "+yy, this will copy the current line to clipboard.
more information about vim register:
:help registers
:help quotestar
I also met this problem.
My case is that DISPLAY is not set properly in tmux.
And I found a script to automatically update tmux DISPLAY.
My problem was my input source English (US, intl., with dead keys), in addition to vim not being compiled with x-clipboard.
I don't face the same issue on windows, but on Ubuntu 20.04 I have to press "<space>+y with this input source.
Edit:
Seems I can fix this by switching the input source to English (Intl. with AltGr dead keys)

ESC doesn't work in cygwin vim

I installed cygwin on Windows 7. When I start vim in cygwin terminal it starts in interactive mode. I can't change mode to command one by pressing ESC. What could be the reason?
UPDATE:
Also vim prints these varnings at start:
Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal
If by interactive mode you mean insert mode (where keypresses are inserted as text, just as in other editors), then your Vim is in easy mode.
In it, you can temporarily execute normal mode commands via Ctrl + O. But I guess you don't want this strange beginner's mode. To turn it off, check whether Vim has been invoked with the -y argument or as evim (is there a shell alias?). Or, if you find a :set insertmode command in a .vimrc, remove it. (By default, at least in my Cygwin installations, Vim is not configured for easy mode, so it must be something in your configuration.)
Try to
Press “ESC” and "shift" and ":" together;
You should find the place that you can type command line in vim;

Resources