Como posso abrir um arquivo somente leitura a partir da linha de comando com o emacs / vi / vim

76

Existe uma maneira de dizer ao emacs / vi / vim (a partir da linha de comando) que eu quero ver o arquivo em view-mode ou read-only .

Eu sei como abrir um arquivo como somente leitura se o emacs / vi / vim já estiver rodando.

    
por Nifle 28.10.2010 / 11:46

10 respostas

43

Para emacs:

emacs FILE --eval '(setq buffer-read-only t)'

Não há nenhuma opção de inicialização para forçar somente a leitura.

Editar:
Se você colocar essa pequena função em seu script de inicialização do shell (por exemplo, .bashrc), você poderá abrir um arquivo somente leitura digitando ev file_to_view

ev() {
  emacs "$1" --eval '(setq buffer-read-only t)'
}
    
por 28.10.2010 / 15:50
145

vim -R filename

    
por 28.10.2010 / 11:51
26

ver nome do arquivo

Basicamente vim no modo somente leitura; simples!

Como sugerido pelo comentário, no caso de view estar ligado a vi , aqui estão os comandos bash para primeiro inspecionar a situação e depois corrigi-la:

# non-destructive inspection
which vim
which view
ls -l $(which view)

# overwrite current view with symlink to vim, requires root
ln -sfv $(which vim) $(which view)
    
por 28.10.2010 / 12:43
10
vim -R <file>

permite escrever com :w!

vim -c ":set nomodifiable"  <file>

Impede que o usuário faça alterações no arquivo no buffer. Mas o usuário poderia tornar o buffer modificável com :set modifiable

Você poderia usar

vim -c ":noremap q :q<cr>" -c ":map : <Esc>" -c ":set nomodifiable" <file>

para evitar que o usuário desligue o "nomodifiable" e permita que o usuário saia pressionando q . Mas, em seguida, o usuário não pode entrar no modo de comando, que pode ou não ser o que você deseja.

Você também pode abrir o arquivo com o comando less:

less <file>

Para visualizar o arquivo em um ambiente parecido com o vim, mas sem a capacidade de alterar o arquivo.

    
por 28.10.2010 / 20:10
8

Pequeno acompanhamento da resposta aceita: você pode colocar isso em seu shell para reduzi-lo a um único comando. Por exemplo, no bash você pode colocar o seguinte em seu .bashrc:

emacsro() {
  emacs $1 --eval '(setq buffer-read-only t)'
}

(diferentes shells terão diferentes formatos para fazer isso, mas você tem a ideia)

Eu teria adicionado isso como um comentário em resposta à resposta aceita, mas não parecia possível ter um bloco "código" de várias linhas em um comentário, e (no bash de qualquer forma) o código acima realmente faz precisa estar em 3 linhas separadas.

    
por 01.11.2012 / 00:50
5

Para visualizar apenas o arquivo sem capacidade de edição:

cat <file> | less

Em less você pode ir para "editar o modo de arquivo" pressionando a tecla v . Mas você não pode editar a entrada padrão, então canalizar a saída de cat <file> para menos, impede que less vá para o modo 'editar' ao pressionar 'v'.

Para o vim, a mesma abordagem

cat <file> | vim -
    
por 21.03.2014 / 09:32
4

Para o emacs, você também pode usar o modo de exibição .

emacsclient --create-frame --eval '(view-file "/tmp/EXAMPLE")'

ou alternativa dentro de um terminal:

emacsclient --nw --eval '(view-file "/tmp/EXAMPLE")'

Ou você pode usar meu script de wrapper

    
por 12.09.2012 / 17:01
1

No emacs você pode fazer

emacs FILE -f view-mode

O destaque da sintaxe é aplicado. Ele não abre apenas o arquivo como um buffer somente leitura. Alguns comandos, como I-search, são acessíveis sem a tecla de controle neste modo.

    
por 10.02.2018 / 19:37
0

enviando um arquivo para std out, pode ser aceitável dado o tamanho do arquivo

cat <file>  # dump whole file to stdout
head <file> # view the first few lines
tail <file> # view the last n lines
    
por 28.10.2010 / 20:45
0

Eu não vou desacreditar a ninguém a resposta do usuário aqui, mas eu gostaria de acrescentar mais algumas informações sobre o arquivo Read-only Mode . De acordo com a documentação do Modo Somente Leitura vezes em que você deseja examinar um arquivo, mas deseja protegê-lo contra alterações de teclas e alterações inadvertidas. (Você pode querer chamar um arquivo longo para praticar movimentos do vi, ou você pode querer rolar através de um arquivo de comando ou programa). Você pode inserir um arquivo no modo somente leitura e usar todos os comandos do movimento vi, mas não poderá alterar o arquivo.

Para ver um arquivo no modo somente leitura, digite:

$ vi -R file

ou:

$ view file

(O comando de exibição, como o comando vi, pode usar qualquer uma das opções de linha de comando para avançar para um local específico no arquivo.) Se você decidir fazer algumas edições no arquivo, poderá anular a leitura. único modo adicionando um ponto de exclamação ao comando de gravação:

:w!
or:

:wq!

Se você tiver um problema ao escrever o arquivo.

Para mais ref aqui

    
por 15.03.2018 / 13:54